weboffice-js-sdk 2.0.3 → 2.0.5-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebOfficeJSSDK=t():e.WebOfficeJSSDK=t()}(self,(()=>(()=>{var e={1121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this.alphabet=e,this.lookup=this.createLookupTable()}return e.getBytes=function(e){for(var t=[],r=0;r<e.length;r++){var n=e.charCodeAt(r);t.push(255&n)}return t},e.getString=function(e){return String.fromCharCode.apply(this,e)},e.createInstance=function(){return this.createInstanceWithGmpCharacterSet()},e.createInstanceWithGmpCharacterSet=function(){return new e(e.CharacterSets.GMP)},e.createInstanceWithInvertedCharacterSet=function(){return new e(e.CharacterSets.INVERTED)},e.translate=function(e,t){for(var r=[],n=0,o=e;n<o.length;n++){var i=o[n];r.push(t[i])}return r},e.convert=function(e,t,r){for(var n=[],o=e;o.length>0;){for(var i=[],a=0,s=0,c=o;s<c.length;s++){var u=(255&c[s])+a*t,l=(u-u%r)/r;a=u%r,(i.length>0||l>0)&&i.push(l)}n.push(a),o=i}for(var d=0;d<e.length-1&&0===e[d];d++)n.push(0);return n.reverse()},e.prototype.encode=function(t){var r=e.convert(t,e.STANDARD_BASE,e.TARGET_BASE);return e.translate(r,this.alphabet)},e.prototype.decode=function(t){var r=e.translate(t,this.lookup);return e.convert(r,e.TARGET_BASE,e.STANDARD_BASE)},e.prototype.encodeStr=function(t){return e.getString(this.encode(e.getBytes(t)))},e.prototype.decodeStr=function(t){return e.getString(this.decode(e.getBytes(t)))},e.prototype.createLookupTable=function(){for(var e=new Array(256),t=0;t<256;t++)e[this.alphabet[t]]=255&t;return e},e.CharacterSets={GMP:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0)],INVERTED:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0)]},e.STANDARD_BASE=256,e.TARGET_BASE=62,e}();t.default=r},1582:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.timeout=e,this.db=new Map,this.nextGc=null,this.gcDelay=t||5}get size(){return this.db.size}get all(){const e=new Set;return this.db.forEach(((t,r)=>{e.add(r)})),e}add(e){return this.db.set(e,Date.now()+this.timeout),this.scheduleGc(),this}has(e){return this.db.has(e)}delete(e){return this.db.has(e)&&(this.db.delete(e),this.scheduleGc(!0)),this}gc(){const e=Date.now();this.db.forEach(((t,r)=>{t<e&&this.db.delete(r)})),this.nextGc=null,this.scheduleGc()}scheduleGc(e=!1){if(e&&this.nextGc&&(clearTimeout(this.nextGc),this.nextGc=null),null!==this.nextGc||0===this.db.size)return;let t=-1;this.db.forEach((e=>{(-1===t||e<t)&&(t=e)})),-1===t&&(t=Date.now());const r=t-Date.now()+this.gcDelay;this.nextGc=setTimeout(this.gc.bind(this),r)}}t.default=r,e.exports=r,e.exports.default=r},7820:e=>{"use strict";"undefined"!=typeof self?e.exports=self:"undefined"!=typeof window?e.exports=window:e.exports=Function("return this")()},5323:(e,t,r)=>{"use strict";var n=r(7820);e.exports=function(){return"object"==typeof r.g&&r.g&&r.g.Math===Math&&r.g.Array===Array?r.g:n}},1436:e=>{var t;self,t=()=>(()=>{var e={318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8:e=>{function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},991:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OPEN_BROADCAST_CHANNELS=t.BroadcastChannel=void 0,t.clearNodeFolder=function(e){e=(0,i.fillOptionsWithDefaults)(e);var t=(0,o.chooseMethod)(e);return"node"===t.type?t.clearNodeFolder().then((function(){return!0})):n.PROMISE_RESOLVED_FALSE},t.enforceOptions=function(e){s=e};var n=r(202),o=r(632),i=r(423),a=new Set;t.OPEN_BROADCAST_CHANNELS=a;var s,c=0,u=function(e,t){var r,u;this.id=c++,a.add(this),this.name=e,s&&(t=s),this.options=(0,i.fillOptionsWithDefaults)(t),this.method=(0,o.chooseMethod)(this.options),this._iL=!1,this._onML=null,this._addEL={message:[],internal:[]},this._uMP=new Set,this._befC=[],this._prepP=null,u=(r=this).method.create(r.name,r.options),(0,n.isPromise)(u)?(r._prepP=u,u.then((function(e){r._state=e}))):r._state=u};function l(e,t,r){var o={time:e.method.microSeconds(),type:t,data:r};return(e._prepP?e._prepP:n.PROMISE_RESOLVED_VOID).then((function(){var t=e.method.postMessage(e._state,o);return e._uMP.add(t),t.catch().then((function(){return e._uMP.delete(t)})),t}))}function d(e){return e._addEL.message.length>0||e._addEL.internal.length>0}function f(e,t,r){e._addEL[t].push(r),function(e){if(!e._iL&&d(e)){var t=function(t){e._addEL[t.type].forEach((function(e){var r=e.time-1e5;t.time>=r&&e.fn(t.data)}))},r=e.method.microSeconds();e._prepP?e._prepP.then((function(){e._iL=!0,e.method.onMessage(e._state,t,r)})):(e._iL=!0,e.method.onMessage(e._state,t,r))}}(e)}function h(e,t,r){e._addEL[t]=e._addEL[t].filter((function(e){return e!==r})),function(e){if(e._iL&&!d(e)){e._iL=!1;var t=e.method.microSeconds();e.method.onMessage(e._state,null,t)}}(e)}t.BroadcastChannel=u,u._pubkey=!0,u.prototype={postMessage:function(e){if(this.closed)throw new Error("BroadcastChannel.postMessage(): Cannot post message after channel has closed "+JSON.stringify(e));return l(this,"message",e)},postInternal:function(e){return l(this,"internal",e)},set onmessage(e){var t={time:this.method.microSeconds(),fn:e};h(this,"message",this._onML),e&&"function"==typeof e?(this._onML=t,f(this,"message",t)):this._onML=null},addEventListener:function(e,t){f(this,e,{time:this.method.microSeconds(),fn:t})},removeEventListener:function(e,t){h(this,e,this._addEL[e].find((function(e){return e.fn===t})))},close:function(){var e=this;if(!this.closed){a.delete(this),this.closed=!0;var t=this._prepP?this._prepP:n.PROMISE_RESOLVED_VOID;return this._onML=null,this._addEL.message=[],t.then((function(){return Promise.all(Array.from(e._uMP))})).then((function(){return Promise.all(e._befC.map((function(e){return e()})))})).then((function(){return e.method.close(e._state)}))}},get type(){return this.method.type},get isClosed(){return this.closed}}},437:(e,t,r)=>{"use strict";var n=r(585);e.exports={BroadcastChannel:n.BroadcastChannel,createLeaderElection:n.createLeaderElection,clearNodeFolder:n.clearNodeFolder,enforceOptions:n.enforceOptions,beLeader:n.beLeader}},585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BroadcastChannel",{enumerable:!0,get:function(){return n.BroadcastChannel}}),Object.defineProperty(t,"OPEN_BROADCAST_CHANNELS",{enumerable:!0,get:function(){return n.OPEN_BROADCAST_CHANNELS}}),Object.defineProperty(t,"beLeader",{enumerable:!0,get:function(){return o.beLeader}}),Object.defineProperty(t,"clearNodeFolder",{enumerable:!0,get:function(){return n.clearNodeFolder}}),Object.defineProperty(t,"createLeaderElection",{enumerable:!0,get:function(){return o.createLeaderElection}}),Object.defineProperty(t,"enforceOptions",{enumerable:!0,get:function(){return n.enforceOptions}});var n=r(991),o=r(550)},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.beLeader=s,t.createLeaderElection=function(e,t){if(e._leaderElector)throw new Error("BroadcastChannel already has a leader-elector");t=function(e,t){return e||(e={}),(e=JSON.parse(JSON.stringify(e))).fallbackInterval||(e.fallbackInterval=3e3),e.responseTime||(e.responseTime=t.method.averageResponseTime(t.options)),e}(t,e);var r=new i(e,t);return e._befC.push((function(){return r.die()})),e._leaderElector=r,r};var n=r(202),o=r(499),i=function(e,t){var r=this;this.broadcastChannel=e,this._options=t,this.isLeader=!1,this.hasLeader=!1,this.isDead=!1,this.token=(0,n.randomToken)(),this._aplQ=n.PROMISE_RESOLVED_VOID,this._aplQC=0,this._unl=[],this._lstns=[],this._dpL=function(){},this._dpLC=!1;var o=function(e){"leader"===e.context&&("death"===e.action&&(r.hasLeader=!1),"tell"===e.action&&(r.hasLeader=!0))};this.broadcastChannel.addEventListener("internal",o),this._lstns.push(o)};function a(e,t){var r={context:"leader",action:t,token:e.token};return e.broadcastChannel.postInternal(r)}function s(e){e.isLeader=!0,e.hasLeader=!0;var t=(0,o.add)((function(){return e.die()}));e._unl.push(t);var r=function(t){"leader"===t.context&&"apply"===t.action&&a(e,"tell"),"leader"!==t.context||"tell"!==t.action||e._dpLC||(e._dpLC=!0,e._dpL(),a(e,"tell"))};return e.broadcastChannel.addEventListener("internal",r),e._lstns.push(r),a(e,"tell")}i.prototype={applyOnce:function(e){var t=this;return this.isLeader?(0,n.sleep)(0,!0):this.isDead?(0,n.sleep)(0,!1):this._aplQC>1?this._aplQ:(this._aplQC=this._aplQC+1,this._aplQ=this._aplQ.then((function(){return function(){if(t.isLeader)return n.PROMISE_RESOLVED_TRUE;var r,o=!1,i=new Promise((function(e){r=function(){o=!0,e()}})),c=[],u=function(e){"leader"===e.context&&e.token!=t.token&&(c.push(e),"apply"===e.action&&e.token>t.token&&r(),"tell"===e.action&&(r(),t.hasLeader=!0))};t.broadcastChannel.addEventListener("internal",u);var l=e?4*t._options.responseTime:t._options.responseTime;return a(t,"apply").then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).then((function(){return a(t,"apply")})).then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).catch((function(){})).then((function(){return t.broadcastChannel.removeEventListener("internal",u),!o&&s(t).then((function(){return!0}))}))}()})).then((function(){t._aplQC=t._aplQC-1})),this._aplQ.then((function(){return t.isLeader})))},awaitLeadership:function(){return this._aLP||(this._aLP=(e=this).isLeader?n.PROMISE_RESOLVED_VOID:new Promise((function(t){var r=!1;function o(){r||(r=!0,e.broadcastChannel.removeEventListener("internal",i),t(!0))}e.applyOnce().then((function(){e.isLeader&&o()})),function t(){return(0,n.sleep)(e._options.fallbackInterval).then((function(){if(!e.isDead&&!r)return e.isLeader?void o():e.applyOnce(!0).then((function(){e.isLeader?o():t()}))}))}();var i=function(t){"leader"===t.context&&"death"===t.action&&(e.hasLeader=!1,e.applyOnce().then((function(){e.isLeader&&o()})))};e.broadcastChannel.addEventListener("internal",i),e._lstns.push(i)}))),this._aLP;var e},set onduplicate(e){this._dpL=e},die:function(){var e=this;return this._lstns.forEach((function(t){return e.broadcastChannel.removeEventListener("internal",t)})),this._lstns=[],this._unl.forEach((function(e){return e.remove()})),this._unl=[],this.isLeader&&(this.hasLeader=!1,this.isLeader=!1),this.isDead=!0,a(this,"death")}}},632:(e,t,r)=>{"use strict";var n=r(318);r(8),Object.defineProperty(t,"__esModule",{value:!0}),t.chooseMethod=function(e){var t=[].concat(e.methods,u).filter(Boolean);if(e.type){if("simulate"===e.type)return s.default;var r=t.find((function(t){return t.type===e.type}));if(r)return r;throw new Error("method-type "+e.type+" not found")}e.webWorkerSupport||c.isNode||(t=t.filter((function(e){return"idb"!==e.type})));var n=t.find((function(e){return e.canBeUsed()}));if(n)return n;throw new Error("No useable method found in "+JSON.stringify(u.map((function(e){return e.type}))))};var o=n(r(115)),i=n(r(122)),a=n(r(924)),s=n(r(574)),c=r(202),u=[o.default,i.default,a.default]},122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=C,t.canBeUsed=E,t.cleanOldMessages=p,t.close=y,t.create=v,t.createDatabase=u,t.default=void 0,t.getAllMessages=function(e){var t=e.transaction(s).objectStore(s),r=[];return new Promise((function(e){t.openCursor().onsuccess=function(t){var n=t.target.result;n?(r.push(n.value),n.continue()):e(r)}}))},t.getIdb=c,t.getMessagesHigherThan=d,t.getOldMessages=h,t.microSeconds=void 0,t.onMessage=w,t.postMessage=b,t.removeMessageById=f,t.type=void 0,t.writeMessage=l;var n=r(202),o=r(151),i=r(423),a=n.microSeconds;t.microSeconds=a;var s="messages";function c(){if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof window){if(void 0!==window.mozIndexedDB)return window.mozIndexedDB;if(void 0!==window.webkitIndexedDB)return window.webkitIndexedDB;if(void 0!==window.msIndexedDB)return window.msIndexedDB}return!1}function u(e){var t="pubkey.broadcast-channel-0-"+e,r=c().open(t,1);return r.onupgradeneeded=function(e){e.target.result.createObjectStore(s,{keyPath:"id",autoIncrement:!0})},new Promise((function(e,t){r.onerror=function(e){return t(e)},r.onsuccess=function(){e(r.result)}}))}function l(e,t,r){var n={uuid:t,time:(new Date).getTime(),data:r},o=e.transaction([s],"readwrite");return new Promise((function(e,t){o.oncomplete=function(){return e()},o.onerror=function(e){return t(e)},o.objectStore(s).add(n)}))}function d(e,t){var r=e.transaction(s).objectStore(s),n=[];return new Promise((function(e){(function(){try{var e=IDBKeyRange.bound(t+1,1/0);return r.openCursor(e)}catch(e){return r.openCursor()}}()).onsuccess=function(r){var o=r.target.result;o?o.value.id<t+1?o.continue(t+1):(n.push(o.value),o.continue()):e(n)}}))}function f(e,t){var r=e.transaction([s],"readwrite").objectStore(s).delete(t);return new Promise((function(e){r.onsuccess=function(){return e()}}))}function h(e,t){var r=(new Date).getTime()-t,n=e.transaction(s).objectStore(s),o=[];return new Promise((function(e){n.openCursor().onsuccess=function(t){var n=t.target.result;if(n){var i=n.value;if(!(i.time<r))return void e(o);o.push(i),n.continue()}else e(o)}}))}function p(e,t){return h(e,t).then((function(t){return Promise.all(t.map((function(t){return f(e,t.id)})))}))}function v(e,t){return t=(0,i.fillOptionsWithDefaults)(t),u(e).then((function(r){var i={closed:!1,lastCursorId:0,channelName:e,options:t,uuid:(0,n.randomToken)(),eMIs:new o.ObliviousSet(2*t.idb.ttl),writeBlockPromise:n.PROMISE_RESOLVED_VOID,messagesCallback:null,readQueuePromises:[],db:r};return r.onclose=function(){i.closed=!0,t.idb.onclose&&t.idb.onclose()},g(i),i}))}function g(e){e.closed||m(e).then((function(){return(0,n.sleep)(e.options.idb.fallbackInterval)})).then((function(){return g(e)}))}function m(e){return e.closed?n.PROMISE_RESOLVED_VOID:e.messagesCallback?d(e.db,e.lastCursorId).then((function(t){var r=t.filter((function(e){return!!e})).map((function(t){return t.id>e.lastCursorId&&(e.lastCursorId=t.id),t})).filter((function(t){return function(e,t){return!(e.uuid===t.uuid||t.eMIs.has(e.id)||e.data.time<t.messagesCallbackTime)}(t,e)})).sort((function(e,t){return e.time-t.time}));return r.forEach((function(t){e.messagesCallback&&(e.eMIs.add(t.id),e.messagesCallback(t.data))})),n.PROMISE_RESOLVED_VOID})):n.PROMISE_RESOLVED_VOID}function y(e){e.closed=!0,e.db.close()}function b(e,t){return e.writeBlockPromise=e.writeBlockPromise.then((function(){return l(e.db,e.uuid,t)})).then((function(){0===(0,n.randomInt)(0,10)&&p(e.db,e.options.idb.ttl)})),e.writeBlockPromise}function w(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t,m(e)}function E(){return!n.isNode&&!!c()}function C(e){return 2*e.idb.fallbackInterval}t.type="idb";var S={create:v,close:y,onMessage:w,postMessage:b,canBeUsed:E,type:"idb",averageResponseTime:C,microSeconds:a};t.default=S},924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addStorageEventListener=d,t.averageResponseTime=m,t.canBeUsed=g,t.close=p,t.create=h,t.default=void 0,t.getLocalStorage=c,t.microSeconds=void 0,t.onMessage=v,t.postMessage=l,t.removeStorageEventListener=f,t.storageKey=u,t.type=void 0;var n=r(151),o=r(423),i=r(202),a=i.microSeconds;t.microSeconds=a;var s="localstorage";function c(){var e;if("undefined"==typeof window)return null;try{e=window.localStorage,e=window["ie8-eventlistener/storage"]||window.localStorage}catch(e){}return e}function u(e){return"pubkey.broadcastChannel-"+e}function l(e,t){return new Promise((function(r){(0,i.sleep)().then((function(){var n=u(e.channelName),o={token:(0,i.randomToken)(),time:(new Date).getTime(),data:t,uuid:e.uuid},a=JSON.stringify(o);c().setItem(n,a);var s=document.createEvent("Event");s.initEvent("storage",!0,!0),s.key=n,s.newValue=a,window.dispatchEvent(s),r()}))}))}function d(e,t){var r=u(e),n=function(e){e.key===r&&t(JSON.parse(e.newValue))};return window.addEventListener("storage",n),n}function f(e){window.removeEventListener("storage",e)}function h(e,t){if(t=(0,o.fillOptionsWithDefaults)(t),!g())throw new Error("BroadcastChannel: localstorage cannot be used");var r=(0,i.randomToken)(),a=new n.ObliviousSet(t.localstorage.removeTimeout),s={channelName:e,uuid:r,eMIs:a};return s.listener=d(e,(function(e){s.messagesCallback&&e.uuid!==r&&e.token&&!a.has(e.token)&&(e.data.time&&e.data.time<s.messagesCallbackTime||(a.add(e.token),s.messagesCallback(e.data)))})),s}function p(e){f(e.listener)}function v(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t}function g(){if(i.isNode)return!1;var e=c();if(!e)return!1;try{var t="__broadcastchannel_check";e.setItem(t,"works"),e.removeItem(t)}catch(e){return!1}return!0}function m(){var e=navigator.userAgent.toLowerCase();return e.includes("safari")&&!e.includes("chrome")?240:120}t.type=s;var y={create:h,close:p,onMessage:v,postMessage:l,canBeUsed:g,type:s,averageResponseTime:m,microSeconds:a};t.default=y},115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202),o=n.microSeconds;t.microSeconds=o;var i="native";function a(e){var t={messagesCallback:null,bc:new BroadcastChannel(e),subFns:[]};return t.bc.onmessage=function(e){t.messagesCallback&&t.messagesCallback(e.data)},t}function s(e){e.bc.close(),e.subFns=[]}function c(e,t){try{return e.bc.postMessage(t,!1),n.PROMISE_RESOLVED_VOID}catch(e){return Promise.reject(e)}}function u(e,t){e.messagesCallback=t}function l(){if(n.isNode&&"undefined"==typeof window)return!1;if("function"==typeof BroadcastChannel){if(BroadcastChannel._pubkey)throw new Error("BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill");return!0}return!1}function d(){return 150}t.type=i;var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:i,averageResponseTime:d,microSeconds:o};t.default=f},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202).microSeconds;t.microSeconds=n;var o="simulate";t.type=o;var i=new Set;function a(e){var t={name:e,messagesCallback:null};return i.add(t),t}function s(e){i.delete(e)}function c(e,t){return new Promise((function(r){return setTimeout((function(){Array.from(i).filter((function(t){return t.name===e.name})).filter((function(t){return t!==e})).filter((function(e){return!!e.messagesCallback})).forEach((function(e){return e.messagesCallback(t)})),r()}),5)}))}function u(e,t){e.messagesCallback=t}function l(){return!0}function d(){return 5}var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:o,averageResponseTime:d,microSeconds:n};t.default=f},423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fillOptionsWithDefaults=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=JSON.parse(JSON.stringify(e));return void 0===t.webWorkerSupport&&(t.webWorkerSupport=!0),t.idb||(t.idb={}),t.idb.ttl||(t.idb.ttl=45e3),t.idb.fallbackInterval||(t.idb.fallbackInterval=150),e.idb&&"function"==typeof e.idb.onclose&&(t.idb.onclose=e.idb.onclose),t.localstorage||(t.localstorage={}),t.localstorage.removeTimeout||(t.localstorage.removeTimeout=6e4),e.methods&&(t.methods=e.methods),t.node||(t.node={}),t.node.ttl||(t.node.ttl=12e4),t.node.maxParallelWrites||(t.node.maxParallelWrites=2048),void 0===t.node.useFastPath&&(t.node.useFastPath=!0),t}},202:(e,t,r)=>{"use strict";var n=r(155);Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=t.PROMISE_RESOLVED_VOID=t.PROMISE_RESOLVED_TRUE=t.PROMISE_RESOLVED_FALSE=void 0,t.isPromise=function(e){return!(!e||"function"!=typeof e.then)},t.microSeconds=function(){var e=(new Date).getTime();return e===s?1e3*e+ ++c:(s=e,c=0,1e3*e)},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.randomToken=function(){return Math.random().toString(36).substring(2)},t.sleep=function(e,t){return e||(e=0),new Promise((function(r){return setTimeout((function(){return r(t)}),e)}))};var o=Promise.resolve(!1);t.PROMISE_RESOLVED_FALSE=o;var i=Promise.resolve(!0);t.PROMISE_RESOLVED_TRUE=i;var a=Promise.resolve();t.PROMISE_RESOLVED_VOID=a;var s=0,c=0,u="[object process]"===Object.prototype.toString.call(void 0!==n?n:0);t.isNode=u},227:(e,t,r)=>{var n=r(155);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,i,a=null;function s(...e){if(!s.enabled)return;const n=s,o=Number(new Date),i=o-(r||o);n.diff=i,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";a++;const i=t.formatters[o];if("function"==typeof i){const t=e[a];r=i.call(n,t),e.splice(a,1),a--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(o!==t.namespaces&&(o=t.namespaces,i=t.enabled(e)),i),set:e=>{a=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r<o;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(824),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},643:e=>{e.exports=!1},824:e=>{var t=1e3,r=60*t,n=60*r,o=24*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,a){a=a||{};var s,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(i){var a=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===u&&isFinite(e))return a.long?(s=e,(c=Math.abs(s))>=o?i(s,c,o,"day"):c>=n?i(s,c,n,"hour"):c>=r?i(s,c,r,"minute"):c>=t?i(s,c,t,"second"):s+" ms"):function(e){var i=Math.abs(e);return i>=o?Math.round(e/o)+"d":i>=n?Math.round(e/n)+"h":i>=r?Math.round(e/r)+"m":i>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},151:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ObliviousSet:()=>n,now:()=>i,removeTooOldValues:()=>o});var n=function(){function e(e){this.ttl=e,this.set=new Set,this.timeMap=new Map}return e.prototype.has=function(e){return this.set.has(e)},e.prototype.add=function(e){var t=this;this.timeMap.set(e,i()),this.set.add(e),setTimeout((function(){o(t)}),0)},e.prototype.clear=function(){this.set.clear(),this.timeMap.clear()},e}();function o(e){for(var t=i()-e.ttl,r=e.set[Symbol.iterator]();;){var n=r.next().value;if(!n)return;if(!(e.timeMap.get(n)<t))return;e.timeMap.delete(n),e.set.delete(n)}}function i(){return(new Date).getTime()}},155:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},279:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},797:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.assert=t.AssertError=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Error);t.AssertError=o,t.assert=function(e,t,r){if(t(e))return e;throw new o(r)}},601:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SOURCE_NAMESPACE=void 0,t.SOURCE_NAMESPACE="OfficeSDKBroadcastChannel"},758:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvokeError=t.MessageTimeoutError=t.MessageError=void 0;var o=function(e){function t(t){var r=e.call(this,t)||this;return r.name="MessageError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.MessageError=o;var i=function(e){function t(r){var n=e.call(this,r)||this;return n.name="MessageTimeoutError",Object.setPrototypeOf(n,t.prototype),n}return n(t,e),t}(Error);t.MessageTimeoutError=i;var a=function(e){function t(t){var r=e.call(this,t)||this;return r.name="InvokeError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.InvokeError=a},607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OfficeSDKMessageEvent=t.isOfficeSDKMessageEventLike=t.OfficeSDKBroadcastChannel=void 0;var a=i(r(623));t.OfficeSDKBroadcastChannel=a.default;var s=r(928);Object.defineProperty(t,"isOfficeSDKMessageEventLike",{enumerable:!0,get:function(){return s.isOfficeSDKMessageEventLike}}),Object.defineProperty(t,"OfficeSDKMessageEvent",{enumerable:!0,get:function(){return s.OfficeSDKMessageEvent}}),o(r(928),t),o(r(623),t),o(r(758),t),o(r(86),t),o(r(601),t)},928:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOfficeSDKMessageEventLike=t.OfficeSDKMessageEvent=void 0;var n=r(131),o=r(797),i=r(601),a=function(e){var t=e.data,r=e.context,a=e.time,s=e.origin,c=e.emitter,u=e.channelId,l=Object.assign({},r,{channelId:u});"string"==typeof l.messageId&&""!==l.messageId.trim()||(l.messageId=(0,n.uuid)()),Object.defineProperties(this,{data:{enumerable:!0,value:t},context:{enumerable:!0,value:l},time:{enumerable:!0,value:null!=a?a:Date.now()},id:{enumerable:!0,get:function(){return l.messageId}},source:{enumerable:!0,value:i.SOURCE_NAMESPACE},origin:{enumerable:!0,value:s},emitter:{enumerable:!0,value:c},channelId:{enumerable:!0,get:function(){return l.channelId}}}),(0,o.assert)(this.context.channelId,(function(e){return"string"==typeof e&&e.length>0}),"channel id must be a non-empty string"),(0,o.assert)(this.id,(function(e){return"string"==typeof e&&e.length>0}),"id must be a non-empty string"),(0,o.assert)(this.time,(function(e){return"number"==typeof e&&e>=0}),"time must be a positive number")};t.OfficeSDKMessageEvent=a,t.isOfficeSDKMessageEventLike=function(e){if(e instanceof a)return!0;if("object"==typeof e&&null!=e){var t=e;return t.source===i.SOURCE_NAMESPACE&&"string"==typeof t.channelId&&t.channelId.length>0&&null!=t.context}return!1}},623:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ContextType=t.DEBUG_NAMESPACE=t.INVOKE_DEFAUTL_TIMEOUT=void 0;var s=r(437),c=r(279),u=r(797),l=r(758),d=r(928),f=r(86),h=a(r(227)),p=a(r(675)),v=r(131);t.INVOKE_DEFAUTL_TIMEOUT=6e4,t.DEBUG_NAMESPACE="SM_CHAN";var g,m=function(){function e(e){var r,i=this;this.invokeHandlers=new Map,this.eventHandlers=new Map,this.emitterId=(0,v.uuid)(),this._debugNamespace=t.DEBUG_NAMESPACE,this.debug=!0===e.debug,this.debugNamespace=null!==(r=e.debugNamespace)&&void 0!==r?r:t.DEBUG_NAMESPACE,this.autoStructuredClone=!0===e.autoStructuredClone,Object.defineProperty(this,"id",{enumerable:!0,value:"string"==typeof e.channelId?(0,u.assert)(e.channelId.trim(),(function(e){return e.length>0}),"channelId must be a non-empty string"):(0,v.uuid)()}),this.emitter=new c.TinyEmitter;var a=new s.BroadcastChannel(this.id,e.broadcastChannelOptions);a.addEventListener("message",(function(e){n(i,void 0,void 0,(function(){var t,r,n;return o(this,(function(o){switch(o.label){case 0:try{t=this.initMessageEvent(e)}catch(t){return(r=new l.MessageError(null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"message cannot be handled")).originMessage=e.data,this.emit("messageError",r),[2]}return[4,this.distributeMessage(t)];case 1:return o.sent(),[2]}}))})).catch((function(e){return n(i,void 0,void 0,(function(){return o(this,(function(t){return this.emit("error",e),[2]}))}))}))})),this.channel=a}return e.prototype.initMessageEvent=function(e){var t=Object.assign({emitter:this.emitterId},e,{channelId:this.id});return"string"!=typeof t.origin&&(t.origin=location.origin),new d.OfficeSDKMessageEvent(t)},e.prototype.structuredClone=function(e){return this.autoStructuredClone?(0,f.structuredClone)(e,{replacer:function(){}}):e},e.prototype.addEventListener=function(e,t,r){var n=this.eventHandlers.get(e);Array.isArray(n)||(n=[]),n.push([t,r]),this.eventHandlers.set(e,n)},e.prototype.on=function(e,t,r){var n=this;return this.addEventListener(e,t,r),function(){n.off(e,t,r)}},e.prototype.once=function(e,t,r){var n=this,o=function(r,o){n.off(e,t,o),t(r,o)};return o.handler=t,this.addEventListener(e,o,r),function(){n.off(e,t,r)}},e.prototype.off=function(e,t,r){if(1===arguments.length)this.eventHandlers.delete(e);else{var n=this.eventHandlers.get(e);Array.isArray(n)&&("*"===(null==r?void 0:r.audience)?this.eventHandlers.delete(e):this.eventHandlers.set(e,n.filter((function(e){var n=e[0],o=e[1];return n!==t&&n.handler!==t||(null==o?void 0:o.audience)===(null==r?void 0:r.audience)}))))}},e.prototype.emit=function(e,t,r){var n=this.eventHandlers.get(e);if(this.log("emit event",{name:e,data:t,context:r,handlers:n}),Array.isArray(n))for(var o=0,i=n;o<i.length;o++){var a=i[o],s=a[0];y(a[1],r)&&s(t,r)}},e.prototype.postMessage=function(e,t){return n(this,void 0,void 0,(function(){var r,n,i,a;return o(this,(function(o){switch(o.label){case 0:try{n=this.structuredClone(e),r=(0,d.isOfficeSDKMessageEventLike)(n)?this.initMessageEvent(n):this.initMessageEvent({data:n,context:null!=t?this.mergeContexts([t]):t})}catch(t){throw this.log("message invalid",e,t),(a=new l.MessageError(null==t?void 0:t.message)).originMessage=n,a}o.label=1;case 1:return o.trys.push([1,3,,4]),this.log("pre postMessage",{message:n,origin:e,context:t,structuredCloned:this.autoStructuredClone}),[4,this.channel.postMessage(r)];case 2:return o.sent(),this.emit("postMessage",r,r.context),this.log("postMessage success",r),[3,4];case 3:throw i=o.sent(),this.log("post message error",i),(a=new l.MessageError(null==i?void 0:i.message)).originMessage=e,a;case 4:return[2]}}))}))},e.prototype.distributeMessage=function(e){var t,r,i;return n(this,void 0,void 0,(function(){var n,a;return o(this,(function(o){switch(o.label){case 0:return(null===(t=(n=e).context)||void 0===t?void 0:t.channelId)!==this.id||n.emitter===this.emitterId?(this.log("discard message",n),[2]):"function"!=typeof this.onMessageArrive?[3,2]:[4,this.onMessageArrive(n)];case 1:if(!((a=o.sent())instanceof d.OfficeSDKMessageEvent))return this.log("skip distributing message by `onMessageArrive`",{message:a,origin:e}),[2];n=a,o.label=2;case 2:return this.log("distribute message",{message:n,origin:e}),(null===(r=n.context)||void 0===r?void 0:r.type)!==g.InvokeRequest?[3,4]:[4,this.handleInvokeRequest(n)];case 3:return o.sent(),[2];case 4:return(null===(i=n.context)||void 0===i?void 0:i.type)===g.InvokeResponse?(this.handleInvokeResponse(n),[2]):(this.emit("message",n,n.context),[2])}}))}))},e.prototype.handleInvokeRequest=function(e){return n(this,void 0,void 0,(function(){var t,r,n,i,a,s,c,u,l,d,f;return o(this,(function(o){switch(o.label){case 0:if(!(0,p.default)(e.data))throw this.log("invalid invoke request",e),new Error("InvokeRequest data must be an object");if(t=e.data,r=t.name,n=t.args,i=this.invokeHandlers.get(r),this.log("handle invoke request",{message:e,handlers:i}),a=e.context,!Array.isArray(i)||0===i.length)return this.log("no invoke handlers",r),[2];s=0,c=i,o.label=1;case 1:if(!(s<c.length))return[3,8];if(!y((u=c[s]).context,a))return[3,7];l={data:void 0},o.label=2;case 2:return o.trys.push([2,4,,5]),d=l,[4,u.handler.apply(u,n)];case 3:return d.data=o.sent(),[3,5];case 4:return f=o.sent(),l.error=f,[3,5];case 5:return[4,this.postMessage(l,Object.assign({},a,{type:g.InvokeResponse}))];case 6:return o.sent(),[2];case 7:return s++,[3,1];case 8:return this.log("no invoke handler found",r),[2]}}))}))},e.prototype.handleInvokeResponse=function(e){if(this.log("handle invoke response",e),"string"!=typeof e.id)throw new l.InvokeError("Invoke response context id is invalid");this.emitter.emit(e.id,e.data)},e.prototype.mergeContexts=function(e){return Object.assign.apply(Object,i([{channelId:this.id}],e,!1))},e.prototype.invoke=function(e,r,i){return n(this,void 0,void 0,(function(){var n,a,s,c,u,d=this;return o(this,(function(o){switch(o.label){case 0:return n={name:e,args:r},a="number"==typeof(null==i?void 0:i.timeout)&&(null==i?void 0:i.timeout)>0?null==i?void 0:i.timeout:t.INVOKE_DEFAUTL_TIMEOUT,s=(0,v.uuid)(),c=new Promise((function(t,n){d.emitter.once(s,(function(o){if(o.error instanceof l.InvokeError)n(o.error);else if(null!=o.error){var i=new l.InvokeError("string"==typeof o.error?o.error:o.error.message);i.method=e,i.arguments=r,n(i)}else t(o.data)})),setTimeout((function(){d.emitter.off(s),n(new l.MessageTimeoutError("".concat(e," invoke timeout")))}),a)})),[4,this.postMessage(n,Object.assign({},i,{messageId:s,timeout:a,type:g.InvokeRequest}))];case 1:o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,c];case 3:return[2,o.sent()];case 4:throw u=o.sent(),this.log("invoke error",{id:s,name:e,args:r,payload:n,error:u}),u;case 5:return[2]}}))}))},e.prototype.addInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)||(n=[]),n.push({handler:t,context:r}),this.invokeHandlers.set(e,n)},e.prototype.removeInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)&&this.invokeHandlers.set(e,n.filter((function(e){var n;return e.handler!==t||(null===(n=e.context)||void 0===n?void 0:n.audience)!==(null==r?void 0:r.audience)})))},Object.defineProperty(e.prototype,"debug",{get:function(){return h.default.enabled(this._debugNamespace)},set:function(e){h.default.enable(e?this._debugNamespace:"-".concat(this._debugNamespace))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"debugNamespace",{get:function(){return this._debugNamespace},set:function(e){var t=this.debug;h.default.enable("-".concat(this._debugNamespace)),this.log=(0,h.default)(e),this._debugNamespace=e,t&&h.default.enable(e)},enumerable:!1,configurable:!0}),e}();function y(e,t){var r=null==e?void 0:e.audience,n=null==t?void 0:t.audience;return r===n||"*"===r||"*"===n}t.default=m,function(e){e[e.InvokeRequest=0]="InvokeRequest",e[e.InvokeResponse=1]="InvokeResponse"}(g=t.ContextType||(t.ContextType={}))},86:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.structuredClone=void 0;var o=n(r(675)),i=r(928);function a(e,t){try{return e instanceof t}catch(e){return!1}}t.structuredClone=function e(t,r){if(void 0===r&&(r={}),"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null==t||t instanceof Date||t instanceof RegExp||t instanceof Boolean||t instanceof String||t instanceof i.OfficeSDKMessageEvent)return t;try{for(var n=0,s=[window.ArrayBuffer,window.Map,window.Set,window.DataView,window.File,window.FileList,window.Blob,window.ImageBitmap,window.ImageData];n<s.length;n++)if(a(t,s[n]))return t}catch(e){}if((0,o.default)(t)){var c=t,u={};for(var l in c)!0===Object.prototype.hasOwnProperty.call(c,l)&&(u[l]=e(c[l],r));return u}if(Array.isArray(t))return t.map((function(t){return e(t,r)}));if(t instanceof Error)return t.message;try{if(t instanceof Object.getPrototypeOf(Uint8Array))return t}catch(e){}if("function"==typeof r.replacer){var d=Object.assign({},r);return d.replacer=void 0,e(r.replacer(t),d)}throw new Error("".concat(String(t)," could not be cloned"))}},131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uuid=void 0,t.uuid=function(){for(var e,t=[],r=(null!==(e=window.crypto)&&void 0!==e?e:window.msCrypto).getRandomValues(new Uint8Array(20)),n=0;n<r.length;n++)t.push(r[n].toString(16).padStart(2,"0"));for(var o=0,i=[4,7,10,13];o<i.length;o++)t[i[o]]="-";return t.join("")}},499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{add:()=>d,getSize:()=>p,removeAll:()=>h,runAll:()=>f});var n=r(643),o=r.n(n);const i={add:function(e){if("function"==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope);else{if("function"!=typeof window.addEventListener)return;window.addEventListener("beforeunload",(function(){e()}),!0),window.addEventListener("unload",(function(){e()}),!0)}}};var a=r(199),s=r.n(a),c=o()?s():i,u=new Set,l=!1;function d(e){if(l||(l=!0,c.add(f)),"function"!=typeof e)throw new Error("Listener is no function");return u.add(e),{remove:function(){return u.delete(e)},run:function(){return u.delete(e),e()}}}function f(){var e=[];return u.forEach((function(t){e.push(t()),u.delete(t)})),Promise.all(e)}function h(){u.clear()}function p(){return u.size}},199:()=>{},675:(e,t,r)=>{"use strict";function n(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}r.r(t),r.d(t,{default:()=>n})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(607)})(),e.exports=t()},5606:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},6532:(e,t,r)=>{"use strict";var n,o=r(5606);(n=void 0!==o&&"[object process]"==={}.toString.call(o)||"undefined"!=typeof navigator&&"ReactNative"===navigator.product?r.g:self).Proxy||(n.Proxy=r(7780)(),n.Proxy.revocable=n.Proxy.revocable)},7780:e=>{e.exports=function(){let e,t=null;function r(e){return!!e&&("object"==typeof e||"function"==typeof e)}function n(e){if(null!==e&&!r(e))throw new TypeError("Object prototype may only be an Object or null: "+e)}const o=Object,i=Boolean(o.create)||!({__proto__:null}instanceof o),a=o.create||(i?function(e){return n(e),{__proto__:e}}:function(e){if(n(e),null===e)throw new SyntaxError("Native Object.create is required to create objects with null prototype");var t=function(){};return t.prototype=e,new t}),s=function(){return null},c=o.getPrototypeOf||([].__proto__===Array.prototype?function(e){const t=e.__proto__;return r(t)?t:null}:s);return e=function(u,l){if(void 0===(this&&this instanceof e?this.constructor:void 0))throw new TypeError("Constructor Proxy requires 'new'");if(!r(u)||!r(l))throw new TypeError("Cannot create proxy with a non-object as target or handler");let d=function(){};t=function(){u=null,d=function(e){throw new TypeError(`Cannot perform '${e}' on a proxy that has been revoked`)}},setTimeout((function(){t=null}),0);const f=l;l={get:null,set:null,apply:null,construct:null};for(let e in f){if(!(e in l))throw new TypeError(`Proxy polyfill does not support trap '${e}'`);l[e]=f[e]}"function"==typeof f&&(l.apply=f.apply.bind(f));const h=c(u);let p,v=!1,g=!1;"function"==typeof u?(p=function(){const e=this&&this.constructor===p,t=Array.prototype.slice.call(arguments);return d(e?"construct":"apply"),e&&l.construct?l.construct.call(this,u,t):!e&&l.apply?l.apply(u,this,t):e?(t.unshift(u),new(u.bind.apply(u,t))):u.apply(this,t)},v=!0):u instanceof Array?(p=[],g=!0):p=i||null!==h?a(h):{};const m=l.get?function(e){return d("get"),l.get(this,e,p)}:function(e){return d("get"),this[e]},y=l.set?function(e,t){d("set"),l.set(this,e,t,p)}:function(e,t){d("set"),this[e]=t},b=o.getOwnPropertyNames(u),w={};b.forEach((function(e){if((v||g)&&e in p)return;const t=o.getOwnPropertyDescriptor(u,e),r={enumerable:Boolean(t.enumerable),get:m.bind(u,e),set:y.bind(u,e)};o.defineProperty(p,e,r),w[e]=!0}));let E=!0;if(v||g){const e=o.setPrototypeOf||([].__proto__===Array.prototype?function(e,t){return n(t),e.__proto__=t,e}:s);h&&e(p,h)||(E=!1)}if(l.get||!E)for(let e in u)w[e]||o.defineProperty(p,e,{get:m.bind(u,e)});return o.seal(u),o.seal(p),p},e.revocable=function(r,n){return{proxy:new e(r,n),revoke:t}},e}},1504:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},7407:function(e,t){"use strict";var r=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyBrandingChanged=t.initBrandingFacade=t.BRANDING_CHANGED_EVENT=t.BRANDING_METHOD=void 0,t.BRANDING_METHOD={getEditorFooterLogo:"branding.getEditorFooterLogo",setEditorFooterLogoSrc:"branding.setEditorFooterLogoSrc"},t.BRANDING_CHANGED_EVENT="branding:changed",t.initBrandingFacade=function(e){var o=this;return{getEditorFooterLogo:function(){return r(o,void 0,void 0,(function(){var r;return n(this,(function(n){switch(n.label){case 0:return[4,e.invokeBranding(t.BRANDING_METHOD.getEditorFooterLogo)];case 1:return r=n.sent(),e.setEditorFooterLogoState(r),[2,e.getEditorFooterLogoState()]}}))}))},setEditorFooterLogoSrc:function(i){return r(o,void 0,void 0,(function(){var r,o;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,e.invokeBranding(t.BRANDING_METHOD.setEditorFooterLogoSrc,{src:i})];case 1:return r=n.sent(),e.setEditorFooterLogoState(r),[3,3];case 2:throw o=n.sent(),e.emitBrandingError("set editor footer logo src failed",o),o;case 3:return[2]}}))}))}}},t.applyBrandingChanged=function(e,t){t&&Object.prototype.hasOwnProperty.call(t,"editorFooterLogo")&&e.setEditorFooterLogoState(t.editorFooterLogo)}},2694:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildRootFacadeState=void 0;var i=r(4057);function a(e,t){return t?e.createValueObjectFacade("selection.range",t,{start:t.start,end:t.end,isCaret:t.start===t.end}):null}function s(e,t){var r=this;return e.createValueObjectFacade("tables.item",t,{tableId:t.tableId,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getCell",[t,i,a])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.cell",r,{tableId:r.tableId,row:r.row,column:r.column})]:[2,null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getRange",[t,i])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.range",r,{tableId:r.tableId,selection:r.selection})]:[2,null]}}))}))}})}function c(e,t){return t?e.createValueObjectFacade("sheet.range",t,t):null}function u(e,t){return t?e.createValueObjectFacade("sheet.cell",t,t):null}function l(e,t){var r=this;return e.createValueObjectFacade("sheet.worksheet",t,{id:t.id,name:t.name,getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getRange",[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getCell",[t,i,a])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))},getActiveCell:function(){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getActiveCell",[t])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))}})}function d(e,t){return t?e.createValueObjectFacade("selection.textRange",t,{start:t.start,end:t.end}):null}function f(e,t){if(!t)return null;var r={id:t.shapeId,name:t.name,type:t.type,textContent:t.textContent};return e.createValueObjectFacade("slides.slide.shape",t,r)}function h(e,t){var r=this;return e.createValueObjectFacade("slides.slide",t,{id:t.slideId,getShapes:function(){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.slide.getShapes",[t])];case 1:return[2,r.sent().map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]}}))}))},insertShape:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertShape",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation shape not found");return[2,n]}}))}))},insertTextBox:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertTextBox",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation text shape not found");return[2,n]}}))}))}})}t.buildRootFacadeState=function(e){var t=this,r={addChangedListener:function(t){return e.listenEditorEvent("titleChange",t)},setTitle:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("title.setTitle",[r])];case 1:return t.sent(),[2]}}))}))}},c={show:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.show",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))},hide:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.hide",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))}},u={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.hide")];case 1:return t.sent(),[2]}}))}))}},p={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.hide")];case 1:return t.sent(),[2]}}))}))}},v={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.hide")];case 1:return t.sent(),[2]}}))}))}},g={insert:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("insertExternalApp",[r,i])];case 1:return[2,t.sent()]}}))}))}},m={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.hide")];case 1:return t.sent(),[2]}}))}))},addRangeLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addRangeLock",[r])];case 1:return t.sent(),[2]}}))}))},addSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addSheetLock",[r])];case 1:return t.sent(),[2]}}))}))},removeRangeLocksInRanges:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeRangeLocksInRanges",[r])];case 1:return t.sent(),[2]}}))}))},removeSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeSheetLock",[r])];case 1:return t.sent(),[2]}}))}))}},y={locateCellByGuid:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("mention.locateCellByGuid",[r,i])];case 1:return t.sent(),[2]}}))}))}},b={setContent:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("content.setContent",[r])];case 1:return t.sent(),[2]}}))}))}},w={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.hide")];case 1:return t.sent(),[2]}}))}))},createRevision:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.createRevision",[r])];case 1:return t.sent(),[2,void 0]}}))}))}},E={start:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start","number"==typeof r?[r]:[])];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))},startFromCurrent:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startFromCurrent")];case 1:return t.sent(),[2]}}))}))},startRemoteLive:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startRemoteLive")];case 1:return t.sent(),[2]}}))}))},startSpeakerView:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startSpeakerView")];case 1:return t.sent(),[2]}}))}))},addChangeListener:function(t){return e.registerEditorFacadeListener("presentation.addChangeListener",t)}},C=function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:t=e.registerEditorFacadeCallback(r),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,e.invokeEditorFacade("batchChanges",[t])];case 2:return[2,n.sent()];case 3:return e.unregisterEditorFacadeCallback(t),[7];case 4:return[2]}}))}))},S=function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("print")];case 1:return t.sent(),[2]}}))}))},_=function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("export",[r])];case 1:return t.sent(),[2]}}))}))},O=e.createEditorFacadeModule("selection",{getRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,a(e,t)]}}))}))},getWholeRange:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("selection.getWholeRange")];case 1:return t=r.sent(),[2,a(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)}}),k=e.createEditorFacadeModule("tables",{getAll:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("tables.getAll")];case 1:return[2,t.sent().map((function(t){return s(e,t)}))]}}))}))},getOne:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.getOne",[r])];case 1:return[2,(t=n.sent())?s(e,t):null]}}))}))}}),P=e.createEditorFacadeModule("workbook",{getWorksheets:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheets")];case 1:return[2,t.sent().map((function(t){return l(e,t)}))]}}))}))},getWorksheetById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheetById",[r])];case 1:return[2,(t=n.sent())?l(e,t):null]}}))}))},getActiveWorksheet:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("workbook.getActiveWorksheet")];case 1:return t=r.sent(),[2,l(e,t)]}}))}))}}),A=e.createEditorFacadeModule("slides",{getCurrentSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.getCurrentSlide")];case 1:return t=r.sent(),[2,h(e,t)]}}))}))},getSlides:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSlides")];case 1:return[2,t.sent().map((function(t){return h(e,t)}))]}}))}))},getSlideById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.getSlideById",[r])];case 1:return[2,(t=n.sent())?h(e,t):null]}}))}))},getSelectedSlides:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSelectedSlides",void 0===r?[]:[r])];case 1:return[2,t.sent().map((function(t){return h(e,t)}))]}}))}))},addSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.addSlide")];case 1:return t=r.sent(),[2,h(e,t)]}}))}))},duplicateSlide:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.duplicateSlide",[r])];case 1:return t=n.sent(),[2,h(e,t)]}}))}))}}),M=e.createEditorFacadeModule("selection",{getTextRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getTextRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,d(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)},getSelectedShapes:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getSelectedShapes",void 0===r?[]:[r])];case 1:return(t=n.sent())?[2,t.map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]:[2,null]}}))}))}}),x={addErrorListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addErrorListener",t)},addLoadedListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addLoadedListener",t)}},T=e.createEditorFacadeModule("outline",{show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!0])];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!1])];case 1:return t.sent(),[2]}}))}))}});switch(e.fileType){case i.FileType.Document:return{title:r,history:u,comments:c,discussion:p,collaborator:v,externalApp:g,version:w,presentation:E,selection:O,settings:e.createEditorFacadeModule("settings",{}),search:e.createEditorFacadeModule("search",{}),outline:T,sidebar:e.createEditorFacadeModule("sidebar",{}),tables:k,batchChanges:C,print:S};case i.FileType.Spreadsheet:return{history:u,comments:c,locks:m,mention:y,content:b,version:w,presentation:E,workbook:P,activeSheet:l(e,{active:!0}),charts:e.createEditorFacadeModule("charts",{}),selections:e.createEditorFacadeModule("selections",{}),batchChanges:C,print:S,export:_,setFocus:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("setFocus",[r])];case 1:return t.sent(),[2]}}))}))}};case i.FileType.Presentation:return{history:u,comments:c,version:w,presentation:E,slides:A,selection:M,text:e.createEditorFacadeModule("text",{}),zoom:e.createEditorFacadeModule("zoom",{}),eventSubscription:x,batchChanges:C,print:S,export:_};default:return{}}}},3129:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MentionTypes=t.PermissionLevel=t.SheetRangeType=t.EditorSaveStatus=void 0,(i=t.EditorSaveStatus||(t.EditorSaveStatus={}))[i.NoChange=0]="NoChange",i[i.Success=1]="Success",i[i.Fail=2]="Fail",(o=t.SheetRangeType||(t.SheetRangeType={})).Cells="cells",o.Rows="rows",o.Columns="columns",o.Sheet="sheet",(n=t.PermissionLevel||(t.PermissionLevel={}))[n.Editable=0]="Editable",n[n.ReadOnly=1]="ReadOnly",n[n.Private=2]="Private",(r=t.MentionTypes||(t.MentionTypes={})).Comment="comment",r.Mention="mention_at",r.DateMention="date_mention"},799:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},a=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.subscribeHeaderBarsTitleChange=t.getHeaderBarsCommandRef=t.setHeaderBarsVisible=t.syncHeaderBarsVisible=t.applyHeaderBarsChanged=t.syncHeaderBarsCommands=t.ensureHeaderBarsTitleChangeSubscription=t.initHeaderBarsFacade=t.HEADER_BARS_CHANGED_EVENT=t.HEADER_BARS_METHOD=void 0;var s=r(4057);function c(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(e.isTitleSubscribed())return[2];e.setTitleSubscribed(!0),e.onInternalTitleChange((function(t){var r;"string"==typeof t&&(null===(r=e.getTitleHandler())||void 0===r||r(t))})),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e.subscribeEditorTitleChange()];case 2:return r.sent(),[3,4];case 3:throw t=r.sent(),e.setTitleSubscribed(!1),t;case 4:return[2]}}))}))}function u(e,t){var r=e.getCommandsMap();r.clear();for(var n=0,o=t;n<o.length;n++){var i=o[n];r.set(i.id,i)}}function l(e){return o(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.getVisible)];case 1:return r=n.sent(),e.setVisibleState(r.visible),[2,e.getVisibleState()]}}))}))}function d(e,r){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return e.setVisibleState(r),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setVisible,{visible:r})];case 1:return n.sent(),[2]}}))}))}function f(e,r){var o=e.getRefsMap(),i=o.get(r);if(i)return i;var a=e.getCommandsMap();a.has(r)||e.invokeHeaderBars(t.HEADER_BARS_METHOD.getCommand,{id:r}).then((function(e){e.command&&a.set(r,e.command)})).catch((function(t){e.emitHeaderBarsError("fetch headerBars command failed",t)}));var s={id:r,visible:!0,disabled:!1,active:!1,src:void 0,label:void 0,editable:void 0,onCommandClick:void 0,getState:function(){return a.get(r)}};return Object.defineProperties(s,{visible:{configurable:!0,enumerable:!0,get:function(){var e;return!1!==(null===(e=a.get(r))||void 0===e?void 0:e.visible)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{visible:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandVisible,{id:r,visible:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command visible failed",t)}))}},disabled:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.disabled)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{disabled:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandDisabled,{id:r,disabled:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command disabled failed",t)}))}},active:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.active)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{active:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandActive,{id:r,active:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command active failed",t)}))}},src:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.src},set:function(o){if("string"==typeof o){var i=a.get(r);i&&a.set(r,n(n({},i),{src:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandSrc,{id:r,src:o}).catch((function(t){i&&a.set(r,i),e.emitHeaderBarsError("set headerBars command src failed",t)}))}}},label:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.label},set:function(o){if("string"==typeof o&&"title"!==r&&"save-status"!==r){var i=a.get(r);i&&a.set(r,n(n({},i),{label:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandLabel,{id:r,label:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command label failed",t)}))}}},editable:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.editable},set:function(o){if("title"===r){var i=a.get(r);i&&a.set(r,n(n({},i),{editable:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandEditable,{id:r,editable:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command editable failed",t)}))}else e.emitHeaderBarsError("headerBars command editable is only supported for title",new Error("headerBars command editable is only supported for title"))}},onCommandClick:{configurable:!0,enumerable:!0,get:function(){return e.getOverridesMap().get(r)},set:function(n){e.getOverridesMap().set(r,n),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:r,enabled:"function"==typeof n}).catch((function(t){e.emitHeaderBarsError("set headerBars command callback failed",t)}))}}}),o.set(r,s),s}t.HEADER_BARS_METHOD={getVisible:"headerBars.getVisible",setVisible:"headerBars.setVisible",addCommand:"headerBars.addCommand",getCommand:"headerBars.getCommand",setCommandVisible:"headerBars.setCommandVisible",setCommandDisabled:"headerBars.setCommandDisabled",setCommandActive:"headerBars.setCommandActive",setCommandSrc:"headerBars.setCommandSrc",setCommandLabel:"headerBars.setCommandLabel",setCommandEditable:"headerBars.setCommandEditable",setCommandCallbackEnabled:"headerBars.setCommandCallbackEnabled",listViewCommands:"headerBars.listViewCommands",handleCommandClick:"headerBars.handleCommandClick"},t.HEADER_BARS_CHANGED_EVENT="headerBars:changed",t.initHeaderBarsFacade=function(e){var r=this,n={visible:!1,onTitleChange:void 0,getVisible:function(){return o(r,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,l(e)];case 1:return[2,t.sent()]}}))}))},setVisible:function(t){return o(r,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,d(e,t)];case 1:return r.sent(),[2]}}))}))},addCommand:function(n,s,c){return void 0===c&&(c="after"),o(r,void 0,void 0,(function(){var r,o,u,l;return i(this,(function(i){switch(i.label){case 0:return r=n.onClick,o=a(n,["onClick"]),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.addCommand,{command:o,posCommand:s,pos:c})];case 1:return u=i.sent(),l=r,u&&"function"==typeof l?(e.getOverridesMap().set(n.id,l),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:n.id,enabled:!0})]):[3,3];case 2:i.sent(),i.label=3;case 3:return[2,u]}}))}))},getCommand:function(t){return f(e,t)},listViewCommands:function(){return o(r,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.listViewCommands)];case 1:return r=n.sent(),u(e,r),[2,r]}}))}))}};return Object.defineProperty(n,"visible",{configurable:!0,enumerable:!0,get:function(){return e.getVisibleState()},set:function(t){d(e,t).catch((function(t){e.emitHeaderBarsError("set headerBars.visible failed",t)}))}}),Object.defineProperty(n,"onTitleChange",{configurable:!0,enumerable:!0,get:function(){return e.getTitleHandler()},set:function(t){e.setTitleHandler(t),"function"==typeof t&&c(e).catch((function(t){e.emitHeaderBarsError("subscribe headerBars titleChange failed",t)}))}}),n},t.ensureHeaderBarsTitleChangeSubscription=c,t.syncHeaderBarsCommands=u,t.applyHeaderBarsChanged=function(e,t){var r=null==t?void 0:t.snapshot;r&&(e.setVisibleState(r.visible),u(e,r.commands))},t.syncHeaderBarsVisible=l,t.setHeaderBarsVisible=d,t.getHeaderBarsCommandRef=f,t.subscribeHeaderBarsTitleChange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,e(s.InvokeMethod.ListenEditorEvent,["titleChange"])];case 1:return t.sent(),[2]}}))}))}},4780:function(e,t,r){"use strict";var n,o=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)},a=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)},c=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},l=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},d=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_RENDERED_EVENT=t.Event=t.OfficeSDK=t.MessageEvent=void 0,r(5781),r(2701),r(2288),r(7782),r(6532);var f=r(1436),h=r(4339),p=r(611),v=r(1504),g=d(r(5323)),m=r(4057),y=d(r(1582)),b=r(9368),w=r(2560),E=r(799),C=r(7407),S=r(2694);s(r(3129),t),s(r(799),t),s(r(7407),t);var _=(0,g.default)(),O="smjssdk",k="smParams",P={en:"en-US",ja:"ja-JP"},A=["zh-CN","zh-TW","en-US","ja-JP","ko-KR","es-ES","pt-PT","de-DE","fr-FR","it-IT","ru-RU","id-ID","vi-VN","th-TH","ms-MY","ar-SA"],M=new Set(["then","catch","finally"]);function x(e){return M.has(e)}t.MessageEvent=m.InvokeMethod;var T=function(e){function r(t){var r,n,o,i=this;(i=e.call(this)||this)._fileType=m.FileType.Unknown,i.messageHandler=function(){},i.emitter=new v.TinyEmitter,i._readyState=m.ReadyState.Loading,i.collaborators=[],i.headerBarsVisible=!0,i.headerBarsCommands=new Map,i.headerBarsCommandOverrides=new Map,i.slashMenuCallbacks=new Map,i.editorFacadeCallbacks=new Map,i.headerBarsCommandRefs=new Map,i.headerBarsTitleChangeSubscribed=!1,i.preloadAckTimeoutMs=2e3,i.preloadDoneTimeoutMs=8e3,i.preloadReadyTimeoutMs=3e3,i.connectOptions=t,i.uuid=(0,p.v4)(),i.userUuid=t.userUuid,i.normalizedEmptyPage=(0,w.normalizeEmptyPageOptions)(t.emptyPage),(0,b.assert)(t.container,(function(e){return e instanceof HTMLElement}),'container is not an HTMLElement: "'.concat(String(t.container),'"')),(0,b.assert)(t.container,(function(e){return!["iframe","frame","embed","object"].includes(e.tagName.toLowerCase())}),'invalid container element type: "'.concat(t.container.tagName,'",DIV are recommended.'));try{i.endpoint=new URL(t.endpoint)}catch(e){throw new Error('invalid endpoint: "'.concat(t.endpoint,'"'))}i.sameOrigin=i.endpoint.origin===_.location.origin,!1===/\/sdk\/v2\/*/i.test(i.endpoint.pathname)&&console.warn('Generally the endpoint should end with "/sdk/v2", please make sure it is correct: "'.concat(i.endpoint.toString(),'"')),i.apiAdaptor=t.apiAdaptor?t.apiAdaptor.toString():"",i.apiAdaptorContext=t.apiAdaptorContext?JSON.stringify(t.apiAdaptorContext):"";try{i.startParams=new h.StartParams(null!==(o=null!==(r=t.smParams)&&void 0!==r?r:new URLSearchParams(null===(n=_.location)||void 0===n?void 0:n.search).get(k))&&void 0!==o?o:"")}catch(e){i.startParams=new h.StartParams}"boolean"==typeof t.debug&&(i.startParams.debug=i.connectOptions.debug),i.onViewportResize=function(){c(i,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.postMessage({event:m.SDKEvent.ViewportResize,payload:this.getContainerRect()})];case 1:return e.sent(),[2]}}))})).catch((function(e){i.emit("error",new Error("Failed to emit resize event: ".concat(String(e))))}))},i.initChannel(),i.headerBars=i.initHeaderBarsFacade(),i.branding=i.initBrandingFacade();var a=t.messageExpires;return"number"!=typeof a&&(a=3e5),i.messageExpires=(0,b.assert)(a,(function(e){return!isNaN(e)&&e>0}),'"messageExpires" is not an valid number: "'.concat(a,'"')),i.handledMessageCache=new y.default(a),i.sameOrigin||(i.messageHandler=function(e){var t=e.data;(0,f.isOfficeSDKMessageEventLike)(t)&&i.shouldHandleMessage(t)&&(i.handledMessageCache.add(t.id),i.channel.distributeMessage(e.data).catch((function(e){i.emit("error",e)})))}),i}return o(r,e),Object.defineProperty(r.prototype,"fileType",{get:function(){return this._fileType},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"readyState",{get:function(){return this._readyState},enumerable:!1,configurable:!0}),r.prototype.shouldExposeSlashMenu=function(){if(!this.connectOptions.slashMenu)return!1;if(this.fileType===m.FileType.Document)return!0;if(this.fileType!==m.FileType.Unknown)return!1;var e=this.getSlashMenuTypeHint();return"string"!=typeof e||["doc","docs","document"].includes(e)},r.prototype.getSlashMenuTypeHint=function(){var e=this.startParams.type;if("string"==typeof e)return e.trim().toLowerCase()||void 0},r.prototype.createSerializedSlashMenu=function(){if(this.slashMenuCallbacks.clear(),this.shouldExposeSlashMenu()){var e=this.connectOptions.slashMenu;if(e&&Array.isArray(e.entries))return{entries:this.serializeSlashMenuItems(e.entries,["entries"])}}},r.prototype.serializeSlashMenuItems=function(e,t){var r=this;return e.map((function(e,n){var o=l(l([],t,!0),["".concat(n),e.name],!1);if(function(e){return"entry"===e.type}(e))return i(i({},e),{children:e.children?r.serializeSlashMenuItems(e.children,o):void 0});var a=r.registerSlashMenuCallback(o,e.callback),s={name:e.name,type:e.type,disabled:e.disabled,label:e.label,icon:e.icon};return a&&(s.callbackId=a),s}))},r.prototype.registerSlashMenuCallback=function(e,t){if("function"==typeof t){var r="slash-menu:".concat(e.join(":"));return this.slashMenuCallbacks.set(r,t),r}},r.prototype.getEditor=function(){return this.editor},r.prototype.setCredentials=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[e],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.setSignature=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{signature:e}],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.setToken=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{token:e}],{audience:O})];case 1:return t.sent(),[2]}}))}))},r.prototype.getPerformanceEntries=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.RequestPerformanceEntries,[],{audience:O})];case 1:return[2,e.sent()]}}))}))},r.prototype.disconnect=function(){var e;this.slashMenuCallbacks.clear(),this.editorFacadeCallbacks.clear(),(null===(e=this.element)||void 0===e?void 0:e.parentElement)instanceof HTMLElement&&this.element.parentElement.removeChild(this.element),window.removeEventListener("message",this.messageHandler),window.visualViewport?window.visualViewport.removeEventListener("resize",this.onViewportResize):window.removeEventListener("resize",this.onViewportResize)},r.prototype.init=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this._readyState!==m.ReadyState.Loading?[2]:(this._readyState=m.ReadyState.LoadingEditor,this.sameOrigin||window.addEventListener("message",this.messageHandler),e=this,[4,this.initIframe()]);case 1:return e.element=r.sent(),this.connectOptions.container.appendChild(this.element),[4,this.runPreloadHandshake()];case 2:return r.sent(),this.editor=this.initEditor(),[4,new Promise((function(e,r){var n=!1,o=function(i){var a=i.state,s=i.error,c=i.fileType;t._readyState=a,c&&t._fileType===m.FileType.Unknown&&(t._fileType=c),s?(n=!0,r("string"==typeof s?new Error(s):s)):a===m.ReadyState.Ready&&(n=!0,e()),n&&t.off(L.ReadyState,o)};t.on(L.ReadyState,o)}))];case 3:switch(r.sent(),this.fileType){case m.FileType.Document:this.document=this.editor;break;case m.FileType.DocumentPro:this.documentPro=this.editor;break;case m.FileType.Spreadsheet:this.spreadsheet=this.editor;break;case m.FileType.Table:this.table=this.editor;break;case m.FileType.Form:this.form=this.editor;break;case m.FileType.Flowchart:this.flowchart=this.editor}return this.installRootFacade(),[2]}}))}))},r.prototype.ready=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return this.readyState===m.ReadyState.Ready?[2]:[4,this.init()];case 1:return e.sent(),[2]}}))}))},r.prototype.initIframe=function(){var e;return c(this,void 0,void 0,(function(){var t,r,n,o,i;return u(this,(function(a){return t=this.connectOptions,(r=document.createElement("iframe")).style.border="none",r.style.overflow="hidden",r.style.width="100%",r.style.height="100%",r.style.display="block","allow"in r?r.allow=null!==(e=this.connectOptions.allowPolicy)&&void 0!==e?e:"fullscreen *;clipboard-read *;clipboard-write *;":r.allowFullscreen=!0,(n=this.endpoint).pathname="".concat(n.pathname,"/api/").concat((0,b.assert)(t.fileId,R,'"fileId" is missing or empty: '.concat(t.fileId)),"/preload").replace(/\/+/g,"/"),(o=t.params)&&Object.keys(o).forEach((function(e){n.searchParams.set(e,o[e])})),"string"==typeof t.deviceMode&&n.searchParams.set("deviceMode",t.deviceMode.trim()),n.searchParams.set(k,this.startParams.toString()),(t.showLoadingEffect||t.showLoading)&&(n.searchParams.set("loadingEffect","true"),t.loadingOptions&&n.searchParams.set("loadingOptions",JSON.stringify(t.loadingOptions))),"string"==typeof t.lang&&(i=function(e){var t,r=null!==(t=P[e])&&void 0!==t?t:e;if(A.includes(r))return r}(t.lang),i&&n.searchParams.set("lang",i)),n.searchParams.set("jsver",null!=="2.0.5-beta.1"?"2.0.5-beta.1":""),(0,b.assert)(t.token,R,'"token" is missing or empty: "'.concat(t.token,'"')),(0,b.assert)(t.signature,R,'"signature" is missing or empty: "'.concat(t.signature,'"')),n.searchParams.set("uuid",this.uuid),this.userUuid&&n.searchParams.set("userUuid",this.userUuid),r.src=n.toString(),[2,r]}))}))},r.prototype.runPreloadHandshake=function(){return c(this,void 0,void 0,(function(){var e,t,r,n,o,i,a,s,c,l=this;return u(this,(function(u){switch(u.label){case 0:return e=this.connectOptions.token,t=this.connectOptions.signature,r=this.connectOptions.fileId,n=(0,p.v4)(),o=!1,i=!1,a=!1,s=null,c=null,[4,new Promise((function(u,d){var f=function(){s&&(clearTimeout(s),s=null),c&&(clearTimeout(c),c=null),window.removeEventListener("message",p)},h=function(){var o,i;null===(i=null===(o=l.element)||void 0===o?void 0:o.contentWindow)||void 0===i||i.postMessage({type:"SDK_PRELOAD_INIT",requestId:n,ts:Date.now(),payload:{token:e,signature:t,fileGuid:r,mode:l.connectOptions.mode}},"*")},p=function(e){var t,r,p=e.data;if(p&&"object"==typeof p&&"string"==typeof p.type){if("SDK_PRELOAD_READY"===p.type&&!o)return o=!0,h(),void(s=setTimeout((function(){h(),c=setTimeout((function(){f(),d(new Error("preload init timeout"))}),l.preloadDoneTimeoutMs)}),l.preloadAckTimeoutMs));if(p.requestId===n)return"SDK_PRELOAD_ACK"===p.type?(i=!0,s&&(clearTimeout(s),s=null),void(c||(c=setTimeout((function(){f(),d(new Error("preload done timeout"))}),l.preloadDoneTimeoutMs)))):"SDK_PRELOAD_DONE"===p.type?(a=!0,f(),void u()):void("SDK_PRELOAD_ERROR"===p.type&&(f(),d(new Error((null===(t=p.error)||void 0===t?void 0:t.message)||(null===(r=p.error)||void 0===r?void 0:r.code)||"preload init failed"))))}};window.addEventListener("message",p),setTimeout((function(){o||i||a||(f(),d(new Error("preload ready timeout")))}),l.preloadReadyTimeoutMs)}))];case 1:return u.sent(),[2]}}))}))},r.prototype.initChannel=function(){var e=this,r=this.channel=new f.OfficeSDKBroadcastChannel({channelId:this.startParams.channelId,debug:this.connectOptions.debug,autoStructuredClone:!0,debugNamespace:"SM_SDK_CHAN"});this.startParams.channelId||(this.startParams.channelId=r.id),r.on("error",(function(t){e.emit("error",t)})),r.on("messageError",(function(t){e.emit("error",t)})),this.sameOrigin||r.on("postMessage",(function(t){var r,n;null===(n=null===(r=e.element)||void 0===r?void 0:r.contentWindow)||void 0===n||n.postMessage(t,"*")}),{audience:"*"}),r.on("message",(function(r){var n=r.data;(null==n?void 0:n.event)===m.InvokeMethod.ReadyState?e.emit(L.ReadyState,n.payload):(null==n?void 0:n.event)===t.EDITOR_RENDERED_EVENT&&e.emit(L.EditorRendered,n.payload)}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.Error,(function(t){e.emit(L.Error,t)}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.SDKInit,(function(){return c(e,void 0,void 0,(function(){var e,t,r=this;return u(this,(function(n){return e={},Object.keys(this.connectOptions).forEach((function(t){if("slashMenu"!==t){var n=r.connectOptions[t];e[t]=n,"function"==typeof n&&(e["has".concat(t[0].toUpperCase()).concat(t.slice(1))]=!0)}})),(t=this.createSerializedSlashMenu())&&(e.slashMenu=t),e.apiAdaptor=this.apiAdaptor,e.apiAdaptorContext=this.apiAdaptorContext,e.emptyPage=this.normalizedEmptyPage,[2,i(i({},e),{uuid:this.uuid})]}))}))}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.DispatchSDKEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return t===E.HEADER_BARS_CHANGED_EVENT&&this.applyHeaderBarsChanged(r[0]),t===C.BRANDING_CHANGED_EVENT&&this.applyBrandingChanged(r[0]),this.emit.apply(this,l([t],r,!1)),[2]}))}))}),{audience:O}),r.addInvokeHandler(E.HEADER_BARS_METHOD.handleCommandClick,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.headerBarsCommandOverrides.get(t))?[2,!1]:[4,e()];case 1:return r.sent(),[2,!0]}}))}))}),{audience:O}),r.addInvokeHandler("slashMenu.handleButtonClick",(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.slashMenuCallbacks.get(t))?(console.error("[slashMenu] callback not found: ".concat(String(t))),[2,!1]):[4,Promise.resolve(e())];case 1:return r.sent(),[2,!0]}}))}))}),{audience:O}),r.addInvokeHandler("editorFacade.handleCallback",(function(t,r){return void 0===r&&(r=[]),c(e,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return"function"!=typeof(e=this.editorFacadeCallbacks.get(t))?(console.error("[editorFacade] callback not found: ".concat(String(t))),[2,void 0]):[4,Promise.resolve(e.apply(void 0,r))];case 1:return[2,n.sent()]}}))}))}),{audience:O}),r.addInvokeHandler(m.InvokeMethod.DispatchEditorEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return"collaboratorsChanged"===t&&this.updateCollaborators(r),function(e){return F.has(e)}(t)&&this.emit(t,r),this.emitter.emit(t,r),[2]}))}))}),{audience:O}),this.bindContainerMethodHandlers(),window.visualViewport?window.visualViewport.addEventListener("resize",this.onViewportResize):window.addEventListener("resize",this.onViewportResize)},r.prototype.bindContainerMethodHandlers=function(){var e=this,t=this.channel;t.addInvokeHandler(m.ContainerMethod.GenerateUrl,(function(t,r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.generateUrl)throw new Error('"'.concat(m.ContainerMethod.GenerateUrl,'" not found'));return[4,Promise.resolve(this.connectOptions.generateUrl(t,r,n))];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.HandleCustomTask,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.handleCustomTask)throw new Error('"'.concat(m.ContainerMethod.HandleCustomTask,'" not found'));return[4,Promise.resolve(this.connectOptions.handleCustomTask(t))];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.OpenLink,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){if("function"!=typeof this.connectOptions.openLink)throw new Error('"'.concat(m.ContainerMethod.OpenLink,'" not found'));return this.connectOptions.openLink(t,r),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetFileInfoFromUrl,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.getFileInfoFromUrl)throw new Error('"'.concat(m.ContainerMethod.GetFileInfoFromUrl,'" not a function'));return[4,this.connectOptions.getFileInfoFromUrl(t)];case 1:return[2,e.sent()]}}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.MentionClickHandlerForMobile,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){if("function"!=typeof this.connectOptions.mentionClickHandlerForMobile)throw new Error('"'.concat(m.ContainerMethod.MentionClickHandlerForMobile,'" not found'));return"object"==typeof t&&null!=t&&(e=this.element.getBoundingClientRect(),t.x+=e.x,t.y+=e.y,t.isMention&&(t.mentionInfo.left+=e.x,t.mentionInfo.top+=e.y)),this.connectOptions.mentionClickHandlerForMobile(t),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetContainerRect,(function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){return[2,this.getContainerRect()]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.ShowToast,(function(t){return c(e,void 0,void 0,(function(){var e,r;return u(this,(function(n){return null===(r=(e=this.connectOptions).showToast)||void 0===r||r.call(e,t),[2]}))}))}),{audience:O}),t.addInvokeHandler(m.ContainerMethod.GetCredentials,(function(){return c(e,void 0,void 0,(function(){var e,t;return u(this,(function(r){switch(r.label){case 0:return[4,null===(t=(e=this.connectOptions).getCredentials)||void 0===t?void 0:t.call(e)];case 1:return[2,r.sent()]}}))}))}),{audience:O})},r.prototype.initHeaderBarsFacade=function(){var e=this;return(0,E.initHeaderBarsFacade)({getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(L.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:O})];case 1:return e.sent(),[2]}}))}))}})},r.prototype.initBrandingFacade=function(){return(0,C.initBrandingFacade)(this.createBrandingHost())},r.prototype.ensureHeaderBarsTitleChangeSubscription=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,E.ensureHeaderBarsTitleChangeSubscription)(this.createHeaderBarsHost())];case 1:return e.sent(),[2]}}))}))},r.prototype.invokeHeaderBars=function(e,t){return c(this,void 0,void 0,(function(){var r;return u(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:O})];case 1:return[2,n.sent()]}}))}))},r.prototype.invokeBranding=function(e,t){return c(this,void 0,void 0,(function(){var r;return u(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:O})];case 1:return[2,n.sent()]}}))}))},r.prototype.syncHeaderBarsCommands=function(e){(0,E.syncHeaderBarsCommands)(this.createHeaderBarsHost(),e)},r.prototype.createHeaderBarsHost=function(){var e=this;return{getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(L.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:O})];case 1:return e.sent(),[2]}}))}))}}},r.prototype.createBrandingHost=function(){var e=this;return{getEditorFooterLogoState:function(){return e.editorFooterLogo},setEditorFooterLogoState:function(t){e.editorFooterLogo=t},invokeBranding:this.invokeBranding.bind(this),emitBrandingError:function(t,r){e.emit(L.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))}}},r.prototype.applyHeaderBarsChanged=function(e){(0,E.applyHeaderBarsChanged)(this.createHeaderBarsHost(),e)},r.prototype.applyBrandingChanged=function(e){(0,C.applyBrandingChanged)(this.createBrandingHost(),e)},r.prototype.syncHeaderBarsVisible=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,E.syncHeaderBarsVisible)(this.createHeaderBarsHost())];case 1:return[2,e.sent()]}}))}))},r.prototype.setHeaderBarsVisible=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,(0,E.setHeaderBarsVisible)(this.createHeaderBarsHost(),e)];case 1:return t.sent(),[2]}}))}))},r.prototype.getHeaderBarsCommandRef=function(e){return(0,E.getHeaderBarsCommandRef)(this.createHeaderBarsHost(),e)},r.prototype.registerEditorFacadeCallback=function(e){var t="editor-facade:".concat((0,p.v4)());return this.editorFacadeCallbacks.set(t,e),t},r.prototype.unregisterEditorFacadeCallback=function(e){this.editorFacadeCallbacks.delete(e)},r.prototype.createEditorFacadeModule=function(e,t){var r=this;return new Proxy(t,{get:function(t,n){if("string"==typeof n&&!x(n))return Object.prototype.hasOwnProperty.call(t,n)?t[n]:function(){for(var t=[],o=0;o<arguments.length;o++)t[o]=arguments[o];return c(r,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(n),t)];case 1:return[2,r.sent()]}}))}))}}})},r.prototype.createValueObjectFacade=function(e,t,r){var n=this;return new Proxy(r,{get:function(r,o){if("string"==typeof o&&!x(o))return Object.prototype.hasOwnProperty.call(r,o)?r[o]:function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];return c(n,void 0,void 0,(function(){return u(this,(function(n){switch(n.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(o),l([t],r,!0))];case 1:return[2,n.sent()]}}))}))}}})},r.prototype.registerEditorFacadeListener=function(e,t){var r=this,n=this.registerEditorFacadeCallback((function(e){return c(r,void 0,void 0,(function(){return u(this,(function(r){return[2,t(e)]}))}))}));return this.invokeEditorFacade(e,[n]).catch((function(e){r.emit(L.Error,e instanceof Error?e:new Error("register editor facade listener failed: ".concat(String(e))))})),function(){r.unregisterEditorFacadeCallback(n)}},r.prototype.installRootFacade=function(){this.clearRootFacade(),Object.assign(this,(0,S.buildRootFacadeState)({fileType:this.fileType,invokeEditorFacade:this.invokeEditorFacade.bind(this),listenEditorEvent:this.listenEditorEvent.bind(this),createEditorFacadeModule:this.createEditorFacadeModule.bind(this),createValueObjectFacade:this.createValueObjectFacade.bind(this),registerEditorFacadeListener:this.registerEditorFacadeListener.bind(this),registerEditorFacadeCallback:this.registerEditorFacadeCallback.bind(this),unregisterEditorFacadeCallback:this.unregisterEditorFacadeCallback.bind(this)}))},r.prototype.clearRootFacade=function(){this.title=void 0,this.history=void 0,this.comments=void 0,this.locks=void 0,this.mention=void 0,this.content=void 0,this.version=void 0,this.presentation=void 0,this.selection=void 0,this.search=void 0,this.outline=void 0,this.sidebar=void 0,this.tables=void 0,this.settings=void 0,this.workbook=void 0,this.activeSheet=void 0,this.charts=void 0,this.selections=void 0,this.slides=void 0,this.text=void 0,this.zoom=void 0,this.eventSubscription=void 0,this.batchChanges=void 0,this.export=void 0,this.print=void 0,this.setFocus=void 0},r.prototype.invokeEditorFacade=function(e,t){return void 0===t&&(t=[]),c(this,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[e,t],{audience:O})];case 1:return[2,r.sent()]}}))}))},r.prototype.listenEditorEvent=function(e,t){var r=this;return this.emitter.on(e,t),this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[e],{audience:O}).catch((function(e){r.emit(L.Error,e instanceof Error?e:new Error("listen editor event failed: ".concat(String(e))))})),function(){r.emitter.off(e,t)}},r.prototype.initEditor=function(){var e=this,t=function(e){return"saveStatusDidChange"===e?"saveStatusChanged":e},r={on:function(r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return r=t(r),this.emitter.on(r,n),[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[r],{audience:O})];case 1:return e.sent(),[2]}}))}))},off:function(r,n){r=t(r),e.emitter.off(r,n)},getCollaborators:function(){return l([],e.collaborators,!0)}},n=function(t){return void 0===t&&(t=[]),new Proxy((function(){}),{get:function(e,o){if("string"!=typeof o||!x(o))return 0===t.length&&Object.prototype.hasOwnProperty.call(r,o)?r[o]:"string"==typeof o&&["call","apply","bind"].includes(o)?e[o]:"string"==typeof o?n(l(l([],t,!0),[o],!1)):void 0},apply:function(r,n,o){if(t.length>0)return e.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[t.join("."),o],{audience:O})}})};return n()},r.prototype.shouldHandleMessage=function(e){return!(e.channelId!==this.channel.id||e.time+this.messageExpires<Date.now()||this.handledMessageCache.has(e.context.messageId))},r.prototype.getContainerRect=function(){var e,t=this.element.getBoundingClientRect(),r={viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,top:t.top,left:t.left,bottom:t.bottom,right:t.right,scrollTop:null===(e=document.scrollingElement)||void 0===e?void 0:e.scrollTop,visualViewport:{}};return window.visualViewport&&(r.visualViewport={width:window.visualViewport.width,height:window.visualViewport.height,offsetLeft:window.visualViewport.offsetLeft,offsetTop:window.visualViewport.offsetTop,pageLeft:window.visualViewport.pageLeft,pageTop:window.visualViewport.pageTop,scale:window.visualViewport.scale}),r},r.prototype.updateCollaborators=function(e){if(e&&"object"==typeof e&&Array.isArray(e.collaborators)){var t=e;this.collaborators=l([],t.collaborators,!0)}},r}(v.TinyEmitter);function R(e){return"string"==typeof e&&e.trim().length>0}t.OfficeSDK=T;var L,F=new Set(["emptyPageShown","emptyPageAction","emptyPageHidden"]);!function(e){e.SDKInit="SDKInit",e.Error="error",e.ReadyState="readyState",e.EditorRendered="editorRendered",e.EditorEvent="editorEvent"}(L=t.Event||(t.Event={})),t.EDITOR_RENDERED_EVENT="editorRendered"},9368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assert=void 0,t.assert=function(e,t,r){if(t(e))return e;throw new Error(r)}},5098:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.connect=void 0;var i=r(4780);t.connect=function(e){return n(this,void 0,void 0,(function(){var t,r;return o(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,(t=new i.OfficeSDK(e)).init()];case 1:return n.sent(),[2,t];case 2:throw r=n.sent(),console.log("Failed to init OfficeSDK",{error:r,options:e}),r;case 3:return[2]}}))}))}},8156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t},a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.START_PARAMS_FIELD=t.Flowchart=t.Form=t.Table=t.Presentation=t.Spreadsheet=t.Document=t.DocumentPro=t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0;var s=i(r(1810));t.DocumentPro=s;var c=i(r(9105));t.Document=c;var u=i(r(8724));t.Spreadsheet=u;var l=i(r(1260));t.Presentation=l;var d=i(r(7642));t.Table=d;var f=i(r(6954));t.Form=f;var h=i(r(4054));t.Flowchart=h,a(r(4057),t),a(r(5098),t),a(r(4780),t);var p=r(2560);Object.defineProperty(t,"ALL_EMPTY_PAGE_SCENES",{enumerable:!0,get:function(){return p.ALL_EMPTY_PAGE_SCENES}}),Object.defineProperty(t,"normalizeEmptyPageOptions",{enumerable:!0,get:function(){return p.normalizeEmptyPageOptions}}),t.START_PARAMS_FIELD="smParams"},9105:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2560:function(e,t){"use strict";var r=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};function n(e){if(!Array.isArray(e))return r([],t.ALL_EMPTY_PAGE_SCENES,!0);for(var n=[],o=0,i=e;o<i.length;o++){var a=i[o];t.ALL_EMPTY_PAGE_SCENES.includes(a)&&n.push(a)}return 0===n.length?r([],t.ALL_EMPTY_PAGE_SCENES,!0):n}function o(e){return"show-immediately"===e?"show-immediately":"refresh-first"}function i(e){return"string"==typeof e&&e.length>0?e:void 0}function a(e){if(e&&"object"==typeof e){var t=i(e.label);if(t)return{label:t}}}function s(e){if(e&&"object"==typeof e){var t={},r=i(e.title);r&&(t.title=r);var n=i(e.description);n&&(t.description=n);var o=a(e.primary);o&&(t.primary=o);var s=a(e.secondary);if(s&&(t.secondary=s),void 0!==t.title||void 0!==t.description||void 0!==t.primary||void 0!==t.secondary)return t}}function c(e){if(!e||"object"!=typeof e)return{};for(var r={},n=0,o=t.ALL_EMPTY_PAGE_SCENES;n<o.length;n++){var i=o[n],a=s(e[i]);a&&(r[i]=a)}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0,t.ALL_EMPTY_PAGE_SCENES=["file-open-failed","no-permission","network-error","token-expired"],t.normalizeEmptyPageOptions=function(e){return!1===e?{enabled:!1,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:!0===e||void 0===e?{enabled:!0,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:{enabled:"boolean"!=typeof e.enabled||e.enabled,scenes:n(e.scenes),tokenExpiredStrategy:o(e.tokenExpiredStrategy),overrides:c(e.overrides)}}},4054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6954:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1260:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7642:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},611:(e,t,r)=>{"use strict";var n;r.r(t),r.d(t,{NIL:()=>x,parse:()=>g,stringify:()=>l,v1:()=>v,v3:()=>O,v4:()=>k,v5:()=>M,validate:()=>s,version:()=>T});var o=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(o)}const a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,s=function(e){return"string"==typeof e&&a.test(e)};for(var c=[],u=0;u<256;++u)c.push((u+256).toString(16).substr(1));const l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!s(r))throw TypeError("Stringified UUID is invalid");return r};var d,f,h=0,p=0;const v=function(e,t,r){var n=t&&r||0,o=t||new Array(16),a=(e=e||{}).node||d,s=void 0!==e.clockseq?e.clockseq:f;if(null==a||null==s){var c=e.random||(e.rng||i)();null==a&&(a=d=[1|c[0],c[1],c[2],c[3],c[4],c[5]]),null==s&&(s=f=16383&(c[6]<<8|c[7]))}var u=void 0!==e.msecs?e.msecs:Date.now(),v=void 0!==e.nsecs?e.nsecs:p+1,g=u-h+(v-p)/1e4;if(g<0&&void 0===e.clockseq&&(s=s+1&16383),(g<0||u>h)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");h=u,p=v,f=s;var m=(1e4*(268435455&(u+=122192928e5))+v)%4294967296;o[n++]=m>>>24&255,o[n++]=m>>>16&255,o[n++]=m>>>8&255,o[n++]=255&m;var y=u/4294967296*1e4&268435455;o[n++]=y>>>8&255,o[n++]=255&y,o[n++]=y>>>24&15|16,o[n++]=y>>>16&255,o[n++]=s>>>8|128,o[n++]=255&s;for(var b=0;b<6;++b)o[n+b]=a[b];return t||l(o)},g=function(e){if(!s(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};function m(e,t,r){function n(e,n,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof n&&(n=g(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var a=new Uint8Array(16+e.length);if(a.set(n),a.set(e,n.length),(a=r(a))[6]=15&a[6]|t,a[8]=63&a[8]|128,o){i=i||0;for(var s=0;s<16;++s)o[i+s]=a[s];return o}return l(a)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function y(e){return 14+(e+64>>>9<<4)+1}function b(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function w(e,t,r,n,o,i){return b((a=b(b(t,e),b(n,i)))<<(s=o)|a>>>32-s,r);var a,s}function E(e,t,r,n,o,i,a){return w(t&r|~t&n,e,t,o,i,a)}function C(e,t,r,n,o,i,a){return w(t&n|r&~n,e,t,o,i,a)}function S(e,t,r,n,o,i,a){return w(t^r^n,e,t,o,i,a)}function _(e,t,r,n,o,i,a){return w(r^(t|~n),e,t,o,i,a)}const O=m("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,n="0123456789abcdef",o=0;o<r;o+=8){var i=e[o>>5]>>>o%32&255,a=parseInt(n.charAt(i>>>4&15)+n.charAt(15&i),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[y(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,i=271733878,a=0;a<e.length;a+=16){var s=r,c=n,u=o,l=i;r=E(r,n,o,i,e[a],7,-680876936),i=E(i,r,n,o,e[a+1],12,-389564586),o=E(o,i,r,n,e[a+2],17,606105819),n=E(n,o,i,r,e[a+3],22,-1044525330),r=E(r,n,o,i,e[a+4],7,-176418897),i=E(i,r,n,o,e[a+5],12,1200080426),o=E(o,i,r,n,e[a+6],17,-1473231341),n=E(n,o,i,r,e[a+7],22,-45705983),r=E(r,n,o,i,e[a+8],7,1770035416),i=E(i,r,n,o,e[a+9],12,-1958414417),o=E(o,i,r,n,e[a+10],17,-42063),n=E(n,o,i,r,e[a+11],22,-1990404162),r=E(r,n,o,i,e[a+12],7,1804603682),i=E(i,r,n,o,e[a+13],12,-40341101),o=E(o,i,r,n,e[a+14],17,-1502002290),r=C(r,n=E(n,o,i,r,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=C(i,r,n,o,e[a+6],9,-1069501632),o=C(o,i,r,n,e[a+11],14,643717713),n=C(n,o,i,r,e[a],20,-373897302),r=C(r,n,o,i,e[a+5],5,-701558691),i=C(i,r,n,o,e[a+10],9,38016083),o=C(o,i,r,n,e[a+15],14,-660478335),n=C(n,o,i,r,e[a+4],20,-405537848),r=C(r,n,o,i,e[a+9],5,568446438),i=C(i,r,n,o,e[a+14],9,-1019803690),o=C(o,i,r,n,e[a+3],14,-187363961),n=C(n,o,i,r,e[a+8],20,1163531501),r=C(r,n,o,i,e[a+13],5,-1444681467),i=C(i,r,n,o,e[a+2],9,-51403784),o=C(o,i,r,n,e[a+7],14,1735328473),r=S(r,n=C(n,o,i,r,e[a+12],20,-1926607734),o,i,e[a+5],4,-378558),i=S(i,r,n,o,e[a+8],11,-2022574463),o=S(o,i,r,n,e[a+11],16,1839030562),n=S(n,o,i,r,e[a+14],23,-35309556),r=S(r,n,o,i,e[a+1],4,-1530992060),i=S(i,r,n,o,e[a+4],11,1272893353),o=S(o,i,r,n,e[a+7],16,-155497632),n=S(n,o,i,r,e[a+10],23,-1094730640),r=S(r,n,o,i,e[a+13],4,681279174),i=S(i,r,n,o,e[a],11,-358537222),o=S(o,i,r,n,e[a+3],16,-722521979),n=S(n,o,i,r,e[a+6],23,76029189),r=S(r,n,o,i,e[a+9],4,-640364487),i=S(i,r,n,o,e[a+12],11,-421815835),o=S(o,i,r,n,e[a+15],16,530742520),r=_(r,n=S(n,o,i,r,e[a+2],23,-995338651),o,i,e[a],6,-198630844),i=_(i,r,n,o,e[a+7],10,1126891415),o=_(o,i,r,n,e[a+14],15,-1416354905),n=_(n,o,i,r,e[a+5],21,-57434055),r=_(r,n,o,i,e[a+12],6,1700485571),i=_(i,r,n,o,e[a+3],10,-1894986606),o=_(o,i,r,n,e[a+10],15,-1051523),n=_(n,o,i,r,e[a+1],21,-2054922799),r=_(r,n,o,i,e[a+8],6,1873313359),i=_(i,r,n,o,e[a+15],10,-30611744),o=_(o,i,r,n,e[a+6],15,-1560198380),n=_(n,o,i,r,e[a+13],21,1309151649),r=_(r,n,o,i,e[a+4],6,-145523070),i=_(i,r,n,o,e[a+11],10,-1120210379),o=_(o,i,r,n,e[a+2],15,718787259),n=_(n,o,i,r,e[a+9],21,-343485551),r=b(r,s),n=b(n,c),o=b(o,u),i=b(i,l)}return[r,n,o,i]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(y(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length))})),k=function(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)};function P(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function A(e,t){return e<<t|e>>>32-t}const M=m("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,a=Math.ceil(i/16),s=new Array(a),c=0;c<a;++c){for(var u=new Uint32Array(16),l=0;l<16;++l)u[l]=e[64*c+4*l]<<24|e[64*c+4*l+1]<<16|e[64*c+4*l+2]<<8|e[64*c+4*l+3];s[c]=u}s[a-1][14]=8*(e.length-1)/Math.pow(2,32),s[a-1][14]=Math.floor(s[a-1][14]),s[a-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<a;++d){for(var f=new Uint32Array(80),h=0;h<16;++h)f[h]=s[d][h];for(var p=16;p<80;++p)f[p]=A(f[p-3]^f[p-8]^f[p-14]^f[p-16],1);for(var v=r[0],g=r[1],m=r[2],y=r[3],b=r[4],w=0;w<80;++w){var E=Math.floor(w/20),C=A(v,5)+P(E,g,m,y)+b+t[E]+f[w]>>>0;b=y,y=m,m=A(g,30)>>>0,g=v,v=C}r[0]=r[0]+v>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+b>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]})),x="00000000-0000-0000-0000-000000000000",T=function(e){if(!s(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}},3836:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3931:function(e,t){"use strict";var r,n,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.convertFileType=t.FileTypeAlias=t.FileType=void 0,function(e){e.DocumentPro="documentPro",e.Document="document",e.Spreadsheet="spreadsheet",e.Presentation="presentation",e.Table="table",e.Form="form",e.Flowchart="flowchart",e.Mindmap="mindmap",e.Board="board",e.Unknown="unknown"}(n=t.FileType||(t.FileType={})),t.FileTypeAlias=((r={})[n.Document]="docs",r[n.DocumentPro]="docx",r[n.Spreadsheet]="sheets",r[n.Presentation]="presentation",r[n.Table]="table",r[n.Form]="form",r[n.Mindmap]="mindmap",r[n.Board]="board",r[n.Flowchart]="flowchart",r),t.convertFileType=function(e){var r,a,s,c;if("string"==typeof e){try{for(var u=o(Object.entries(n)),l=u.next();!l.done;l=u.next()){var d=i(l.value,2),f=d[0],h=d[1];if(f===e||h===e)return h}}catch(e){r={error:e}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}try{for(var p=o(Object.entries(t.FileTypeAlias)),v=p.next();!v.done;v=p.next()){var g=i(v.value,2);if(f=g[0],(h=g[1])===e)return f}}catch(e){s={error:e}}finally{try{v&&!v.done&&(c=p.return)&&c.call(p)}finally{if(s)throw s.error}}}else switch(e){case-2:return n.Document;case-4:return n.Spreadsheet;case-6:return n.DocumentPro;case-7:return n.Mindmap;case-8:return n.Form;case-9:return n.Board;case-10:return n.Presentation;case-11:return n.Table;case-13:return n.Flowchart}return n.Unknown}},5313:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ReadyState=t.isSDKEventMessage=t.SDKEvent=void 0,t.SDKEvent=Object.freeze({ViewportResize:"ViewportResize",ReadyState:"ReadyState"}),t.isSDKEventMessage=function(e){var r;return null!=e&&(r=e.event),"string"==typeof r&&r in t.SDKEvent},(r=t.ReadyState||(t.ReadyState={})).Loading="loading",r.LoadingEditor="loadingEditor",r.Ready="ready",r.Failed="failed",r.Disconnected="disconnected"},4057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(3672),t),o(r(3836),t),o(r(3931),t),o(r(5313),t)},3672:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.UrlSharingType=t.SpreadsheetSharingFrom=t.ContainerMethod=t.InvokeMethod=void 0,(i=t.InvokeMethod||(t.InvokeMethod={})).SDKInit="SDKInit",i.Error="error",i.ReadyState="readyState",i.SetCredentials="setCredentials",i.InvokeContainerMethod="invokeContainerMethod",i.InvokeEditorMethod="invokeEditorMethod",i.DispatchSDKEvent="dispatchSDKEvent",i.DispatchEditorEvent="dispatchEditorEvent",i.ListenEditorEvent="listenEditorEvent",i.RequestPerformanceEntries="requestPerformanceEntries",(o=t.ContainerMethod||(t.ContainerMethod={})).GetContainerRect="getContainerRect",o.OpenLink="openLink",o.GenerateUrl="generateUrl",o.MentionClickHandlerForMobile="mentionClickHandlerForMobile",o.GetFileInfoFromUrl="getFileInfoFromUrl",o.ShowSignatureComponent="showSignatureComponent",o.ShowToast="showToast",o.HandleCustomTask="handleCustomTask",o.GetCredentials="getCredentials",(n=t.SpreadsheetSharingFrom||(t.SpreadsheetSharingFrom={})).copyRangeLink="copyRangeLink",n.copyViewportLink="copyViewportLink",n.copySheetLink="copySheetLink",n.importRange="importRange",n.preview="preview",(r=t.UrlSharingType||(t.UrlSharingType={})).Doc="doc",r.Docx="docx",r.Spreadsheet="sheet",r.Form="form",r.FormPreview="formPreview",r.FormFill="formFill",r.Presentation="presentation",r.Table="table",r.Flowchart="flowchart",r.Mindmap="mindmap",r.Board="board"},6877:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StartParams=void 0;var o=n(r(4139)),i=n(r(1121)).default.createInstance(),a=function(){function e(t){if("string"==typeof t)return e.parse(t);if((0,o.default)(t))Object.assign(this,t);else if(t instanceof e)Object.assign(this,JSON.parse(JSON.stringify(t)));else if(Array.isArray(t))for(var r=0,n=t;r<n.length;r++){var i=n[r];"string"==typeof i?Object.assign(this,e.parse(i)):null!=i&&Object.assign(this,JSON.parse(JSON.stringify(i)))}null==this.fileGuid&&null!=this.guid&&(this.fileGuid=this.guid),null!=this.guid&&this.fileGuid!==this.guid&&(this.guid=this.fileGuid)}return e.parse=function(t){return new e(JSON.parse(i.decodeStr(t)))},e.prototype.toString=function(){return i.encodeStr(JSON.stringify(this))},e}();t.StartParams=a},4339:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(6877),t)},4139:e=>{"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},6343:(e,t,r)=>{"use strict";var n=r(6612);e.exports=n},1015:(e,t,r)=>{"use strict";var n=r(8418);e.exports=n},780:(e,t,r)=>{"use strict";var n=r(2473);r(7628),r(3799),e.exports=n},5448:(e,t,r)=>{"use strict";var n=r(2841);e.exports=n},3609:(e,t,r)=>{"use strict";r(4423);var n=r(7015);e.exports=n("Array","includes")},8473:(e,t,r)=>{"use strict";r(9085);var n=r(9167);e.exports=n.Object.assign},6398:(e,t,r)=>{"use strict";r(67),r(3792),r(6099),r(3362),r(6167),r(3518),r(1689),r(4628),r(9391),r(7764);var n=r(9167);e.exports=n.Promise},2288:(e,t,r)=>{"use strict";e.exports=r(5914)},7782:(e,t,r)=>{"use strict";e.exports=r(6008)},5781:(e,t,r)=>{"use strict";e.exports=r(911)},2701:(e,t,r)=>{"use strict";e.exports=r(8255)},5914:(e,t,r)=>{"use strict";var n=r(6343);e.exports=n},6008:(e,t,r)=>{"use strict";var n=r(1015);e.exports=n},911:(e,t,r)=>{"use strict";var n=r(780);r(9806),r(5874),r(7575),e.exports=n},8255:(e,t,r)=>{"use strict";var n=r(5448);e.exports=n},9306:(e,t,r)=>{"use strict";var n=r(4901),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a function")}},5548:(e,t,r)=>{"use strict";var n=r(3517),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a constructor")}},3506:(e,t,r)=>{"use strict";var n=r(3925),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},6469:(e,t,r)=>{"use strict";var n=r(8227),o=r(2360),i=r(4913).f,a=n("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),e.exports=function(e){s[a][e]=!0}},679:(e,t,r)=>{"use strict";var n=r(1625),o=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new o("Incorrect invocation")}},8551:(e,t,r)=>{"use strict";var n=r(34),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not an object")}},7916:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8981),a=r(6319),s=r(4209),c=r(3517),u=r(6198),l=r(2278),d=r(81),f=r(851),h=Array;e.exports=function(e){var t=i(e),r=c(this),p=arguments.length,v=p>1?arguments[1]:void 0,g=void 0!==v;g&&(v=n(v,p>2?arguments[2]:void 0));var m,y,b,w,E,C,S=f(t),_=0;if(!S||this===h&&s(S))for(m=u(t),y=r?new this(m):h(m);m>_;_++)C=g?v(t[_],_):t[_],l(y,_,C);else for(y=r?new this:[],E=(w=d(t,S)).next;!(b=o(E,w)).done;_++)C=g?a(w,v,[b.value,_],!0):b.value,l(y,_,C);return y.length=_,y}},9617:(e,t,r)=>{"use strict";var n=r(5397),o=r(5610),i=r(6198),a=function(e){return function(t,r,a){var s=n(t),c=i(s);if(0===c)return!e&&-1;var u,l=o(a,c);if(e&&r!=r){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7680:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n([].slice)},4488:(e,t,r)=>{"use strict";var n=r(7680),o=Math.floor,i=function(e,t){var r=e.length;if(r<8)for(var a,s,c=1;c<r;){for(s=c,a=e[c];s&&t(e[s-1],a)>0;)e[s]=e[--s];s!==c++&&(e[s]=a)}else for(var u=o(r/2),l=i(n(e,0,u),t),d=i(n(e,u),t),f=l.length,h=d.length,p=0,v=0;p<f||v<h;)e[p+v]=p<f&&v<h?t(l[p],d[v])<=0?l[p++]:d[v++]:p<f?l[p++]:d[v++];return e};e.exports=i},6319:(e,t,r)=>{"use strict";var n=r(8551),o=r(9539);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},4428:(e,t,r)=>{"use strict";var n=r(8227)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!o)return!1}catch(e){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},2195:(e,t,r)=>{"use strict";var n=r(9504),o=n({}.toString),i=n("".slice);e.exports=function(e){return i(o(e),8,-1)}},6955:(e,t,r)=>{"use strict";var n=r(2140),o=r(4901),i=r(2195),a=r(8227)("toStringTag"),s=Object,c="Arguments"===i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?r:c?i(t):"Object"===(n=i(t))&&o(t.callee)?"Arguments":n}},7740:(e,t,r)=>{"use strict";var n=r(9297),o=r(5031),i=r(7347),a=r(4913);e.exports=function(e,t,r){for(var s=o(t),c=a.f,u=i.f,l=0;l<s.length;l++){var d=s[l];n(e,d)||r&&n(r,d)||c(e,d,u(t,d))}}},2211:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},2529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},6699:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=n?function(e,t,r){return o.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},2278:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=function(e,t,r){n?o.f(e,t,i(0,r)):e[t]=r}},2106:(e,t,r)=>{"use strict";var n=r(283),o=r(4913);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),o.f(e,t,r)}},6840:(e,t,r)=>{"use strict";var n=r(4901),o=r(4913),i=r(283),a=r(9433);e.exports=function(e,t,r,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:t;if(n(r)&&i(r,u,s),s.global)c?e[t]=r:a(t,r);else{try{s.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:o.f(e,t,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},6279:(e,t,r)=>{"use strict";var n=r(6840);e.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},9433:(e,t,r)=>{"use strict";var n=r(4576),o=Object.defineProperty;e.exports=function(e,t){try{o(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},3724:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,r)=>{"use strict";var n=r(4576),o=r(34),i=n.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},7400:e=>{"use strict";e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},9296:(e,t,r)=>{"use strict";var n=r(4055)("span").classList,o=n&&n.constructor&&n.constructor.prototype;e.exports=o===Object.prototype?void 0:o},7015:(e,t,r)=>{"use strict";var n=r(4576),o=r(9504);e.exports=function(e,t){return o(n[e].prototype[t])}},8727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},4265:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},9544:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},8574:(e,t,r)=>{"use strict";var n=r(4215);e.exports="NODE"===n},7860:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/web0s(?!.*chrome)/i.test(n)},2839:(e,t,r)=>{"use strict";var n=r(4576).navigator,o=n&&n.userAgent;e.exports=o?String(o):""},9519:(e,t,r)=>{"use strict";var n,o,i=r(4576),a=r(2839),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(o=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},4215:(e,t,r)=>{"use strict";var n=r(4576),o=r(2839),i=r(2195),a=function(e){return o.slice(0,e.length)===e};e.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6193:(e,t,r)=>{"use strict";var n=r(9504),o=Error,i=n("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,c=s.test(a);e.exports=function(e,t){if(c&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},747:(e,t,r)=>{"use strict";var n=r(6699),o=r(6193),i=r(4659),a=Error.captureStackTrace;e.exports=function(e,t,r,s){i&&(a?a(e,t):n(e,"stack",o(r,s)))}},4659:(e,t,r)=>{"use strict";var n=r(9039),o=r(6980);e.exports=!n((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},6518:(e,t,r)=>{"use strict";var n=r(4576),o=r(7347).f,i=r(6699),a=r(6840),s=r(9433),c=r(7740),u=r(2796);e.exports=function(e,t){var r,l,d,f,h,p=e.target,v=e.global,g=e.stat;if(r=v?n:g?n[p]||s(p,{}):n[p]&&n[p].prototype)for(l in t){if(f=t[l],d=e.dontCallGetSet?(h=o(r,l))&&h.value:r[l],!u(v?l:p+(g?".":"#")+l,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;c(f,d)}(e.sham||d&&d.sham)&&i(f,"sham",!0),a(r,l,f,e)}}},9039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},8745:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(i):function(){return a.apply(i,arguments)})},6080:(e,t,r)=>{"use strict";var n=r(7476),o=r(9306),i=r(616),a=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:i?a(e,t):function(){return e.apply(t,arguments)}}},616:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},350:(e,t,r)=>{"use strict";var n=r(3724),o=r(9297),i=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},6706:(e,t,r)=>{"use strict";var n=r(9504),o=r(9306);e.exports=function(e,t,r){try{return n(o(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},7476:(e,t,r)=>{"use strict";var n=r(2195),o=r(9504);e.exports=function(e){if("Function"===n(e))return o(e)}},9504:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.call,a=n&&o.bind.bind(i,i);e.exports=n?a:function(e){return function(){return i.apply(e,arguments)}}},7751:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901);e.exports=function(e,t){return arguments.length<2?(r=n[e],o(r)?r:void 0):n[e]&&n[e][t];var r}},851:(e,t,r)=>{"use strict";var n=r(6955),o=r(5966),i=r(4117),a=r(6269),s=r(8227)("iterator");e.exports=function(e){if(!i(e))return o(e,s)||o(e,"@@iterator")||a[n(e)]}},81:(e,t,r)=>{"use strict";var n=r(9565),o=r(9306),i=r(8551),a=r(6823),s=r(851),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(o(r))return i(n(r,e));throw new c(a(e)+" is not iterable")}},5966:(e,t,r)=>{"use strict";var n=r(9306),o=r(4117);e.exports=function(e,t){var r=e[t];return o(r)?void 0:n(r)}},4576:function(e,t,r){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,r)=>{"use strict";var n=r(9504),o=r(8981),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},421:e=>{"use strict";e.exports={}},3138:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},397:(e,t,r)=>{"use strict";var n=r(7751);e.exports=n("document","documentElement")},5917:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039),i=r(4055);e.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(2195),a=Object,s=n("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},3706:(e,t,r)=>{"use strict";var n=r(9504),o=r(4901),i=r(7629),a=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},7584:(e,t,r)=>{"use strict";var n=r(34),o=r(6699);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},1181:(e,t,r)=>{"use strict";var n,o,i,a=r(8622),s=r(4576),c=r(34),u=r(6699),l=r(9297),d=r(7629),f=r(6119),h=r(421),p="Object already initialized",v=s.TypeError,g=s.WeakMap;if(a||d.state){var m=d.state||(d.state=new g);m.get=m.get,m.has=m.has,m.set=m.set,n=function(e,t){if(m.has(e))throw new v(p);return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var y=f("state");h[y]=!0,n=function(e,t){if(l(e,y))throw new v(p);return t.facade=e,u(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:n,get:o,has:i,enforce:function(e){return i(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return r}}}},4209:(e,t,r)=>{"use strict";var n=r(8227),o=r(6269),i=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},4901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},3517:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(6955),s=r(7751),c=r(3706),u=function(){},l=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.test(u),p=function(e){if(!i(e))return!1;try{return l(u,[],e),!0}catch(e){return!1}},v=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};v.sham=!0,e.exports=!l||o((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?v:p},2796:(e,t,r)=>{"use strict";var n=r(9039),o=r(4901),i=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r===l||r!==u&&(o(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},4117:e=>{"use strict";e.exports=function(e){return null==e}},34:(e,t,r)=>{"use strict";var n=r(4901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},3925:(e,t,r)=>{"use strict";var n=r(34);e.exports=function(e){return n(e)||null===e}},6395:e=>{"use strict";e.exports=!1},757:(e,t,r)=>{"use strict";var n=r(7751),o=r(4901),i=r(1625),a=r(7040),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return o(t)&&i(t.prototype,s(e))}},2652:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8551),a=r(6823),s=r(4209),c=r(6198),u=r(1625),l=r(81),d=r(851),f=r(9539),h=TypeError,p=function(e,t){this.stopped=e,this.result=t},v=p.prototype;e.exports=function(e,t,r){var g,m,y,b,w,E,C,S=r&&r.that,_=!(!r||!r.AS_ENTRIES),O=!(!r||!r.IS_RECORD),k=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),A=n(t,S),M=function(e){return g&&f(g,"normal",e),new p(!0,e)},x=function(e){return _?(i(e),P?A(e[0],e[1],M):A(e[0],e[1])):P?A(e,M):A(e)};if(O)g=e.iterator;else if(k)g=e;else{if(!(m=d(e)))throw new h(a(e)+" is not iterable");if(s(m)){for(y=0,b=c(e);b>y;y++)if((w=x(e[y]))&&u(v,w))return w;return new p(!1)}g=l(e,m)}for(E=O?e.next:g.next;!(C=o(E,g)).done;){try{w=x(C.value)}catch(e){f(g,"throw",e)}if("object"==typeof w&&w&&u(v,w))return w}return new p(!1)}},9539:(e,t,r)=>{"use strict";var n=r(9565),o=r(8551),i=r(5966);e.exports=function(e,t,r){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return o(a),r}},3994:(e,t,r)=>{"use strict";var n=r(7657).IteratorPrototype,o=r(2360),i=r(6980),a=r(687),s=r(6269),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=o(n,{next:i(+!u,r)}),a(e,l,!1,!0),s[l]=c,e}},1088:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(6395),a=r(350),s=r(4901),c=r(3994),u=r(2787),l=r(2967),d=r(687),f=r(6699),h=r(6840),p=r(8227),v=r(6269),g=r(7657),m=a.PROPER,y=a.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=p("iterator"),C="keys",S="values",_="entries",O=function(){return this};e.exports=function(e,t,r,a,p,g,k){c(r,t,a);var P,A,M,x=function(e){if(e===p&&j)return j;if(!w&&e&&e in L)return L[e];switch(e){case C:case S:case _:return function(){return new r(this,e)}}return function(){return new r(this)}},T=t+" Iterator",R=!1,L=e.prototype,F=L[E]||L["@@iterator"]||p&&L[p],j=!w&&F||x(p),I="Array"===t&&L.entries||F;if(I&&(P=u(I.call(new e)))!==Object.prototype&&P.next&&(i||u(P)===b||(l?l(P,b):s(P[E])||h(P,E,O)),d(P,T,!0,!0),i&&(v[T]=O)),m&&p===S&&F&&F.name!==S&&(!i&&y?f(L,"name",S):(R=!0,j=function(){return o(F,this)})),p)if(A={values:x(S),keys:g?j:x(C),entries:x(_)},k)for(M in A)(w||R||!(M in L))&&h(L,M,A[M]);else n({target:t,proto:!0,forced:w||R},A);return i&&!k||L[E]===j||h(L,E,j,{name:p}),v[t]=j,A}},7657:(e,t,r)=>{"use strict";var n,o,i,a=r(9039),s=r(4901),c=r(34),u=r(2360),l=r(2787),d=r(6840),f=r(8227),h=r(6395),p=f("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=l(l(i)))!==Object.prototype&&(n=o):v=!0),!c(n)||a((function(){var e={};return n[p].call(e)!==e}))?n={}:h&&(n=u(n)),s(n[p])||d(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},6269:e=>{"use strict";e.exports={}},6198:(e,t,r)=>{"use strict";var n=r(8014);e.exports=function(e){return n(e.length)}},283:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(9297),s=r(3724),c=r(350).CONFIGURABLE,u=r(3706),l=r(1181),d=l.enforce,f=l.get,h=String,p=Object.defineProperty,v=n("".slice),g=n("".replace),m=n([].join),y=s&&!o((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=e.exports=function(e,t,r){"Symbol("===v(h(t),0,7)&&(t="["+g(h(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&(s?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&a(r,"arity")&&e.length!==r.arity&&p(e,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?s&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=d(e);return a(n,"source")||(n.source=m(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&f(this).source||u(this)}),"toString")},741:e=>{"use strict";var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},1955:(e,t,r)=>{"use strict";var n,o,i,a,s,c=r(4576),u=r(3389),l=r(6080),d=r(9225).set,f=r(8265),h=r(9544),p=r(4265),v=r(7860),g=r(8574),m=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,E=u("queueMicrotask");if(!E){var C=new f,S=function(){var e,t;for(g&&(e=b.domain)&&e.exit();t=C.get();)try{t()}catch(e){throw C.head&&n(),e}e&&e.enter()};h||g||v||!m||!y?!p&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=l(a.then,a),n=function(){s(S)}):g?n=function(){b.nextTick(S)}:(d=l(d,c),n=function(){d(S)}):(o=!0,i=y.createTextNode(""),new m(S).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),E=function(e){C.head||n(),C.add(e)}}e.exports=E},6043:(e,t,r)=>{"use strict";var n=r(9306),o=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new o("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},2603:(e,t,r)=>{"use strict";var n=r(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},4213:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(9565),a=r(9039),s=r(1072),c=r(3717),u=r(8773),l=r(8981),d=r(7055),f=Object.assign,h=Object.defineProperty,p=o([].concat);e.exports=!f||a((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!==f({},e)[r]||s(f({},t)).join("")!==o}))?function(e,t){for(var r=l(e),o=arguments.length,a=1,f=c.f,h=u.f;o>a;)for(var v,g=d(arguments[a++]),m=f?p(s(g),f(g)):s(g),y=m.length,b=0;y>b;)v=m[b++],n&&!i(h,g,v)||(r[v]=g[v]);return r}:f},2360:(e,t,r)=>{"use strict";var n,o=r(8551),i=r(6801),a=r(8727),s=r(421),c=r(397),u=r(4055),l=r(6119),d="prototype",f="script",h=l("IE_PROTO"),p=function(){},v=function(e){return"<"+f+">"+e+"</"+f+">"},g=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m="undefined"!=typeof document?document.domain&&n?g(n):(t=u("iframe"),r="java"+f+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):g(n);for(var o=a.length;o--;)delete m[d][a[o]];return m()};s[h]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[d]=o(e),r=new p,p[d]=null,r[h]=e):r=m(),void 0===t?r:i.f(r,t)}},6801:(e,t,r)=>{"use strict";var n=r(3724),o=r(8686),i=r(4913),a=r(8551),s=r(5397),c=r(1072);t.f=n&&!o?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),o=c(t),u=o.length,l=0;u>l;)i.f(e,r=o[l++],n[r]);return e}},4913:(e,t,r)=>{"use strict";var n=r(3724),o=r(5917),i=r(8686),a=r(8551),s=r(6969),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=n?i?function(e,t,r){if(a(e),t=s(t),a(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=l(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(a(e),t=s(t),a(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},7347:(e,t,r)=>{"use strict";var n=r(3724),o=r(9565),i=r(8773),a=r(6980),s=r(5397),c=r(6969),u=r(9297),l=r(5917),d=Object.getOwnPropertyDescriptor;t.f=n?d:function(e,t){if(e=s(e),t=c(t),l)try{return d(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},8480:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},3717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},2787:(e,t,r)=>{"use strict";var n=r(9297),o=r(4901),i=r(8981),a=r(6119),s=r(2211),c=a("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},1625:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n({}.isPrototypeOf)},1828:(e,t,r)=>{"use strict";var n=r(9504),o=r(9297),i=r(5397),a=r(9617).indexOf,s=r(421),c=n([].push);e.exports=function(e,t){var r,n=i(e),u=0,l=[];for(r in n)!o(s,r)&&o(n,r)&&c(l,r);for(;t.length>u;)o(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},1072:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727);e.exports=Object.keys||function(e){return n(e,o)}},8773:(e,t)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!r.call({1:2},1);t.f=o?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},2967:(e,t,r)=>{"use strict";var n=r(6706),o=r(34),i=r(7750),a=r(3506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),a(n),o(r)?(t?e(r,n):r.__proto__=n,r):r}}():void 0)},3179:(e,t,r)=>{"use strict";var n=r(2140),o=r(6955);e.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},4270:(e,t,r)=>{"use strict";var n=r(9565),o=r(4901),i=r(34),a=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&o(r=e.toString)&&!i(s=n(r,e)))return s;if(o(r=e.valueOf)&&!i(s=n(r,e)))return s;if("string"!==t&&o(r=e.toString)&&!i(s=n(r,e)))return s;throw new a("Can't convert object to primitive value")}},5031:(e,t,r)=>{"use strict";var n=r(7751),o=r(9504),i=r(8480),a=r(3717),s=r(8551),c=o([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(s(e)),r=a.f;return r?c(t,r(e)):t}},9167:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},916:(e,t,r)=>{"use strict";var n=r(4576),o=r(550),i=r(4901),a=r(2796),s=r(3706),c=r(8227),u=r(4215),l=r(6395),d=r(9519),f=o&&o.prototype,h=c("species"),p=!1,v=i(n.PromiseRejectionEvent),g=a("Promise",(function(){var e=s(o),t=e!==String(o);if(!t&&66===d)return!0;if(l&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new o((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[h]=n,!(p=r.then((function(){}))instanceof n))return!0}return!(t||"BROWSER"!==u&&"DENO"!==u||v)}));e.exports={CONSTRUCTOR:g,REJECTION_EVENT:v,SUBCLASSING:p}},550:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n.Promise},3438:(e,t,r)=>{"use strict";var n=r(8551),o=r(34),i=r(6043);e.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},537:(e,t,r)=>{"use strict";var n=r(550),o=r(4428),i=r(916).CONSTRUCTOR;e.exports=i||!o((function(e){n.all(e).then(void 0,(function(){}))}))},8265:e=>{"use strict";var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7750:(e,t,r)=>{"use strict";var n=r(4117),o=TypeError;e.exports=function(e){if(n(e))throw new o("Can't call method on "+e);return e}},3389:(e,t,r)=>{"use strict";var n=r(4576),o=r(3724),i=Object.getOwnPropertyDescriptor;e.exports=function(e){if(!o)return n[e];var t=i(n,e);return t&&t.value}},7633:(e,t,r)=>{"use strict";var n=r(7751),o=r(2106),i=r(8227),a=r(3724),s=i("species");e.exports=function(e){var t=n(e);a&&t&&!t[s]&&o(t,s,{configurable:!0,get:function(){return this}})}},687:(e,t,r)=>{"use strict";var n=r(4913).f,o=r(9297),i=r(8227)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!o(e,i)&&n(e,i,{configurable:!0,value:t})}},6119:(e,t,r)=>{"use strict";var n=r(5745),o=r(3392),i=n("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},7629:(e,t,r)=>{"use strict";var n=r(6395),o=r(4576),i=r(9433),a="__core-js_shared__",s=e.exports=o[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.39.0",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,r)=>{"use strict";var n=r(7629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},2293:(e,t,r)=>{"use strict";var n=r(8551),o=r(5548),i=r(4117),a=r(8227)("species");e.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||i(r=n(s)[a])?t:o(r)}},8183:(e,t,r)=>{"use strict";var n=r(9504),o=r(1291),i=r(655),a=r(7750),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,d=i(a(t)),f=o(r),h=d.length;return f<0||f>=h?e?"":void 0:(n=c(d,f))<55296||n>56319||f+1===h||(l=c(d,f+1))<56320||l>57343?e?s(d,f):n:e?u(d,f,f+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},6098:(e,t,r)=>{"use strict";var n=r(9504),o=2147483647,i=/[^\0-\u007E]/,a=/[.\u3002\uFF0E\uFF61]/g,s="Overflow: input needs wider integers to process",c=RangeError,u=n(a.exec),l=Math.floor,d=String.fromCharCode,f=n("".charCodeAt),h=n([].join),p=n([].push),v=n("".replace),g=n("".split),m=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},b=function(e,t,r){var n=0;for(e=r?l(e/700):e>>1,e+=l(e/t);e>455;)e=l(e/35),n+=36;return l(n+36*e/(e+38))},w=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r<n;){var o=f(e,r++);if(o>=55296&&o<=56319&&r<n){var i=f(e,r++);56320==(64512&i)?p(t,((1023&o)<<10)+(1023&i)+65536):(p(t,o),r--)}else p(t,o)}return t}(e);var r,n,i=e.length,a=128,u=0,v=72;for(r=0;r<e.length;r++)(n=e[r])<128&&p(t,d(n));var g=t.length,m=g;for(g&&p(t,"-");m<i;){var w=o;for(r=0;r<e.length;r++)(n=e[r])>=a&&n<w&&(w=n);var E=m+1;if(w-a>l((o-u)/E))throw new c(s);for(u+=(w-a)*E,a=w,r=0;r<e.length;r++){if((n=e[r])<a&&++u>o)throw new c(s);if(n===a){for(var C=u,S=36;;){var _=S<=v?1:S>=v+26?26:S-v;if(C<_)break;var O=C-_,k=36-_;p(t,d(y(_+O%k))),C=l(O/k),S+=36}p(t,d(y(C))),v=b(u,E,m===g),u=0,m++}}u++,a++}return h(t,"")};e.exports=function(e){var t,r,n=[],o=g(v(m(e),a,"."),".");for(t=0;t<o.length;t++)r=o[t],p(n,u(i,r)?"xn--"+w(r):r);return h(n,".")}},4495:(e,t,r)=>{"use strict";var n=r(9519),o=r(9039),i=r(4576).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(e,t,r)=>{"use strict";var n,o,i,a,s=r(4576),c=r(8745),u=r(6080),l=r(4901),d=r(9297),f=r(9039),h=r(397),p=r(7680),v=r(4055),g=r(2812),m=r(9544),y=r(8574),b=s.setImmediate,w=s.clearImmediate,E=s.process,C=s.Dispatch,S=s.Function,_=s.MessageChannel,O=s.String,k=0,P={},A="onreadystatechange";f((function(){n=s.location}));var M=function(e){if(d(P,e)){var t=P[e];delete P[e],t()}},x=function(e){return function(){M(e)}},T=function(e){M(e.data)},R=function(e){s.postMessage(O(e),n.protocol+"//"+n.host)};b&&w||(b=function(e){g(arguments.length,1);var t=l(e)?e:S(e),r=p(arguments,1);return P[++k]=function(){c(t,void 0,r)},o(k),k},w=function(e){delete P[e]},y?o=function(e){E.nextTick(x(e))}:C&&C.now?o=function(e){C.now(x(e))}:_&&!m?(a=(i=new _).port2,i.port1.onmessage=T,o=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!f(R)?(o=R,s.addEventListener("message",T,!1)):o=A in v("script")?function(e){h.appendChild(v("script"))[A]=function(){h.removeChild(this),M(e)}}:function(e){setTimeout(x(e),0)}),e.exports={set:b,clear:w}},5610:(e,t,r)=>{"use strict";var n=r(1291),o=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?o(r+t,0):i(r,t)}},5397:(e,t,r)=>{"use strict";var n=r(7055),o=r(7750);e.exports=function(e){return n(o(e))}},1291:(e,t,r)=>{"use strict";var n=r(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},8014:(e,t,r)=>{"use strict";var n=r(1291),o=Math.min;e.exports=function(e){var t=n(e);return t>0?o(t,9007199254740991):0}},8981:(e,t,r)=>{"use strict";var n=r(7750),o=Object;e.exports=function(e){return o(n(e))}},2777:(e,t,r)=>{"use strict";var n=r(9565),o=r(34),i=r(757),a=r(5966),s=r(4270),c=r(8227),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var r,c=a(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!o(r)||i(r))return r;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},6969:(e,t,r)=>{"use strict";var n=r(2777),o=r(757);e.exports=function(e){var t=n(e,"string");return o(t)?t:t+""}},2140:(e,t,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,r)=>{"use strict";var n=r(6955),o=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},6823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,r)=>{"use strict";var n=r(9504),o=0,i=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},7416:(e,t,r)=>{"use strict";var n=r(9039),o=r(8227),i=r(3724),a=r(6395),s=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),a&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(a||!i)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}))},7040:(e,t,r)=>{"use strict";var n=r(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039);e.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:e=>{"use strict";var t=TypeError;e.exports=function(e,r){if(e<r)throw new t("Not enough arguments");return e}},8622:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901),i=n.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},8227:(e,t,r)=>{"use strict";var n=r(4576),o=r(5745),i=r(9297),a=r(3392),s=r(4495),c=r(7040),u=n.Symbol,l=o("wks"),d=c?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(l,e)||(l[e]=s&&i(u,e)?u[e]:d("Symbol."+e)),l[e]}},7145:(e,t,r)=>{"use strict";var n=r(6518),o=r(1625),i=r(2787),a=r(2967),s=r(7740),c=r(2360),u=r(6699),l=r(6980),d=r(7584),f=r(747),h=r(2652),p=r(2603),v=r(8227)("toStringTag"),g=Error,m=[].push,y=function(e,t){var r,n=o(b,this);a?r=a(new g,n?i(this):b):(r=n?this:c(b),u(r,v,"Error")),void 0!==t&&u(r,"message",p(t)),f(r,y,r.stack,1),arguments.length>2&&d(r,arguments[2]);var s=[];return h(e,m,{that:s}),u(r,"errors",s),r};a?a(y,g):s(y,g,{name:!0});var b=y.prototype=c(g.prototype,{constructor:l(1,y),message:l(1,""),name:l(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:y})},67:(e,t,r)=>{"use strict";r(7145)},4423:(e,t,r)=>{"use strict";var n=r(6518),o=r(9617).includes,i=r(9039),a=r(6469);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),a("includes")},3792:(e,t,r)=>{"use strict";var n=r(5397),o=r(6469),i=r(6269),a=r(1181),s=r(4913).f,c=r(1088),u=r(2529),l=r(6395),d=r(3724),f="Array Iterator",h=a.set,p=a.getterFor(f);e.exports=c(Array,"Array",(function(e,t){h(this,{type:f,target:n(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,u(void 0,!0);switch(e.kind){case"keys":return u(r,!1);case"values":return u(t[r],!1)}return u([r,t[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!l&&d&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(e){}},9085:(e,t,r)=>{"use strict";var n=r(6518),o=r(4213);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},6099:(e,t,r)=>{"use strict";var n=r(2140),o=r(6840),i=r(3179);n||o(Object.prototype,"toString",i,{unsafe:!0})},6167:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{allSettled:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,u=1;c(e,(function(e){var i=s++,c=!1;u++,o(r,t,e).then((function(e){c||(c=!0,a[i]={status:"fulfilled",value:e},--u||n(a))}),(function(e){c||(c=!0,a[i]={status:"rejected",reason:e},--u||n(a))}))})),--u||n(a)}));return l.error&&u(l.value),r.promise}})},6499:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{all:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,l=1;c(e,(function(e){var i=s++,c=!1;l++,o(r,t,e).then((function(e){c||(c=!0,a[i]=e,--l||n(a))}),u)})),--l||n(a)}));return l.error&&u(l.value),r.promise}})},3518:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(7751),s=r(6043),c=r(1103),u=r(2652),l=r(537),d="No one promise resolved";n({target:"Promise",stat:!0,forced:l},{any:function(e){var t=this,r=a("AggregateError"),n=s.f(t),l=n.resolve,f=n.reject,h=c((function(){var n=i(t.resolve),a=[],s=0,c=1,h=!1;u(e,(function(e){var i=s++,u=!1;c++,o(n,t,e).then((function(e){u||h||(h=!0,l(e))}),(function(e){u||h||(u=!0,a[i]=e,--c||f(new r(a,d)))}))})),--c||f(new r(a,d))}));return h.error&&f(h.value),n.promise}})},2003:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(916).CONSTRUCTOR,a=r(550),s=r(7751),c=r(4901),u=r(6840),l=a&&a.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!o&&c(a)){var d=s("Promise").prototype.catch;l.catch!==d&&u(l,"catch",d,{unsafe:!0})}},436:(e,t,r)=>{"use strict";var n,o,i,a=r(6518),s=r(6395),c=r(8574),u=r(4576),l=r(9565),d=r(6840),f=r(2967),h=r(687),p=r(7633),v=r(9306),g=r(4901),m=r(34),y=r(679),b=r(2293),w=r(9225).set,E=r(1955),C=r(3138),S=r(1103),_=r(8265),O=r(1181),k=r(550),P=r(916),A=r(6043),M="Promise",x=P.CONSTRUCTOR,T=P.REJECTION_EVENT,R=P.SUBCLASSING,L=O.getterFor(M),F=O.set,j=k&&k.prototype,I=k,B=j,D=u.TypeError,H=u.document,N=u.process,U=A.f,V=U,G=!!(H&&H.createEvent&&u.dispatchEvent),z="unhandledrejection",K=function(e){var t;return!(!m(e)||!g(t=e.then))&&t},q=function(e,t){var r,n,o,i=t.value,a=1===t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,d=e.domain;try{s?(a||(2===t.rejection&&$(t),t.rejection=1),!0===s?r=i:(d&&d.enter(),r=s(i),d&&(d.exit(),o=!0)),r===e.promise?u(new D("Promise-chain cycle")):(n=K(r))?l(n,r,c,u):c(r)):u(i)}catch(e){d&&!o&&d.exit(),u(e)}},W=function(e,t){e.notified||(e.notified=!0,E((function(){for(var r,n=e.reactions;r=n.get();)q(r,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},J=function(e,t,r){var n,o;G?((n=H.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!T&&(o=u["on"+e])?o(n):e===z&&C("Unhandled promise rejection",r)},Y=function(e){l(w,u,(function(){var t,r=e.facade,n=e.value;if(Q(e)&&(t=S((function(){c?N.emit("unhandledRejection",n,r):J(z,r,n)})),e.rejection=c||Q(e)?2:1,t.error))throw t.value}))},Q=function(e){return 1!==e.rejection&&!e.parent},$=function(e){l(w,u,(function(){var t=e.facade;c?N.emit("rejectionHandled",t):J("rejectionhandled",t,e.value)}))},X=function(e,t,r){return function(n){e(t,n,r)}},Z=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw new D("Promise can't be resolved itself");var n=K(t);n?E((function(){var r={done:!1};try{l(n,t,X(ee,r,e),X(Z,r,e))}catch(t){Z(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Z({done:!1},t,e)}}};if(x&&(B=(I=function(e){y(this,B),v(e),l(n,this);var t=L(this);try{e(X(ee,t),X(Z,t))}catch(e){Z(t,e)}}).prototype,(n=function(e){F(this,{type:M,done:!1,notified:!1,parent:!1,reactions:new _,rejection:!1,state:0,value:null})}).prototype=d(B,"then",(function(e,t){var r=L(this),n=U(b(this,I));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=c?N.domain:void 0,0===r.state?r.reactions.add(n):E((function(){q(n,r)})),n.promise})),o=function(){var e=new n,t=L(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Z,t)},A.f=U=function(e){return e===I||void 0===e?new o(e):V(e)},!s&&g(k)&&j!==Object.prototype)){i=j.then,R||d(j,"then",(function(e,t){var r=this;return new I((function(e,t){l(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete j.constructor}catch(e){}f&&f(j,B)}a({global:!0,constructor:!0,wrap:!0,forced:x},{Promise:I}),h(I,M,!1,!0),p(M)},9391:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(550),a=r(9039),s=r(7751),c=r(4901),u=r(2293),l=r(3438),d=r(6840),f=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){f.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,s("Promise")),r=c(e);return this.then(r?function(r){return l(t,e()).then((function(){return r}))}:e,r?function(r){return l(t,e()).then((function(){throw r}))}:e)}}),!o&&c(i)){var h=s("Promise").prototype.finally;f.finally!==h&&d(f,"finally",h,{unsafe:!0})}},3362:(e,t,r)=>{"use strict";r(436),r(6499),r(2003),r(7743),r(1481),r(280)},7743:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{race:function(e){var t=this,r=a.f(t),n=r.reject,u=s((function(){var a=i(t.resolve);c(e,(function(e){o(a,t,e).then(r.resolve,n)}))}));return u.error&&n(u.value),r.promise}})},1481:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0,forced:r(916).CONSTRUCTOR},{reject:function(e){var t=o.f(this);return(0,t.reject)(e),t.promise}})},280:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(6395),a=r(550),s=r(916).CONSTRUCTOR,c=r(3438),u=o("Promise"),l=i&&!s;n({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return c(l&&this===u?a:this,e)}})},1689:(e,t,r)=>{"use strict";var n=r(6518),o=r(4576),i=r(8745),a=r(7680),s=r(6043),c=r(9306),u=r(1103),l=o.Promise,d=!1;n({target:"Promise",stat:!0,forced:!l||!l.try||u((function(){l.try((function(e){d=8===e}),8)})).error||!d},{try:function(e){var t=arguments.length>1?a(arguments,1):[],r=s.f(this),n=u((function(){return i(c(e),void 0,t)}));return(n.error?r.reject:r.resolve)(n.value),r.promise}})},4628:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0},{withResolvers:function(){var e=o.f(this);return{promise:e.promise,resolve:e.resolve,reject:e.reject}}})},7337:(e,t,r)=>{"use strict";var n=r(6518),o=r(9504),i=r(5610),a=RangeError,s=String.fromCharCode,c=String.fromCodePoint,u=o([].join);n({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(e){for(var t,r=[],n=arguments.length,o=0;n>o;){if(t=+arguments[o++],i(t,1114111)!==t)throw new a(t+" is not a valid code point");r[o]=t<65536?s(t):s(55296+((t-=65536)>>10),t%1024+56320)}return u(r,"")}})},7764:(e,t,r)=>{"use strict";var n=r(8183).charAt,o=r(655),i=r(1181),a=r(1088),s=r(2529),c="String Iterator",u=i.set,l=i.getterFor(c);a(String,"String",(function(e){u(this,{type:c,string:o(e),index:0})}),(function(){var e,t=l(this),r=t.string,o=t.index;return o>=r.length?s(void 0,!0):(e=n(r,o),t.index+=e.length,s(e,!1))}))},9806:(e,t,r)=>{"use strict";r(67)},5874:(e,t,r)=>{"use strict";r(6167)},7575:(e,t,r)=>{"use strict";r(3518)},7628:(e,t,r)=>{"use strict";r(1689)},3799:(e,t,r)=>{"use strict";r(4628)},2953:(e,t,r)=>{"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(3792),s=r(6699),c=r(687),u=r(8227)("iterator"),l=a.values,d=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var r in a)if(e[r]!==a[r])try{s(e,r,a[r])}catch(t){e[r]=a[r]}}};for(var f in o)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},8406:(e,t,r)=>{"use strict";r(3792),r(7337);var n=r(6518),o=r(4576),i=r(3389),a=r(7751),s=r(9565),c=r(9504),u=r(3724),l=r(7416),d=r(6840),f=r(2106),h=r(6279),p=r(687),v=r(3994),g=r(1181),m=r(679),y=r(4901),b=r(9297),w=r(6080),E=r(6955),C=r(8551),S=r(34),_=r(655),O=r(2360),k=r(6980),P=r(81),A=r(851),M=r(2529),x=r(2812),T=r(8227),R=r(4488),L=T("iterator"),F="URLSearchParams",j=F+"Iterator",I=g.set,B=g.getterFor(F),D=g.getterFor(j),H=i("fetch"),N=i("Request"),U=i("Headers"),V=N&&N.prototype,G=U&&U.prototype,z=o.TypeError,K=o.encodeURIComponent,q=String.fromCharCode,W=a("String","fromCodePoint"),J=parseInt,Y=c("".charAt),Q=c([].join),$=c([].push),X=c("".replace),Z=c([].shift),ee=c([].splice),te=c("".split),re=c("".slice),ne=c(/./.exec),oe=/\+/g,ie=/^[0-9a-f]+$/i,ae=function(e,t){var r=re(e,t,t+2);return ne(ie,r)?J(r,16):NaN},se=function(e){for(var t=0,r=128;r>0&&e&r;r>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},ue=function(e){for(var t=(e=X(e,oe," ")).length,r="",n=0;n<t;){var o=Y(e,n);if("%"===o){if("%"===Y(e,n+1)||n+3>t){r+="%",n++;continue}var i=ae(e,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=se(i);if(0===a)o=q(i);else{if(1===a||a>4){r+="�",n++;continue}for(var s=[i],c=1;c<a&&!(3+ ++n>t||"%"!==Y(e,n));){var u=ae(e,n+1);if(u!=u){n+=3;break}if(u>191||u<128)break;$(s,u),n+=2,c++}if(s.length!==a){r+="�";continue}var l=ce(s);null===l?r+="�":o=W(l)}}r+=o,n++}return r},le=/[!'()~]|%20/g,de={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},fe=function(e){return de[e]},he=function(e){return X(K(e),le,fe)},pe=v((function(e,t){I(this,{type:j,target:B(e).entries,index:0,kind:t})}),F,(function(){var e=D(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,M(void 0,!0);var n=t[r];switch(e.kind){case"keys":return M(n.key,!1);case"values":return M(n.value,!1)}return M([n.key,n.value],!1)}),!0),ve=function(e){this.entries=[],this.url=null,void 0!==e&&(S(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Y(e,0)?re(e,1):e:_(e)))};ve.prototype={type:F,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,o,i,a,c,u=this.entries,l=A(e);if(l)for(r=(t=P(e,l)).next;!(n=s(r,t)).done;){if(i=(o=P(C(n.value))).next,(a=s(i,o)).done||(c=s(i,o)).done||!s(i,o).done)throw new z("Expected sequence with length 2");$(u,{key:_(a.value),value:_(c.value)})}else for(var d in e)b(e,d)&&$(u,{key:d,value:_(e[d])})},parseQuery:function(e){if(e)for(var t,r,n=this.entries,o=te(e,"&"),i=0;i<o.length;)(t=o[i++]).length&&(r=te(t,"="),$(n,{key:ue(Z(r)),value:ue(Q(r,"="))}))},serialize:function(){for(var e,t=this.entries,r=[],n=0;n<t.length;)e=t[n++],$(r,he(e.key)+"="+he(e.value));return Q(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var ge=function(){m(this,me);var e=I(this,new ve(arguments.length>0?arguments[0]:void 0));u||(this.size=e.entries.length)},me=ge.prototype;if(h(me,{append:function(e,t){var r=B(this);x(arguments.length,2),$(r.entries,{key:_(e),value:_(t)}),u||this.length++,r.updateURL()},delete:function(e){for(var t=B(this),r=x(arguments.length,1),n=t.entries,o=_(e),i=r<2?void 0:arguments[1],a=void 0===i?i:_(i),s=0;s<n.length;){var c=n[s];if(c.key!==o||void 0!==a&&c.value!==a)s++;else if(ee(n,s,1),void 0!==a)break}u||(this.size=n.length),t.updateURL()},get:function(e){var t=B(this).entries;x(arguments.length,1);for(var r=_(e),n=0;n<t.length;n++)if(t[n].key===r)return t[n].value;return null},getAll:function(e){var t=B(this).entries;x(arguments.length,1);for(var r=_(e),n=[],o=0;o<t.length;o++)t[o].key===r&&$(n,t[o].value);return n},has:function(e){for(var t=B(this).entries,r=x(arguments.length,1),n=_(e),o=r<2?void 0:arguments[1],i=void 0===o?o:_(o),a=0;a<t.length;){var s=t[a++];if(s.key===n&&(void 0===i||s.value===i))return!0}return!1},set:function(e,t){var r=B(this);x(arguments.length,1);for(var n,o=r.entries,i=!1,a=_(e),s=_(t),c=0;c<o.length;c++)(n=o[c]).key===a&&(i?ee(o,c--,1):(i=!0,n.value=s));i||$(o,{key:a,value:s}),u||(this.size=o.length),r.updateURL()},sort:function(){var e=B(this);R(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=B(this).entries,n=w(e,arguments.length>1?arguments[1]:void 0),o=0;o<r.length;)n((t=r[o++]).value,t.key,this)},keys:function(){return new pe(this,"keys")},values:function(){return new pe(this,"values")},entries:function(){return new pe(this,"entries")}},{enumerable:!0}),d(me,L,me.entries,{name:"entries"}),d(me,"toString",(function(){return B(this).serialize()}),{enumerable:!0}),u&&f(me,"size",{get:function(){return B(this).entries.length},configurable:!0,enumerable:!0}),p(ge,F),n({global:!0,constructor:!0,forced:!l},{URLSearchParams:ge}),!l&&y(U)){var ye=c(G.has),be=c(G.set),we=function(e){if(S(e)){var t,r=e.body;if(E(r)===F)return t=e.headers?new U(e.headers):new U,ye(t,"content-type")||be(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),O(e,{body:k(0,_(r)),headers:k(0,t)})}return e};if(y(H)&&n({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(e){return H(e,arguments.length>1?we(arguments[1]):{})}}),y(N)){var Ee=function(e){return m(this,V),new N(e,arguments.length>1?we(arguments[1]):{})};V.constructor=Ee,Ee.prototype=V,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ee})}}e.exports={URLSearchParams:ge,getState:B}},4603:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.append),l=o(c.delete),d=o(c.forEach),f=o([].push),h=new s("a=1&a=2&b=3");h.delete("a",1),h.delete("b",void 0),h+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=[];d(this,(function(e,t){f(n,{key:t,value:e})})),a(t,1);for(var o,s=i(e),c=i(r),h=0,p=0,v=!1,g=n.length;h<g;)o=n[h++],v||o.key===s?(v=!0,l(this,o.key)):p++;for(;p<g;)(o=n[p++]).key===s&&o.value===c||u(this,o.key,o.value)}),{enumerable:!0,unsafe:!0})},7566:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.getAll),l=o(c.has),d=new s("a=1");!d.has("a",2)&&d.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=u(this,e);a(t,1);for(var o=i(r),s=0;s<n.length;)if(n[s++]===o)return!0;return!1}),{enumerable:!0,unsafe:!0})},8408:(e,t,r)=>{"use strict";r(8406)},8721:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(2106),a=URLSearchParams.prototype,s=o(a.forEach);n&&!("size"in a)&&i(a,"size",{get:function(){var e=0;return s(this,(function(){e++})),e},configurable:!0,enumerable:!0})},2222:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(9039),a=r(2812),s=r(655),c=r(7416),u=o("URL"),l=c&&i((function(){u.canParse()})),d=i((function(){return 1!==u.canParse.length}));n({target:"URL",stat:!0,forced:!l||d},{canParse:function(e){var t=a(arguments.length,1),r=s(e),n=t<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return!!new u(r,n)}catch(e){return!1}}})},5806:(e,t,r)=>{"use strict";r(7764);var n,o=r(6518),i=r(3724),a=r(7416),s=r(4576),c=r(6080),u=r(9504),l=r(6840),d=r(2106),f=r(679),h=r(9297),p=r(4213),v=r(7916),g=r(7680),m=r(8183).codeAt,y=r(6098),b=r(655),w=r(687),E=r(2812),C=r(8406),S=r(1181),_=S.set,O=S.getterFor("URL"),k=C.URLSearchParams,P=C.getState,A=s.URL,M=s.TypeError,x=s.parseInt,T=Math.floor,R=Math.pow,L=u("".charAt),F=u(/./.exec),j=u([].join),I=u(1..toString),B=u([].pop),D=u([].push),H=u("".replace),N=u([].shift),U=u("".split),V=u("".slice),G=u("".toLowerCase),z=u([].unshift),K="Invalid scheme",q="Invalid host",W="Invalid port",J=/[a-z]/i,Y=/[\d+-.a-z]/i,Q=/\d/,$=/^0x/i,X=/^[0-7]+$/,Z=/^\d+$/,ee=/^[\da-f]+$/i,te=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ne=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ie=/[\t\n\r]/g,ae=function(e){var t,r,n,o;if("number"==typeof e){for(t=[],r=0;r<4;r++)z(t,e%256),e=T(e/256);return j(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,o=0,i=0;i<8;i++)0!==e[i]?(o>r&&(t=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:t}(e),r=0;r<8;r++)o&&0===e[r]||(o&&(o=!1),n===r?(t+=r?":":"::",o=!0):(t+=I(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},se={},ce=p({},se,{" ":1,'"':1,"<":1,">":1,"`":1}),ue=p({},ce,{"#":1,"?":1,"{":1,"}":1}),le=p({},ue,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),de=function(e,t){var r=m(e,0);return r>32&&r<127&&!h(t,e)?e:encodeURIComponent(e)},fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var r;return 2===e.length&&F(J,L(e,0))&&(":"===(r=L(e,1))||!t&&"|"===r)},pe=function(e){var t;return e.length>1&&he(V(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},ve=function(e){return"."===e||"%2e"===G(e)},ge={},me={},ye={},be={},we={},Ee={},Ce={},Se={},_e={},Oe={},ke={},Pe={},Ae={},Me={},xe={},Te={},Re={},Le={},Fe={},je={},Ie={},Be=function(e,t,r){var n,o,i,a=b(e);if(t){if(o=this.parse(a))throw new M(o);this.searchParams=null}else{if(void 0!==r&&(n=new Be(r,!0)),o=this.parse(a,null,n))throw new M(o);(i=P(new k)).bindURL(this),this.searchParams=i}};Be.prototype={type:"URL",parse:function(e,t,r){var o,i,a,s,c,u=this,l=t||ge,d=0,f="",p=!1,m=!1,y=!1;for(e=b(e),t||(u.scheme="",u.username="",u.password="",u.host=null,u.port=null,u.path=[],u.query=null,u.fragment=null,u.cannotBeABaseURL=!1,e=H(e,ne,""),e=H(e,oe,"$1")),e=H(e,ie,""),o=v(e);d<=o.length;){switch(i=o[d],l){case ge:if(!i||!F(J,i)){if(t)return K;l=ye;continue}f+=G(i),l=me;break;case me:if(i&&(F(Y,i)||"+"===i||"-"===i||"."===i))f+=G(i);else{if(":"!==i){if(t)return K;f="",l=ye,d=0;continue}if(t&&(u.isSpecial()!==h(fe,f)||"file"===f&&(u.includesCredentials()||null!==u.port)||"file"===u.scheme&&!u.host))return;if(u.scheme=f,t)return void(u.isSpecial()&&fe[u.scheme]===u.port&&(u.port=null));f="","file"===u.scheme?l=Me:u.isSpecial()&&r&&r.scheme===u.scheme?l=be:u.isSpecial()?l=Se:"/"===o[d+1]?(l=we,d++):(u.cannotBeABaseURL=!0,D(u.path,""),l=Fe)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!==i)return K;if(r.cannotBeABaseURL&&"#"===i){u.scheme=r.scheme,u.path=g(r.path),u.query=r.query,u.fragment="",u.cannotBeABaseURL=!0,l=Ie;break}l="file"===r.scheme?Me:Ee;continue;case be:if("/"!==i||"/"!==o[d+1]){l=Ee;continue}l=_e,d++;break;case we:if("/"===i){l=Oe;break}l=Le;continue;case Ee:if(u.scheme=r.scheme,i===n)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query;else if("/"===i||"\\"===i&&u.isSpecial())l=Ce;else if("?"===i)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query="",l=je;else{if("#"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.path.length--,l=Le;continue}u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie}break;case Ce:if(!u.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,l=Le;continue}l=Oe}else l=_e;break;case Se:if(l=_e,"/"!==i||"/"!==L(f,d+1))continue;d++;break;case _e:if("/"!==i&&"\\"!==i){l=Oe;continue}break;case Oe:if("@"===i){p&&(f="%40"+f),p=!0,a=v(f);for(var w=0;w<a.length;w++){var E=a[w];if(":"!==E||y){var C=de(E,le);y?u.password+=C:u.username+=C}else y=!0}f=""}else if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(p&&""===f)return"Invalid authority";d-=v(f).length+1,f="",l=ke}else f+=i;break;case ke:case Pe:if(t&&"file"===u.scheme){l=Te;continue}if(":"!==i||m){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(u.isSpecial()&&""===f)return q;if(t&&""===f&&(u.includesCredentials()||null!==u.port))return;if(s=u.parseHost(f))return s;if(f="",l=Re,t)return;continue}"["===i?m=!0:"]"===i&&(m=!1),f+=i}else{if(""===f)return q;if(s=u.parseHost(f))return s;if(f="",l=Ae,t===Pe)return}break;case Ae:if(!F(Q,i)){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()||t){if(""!==f){var S=x(f,10);if(S>65535)return W;u.port=u.isSpecial()&&S===fe[u.scheme]?null:S,f=""}if(t)return;l=Re;continue}return W}f+=i;break;case Me:if(u.scheme="file","/"===i||"\\"===i)l=xe;else{if(!r||"file"!==r.scheme){l=Le;continue}switch(i){case n:u.host=r.host,u.path=g(r.path),u.query=r.query;break;case"?":u.host=r.host,u.path=g(r.path),u.query="",l=je;break;case"#":u.host=r.host,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie;break;default:pe(j(g(o,d),""))||(u.host=r.host,u.path=g(r.path),u.shortenPath()),l=Le;continue}}break;case xe:if("/"===i||"\\"===i){l=Te;break}r&&"file"===r.scheme&&!pe(j(g(o,d),""))&&(he(r.path[0],!0)?D(u.path,r.path[0]):u.host=r.host),l=Le;continue;case Te:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!t&&he(f))l=Le;else if(""===f){if(u.host="",t)return;l=Re}else{if(s=u.parseHost(f))return s;if("localhost"===u.host&&(u.host=""),t)return;f="",l=Re}continue}f+=i;break;case Re:if(u.isSpecial()){if(l=Le,"/"!==i&&"\\"!==i)continue}else if(t||"?"!==i)if(t||"#"!==i){if(i!==n&&(l=Le,"/"!==i))continue}else u.fragment="",l=Ie;else u.query="",l=je;break;case Le:if(i===n||"/"===i||"\\"===i&&u.isSpecial()||!t&&("?"===i||"#"===i)){if(".."===(c=G(c=f))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(u.shortenPath(),"/"===i||"\\"===i&&u.isSpecial()||D(u.path,"")):ve(f)?"/"===i||"\\"===i&&u.isSpecial()||D(u.path,""):("file"===u.scheme&&!u.path.length&&he(f)&&(u.host&&(u.host=""),f=L(f,0)+":"),D(u.path,f)),f="","file"===u.scheme&&(i===n||"?"===i||"#"===i))for(;u.path.length>1&&""===u.path[0];)N(u.path);"?"===i?(u.query="",l=je):"#"===i&&(u.fragment="",l=Ie)}else f+=de(i,ue);break;case Fe:"?"===i?(u.query="",l=je):"#"===i?(u.fragment="",l=Ie):i!==n&&(u.path[0]+=de(i,se));break;case je:t||"#"!==i?i!==n&&("'"===i&&u.isSpecial()?u.query+="%27":u.query+="#"===i?"%23":de(i,se)):(u.fragment="",l=Ie);break;case Ie:i!==n&&(u.fragment+=de(i,ce))}d++}},parseHost:function(e){var t,r,n;if("["===L(e,0)){if("]"!==L(e,e.length-1))return q;if(t=function(e){var t,r,n,o,i,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,d=0,f=function(){return L(e,d)};if(":"===f()){if(":"!==L(e,1))return;d+=2,l=++u}for(;f();){if(8===u)return;if(":"!==f()){for(t=r=0;r<4&&F(ee,f());)t=16*t+x(f(),16),d++,r++;if("."===f()){if(0===r)return;if(d-=r,u>6)return;for(n=0;f();){if(o=null,n>0){if(!("."===f()&&n<4))return;d++}if(!F(Q,f()))return;for(;F(Q,f());){if(i=x(f(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;d++}c[u]=256*c[u]+o,2!=++n&&4!==n||u++}if(4!==n)return;break}if(":"===f()){if(d++,!f())return}else if(f())return;c[u++]=t}else{if(null!==l)return;d++,l=++u}}if(null!==l)for(a=u-l,u=7;0!==u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!==u)return;return c}(V(e,1,-1)),!t)return q;this.host=t}else if(this.isSpecial()){if(e=y(e),F(te,e))return q;if(t=function(e){var t,r,n,o,i,a,s,c=U(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n<t;n++){if(""===(o=c[n]))return e;if(i=10,o.length>1&&"0"===L(o,0)&&(i=F($,o)?16:8,o=V(o,8===i?1:2)),""===o)a=0;else{if(!F(10===i?Z:8===i?X:ee,o))return e;a=x(o,i)}D(r,a)}for(n=0;n<t;n++)if(a=r[n],n===t-1){if(a>=R(256,5-t))return null}else if(a>255)return null;for(s=B(r),n=0;n<r.length;n++)s+=r[n]*R(256,3-n);return s}(e),null===t)return q;this.host=t}else{if(F(re,e))return q;for(t="",r=v(e),n=0;n<r.length;n++)t+=de(r[n],se);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"===this.scheme},includesCredentials:function(){return""!==this.username||""!==this.password},isSpecial:function(){return h(fe,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"===this.scheme&&1===t&&he(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,r=e.username,n=e.password,o=e.host,i=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==o?(u+="//",e.includesCredentials()&&(u+=r+(n?":"+n:"")+"@"),u+=ae(o),null!==i&&(u+=":"+i)):"file"===t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+j(a,"/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},setHref:function(e){var t=this.parse(e);if(t)throw new M(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"===e)try{return new De(e.path[0]).origin}catch(e){return"null"}return"file"!==e&&this.isSpecial()?e+"://"+ae(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(b(e)+":",ge)},getUsername:function(){return this.username},setUsername:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var r=0;r<t.length;r++)this.username+=de(t[r],le)}},getPassword:function(){return this.password},setPassword:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var r=0;r<t.length;r++)this.password+=de(t[r],le)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?ae(e):ae(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,ke)},getHostname:function(){var e=this.host;return null===e?"":ae(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Pe)},getPort:function(){var e=this.port;return null===e?"":b(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""===(e=b(e))?this.port=null:this.parse(e,Ae))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+j(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Re))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""===(e=b(e))?this.query=null:("?"===L(e,0)&&(e=V(e,1)),this.query="",this.parse(e,je)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!==(e=b(e))?("#"===L(e,0)&&(e=V(e,1)),this.fragment="",this.parse(e,Ie)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var De=function(e){var t=f(this,He),r=E(arguments.length,1)>1?arguments[1]:void 0,n=_(t,new Be(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},He=De.prototype,Ne=function(e,t){return{get:function(){return O(this)[e]()},set:t&&function(e){return O(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(d(He,"href",Ne("serialize","setHref")),d(He,"origin",Ne("getOrigin")),d(He,"protocol",Ne("getProtocol","setProtocol")),d(He,"username",Ne("getUsername","setUsername")),d(He,"password",Ne("getPassword","setPassword")),d(He,"host",Ne("getHost","setHost")),d(He,"hostname",Ne("getHostname","setHostname")),d(He,"port",Ne("getPort","setPort")),d(He,"pathname",Ne("getPathname","setPathname")),d(He,"search",Ne("getSearch","setSearch")),d(He,"searchParams",Ne("getSearchParams")),d(He,"hash",Ne("getHash","setHash"))),l(He,"toJSON",(function(){return O(this).serialize()}),{enumerable:!0}),l(He,"toString",(function(){return O(this).serialize()}),{enumerable:!0}),A){var Ue=A.createObjectURL,Ve=A.revokeObjectURL;Ue&&l(De,"createObjectURL",c(Ue,A)),Ve&&l(De,"revokeObjectURL",c(Ve,A))}w(De,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:De})},3296:(e,t,r)=>{"use strict";r(5806)},8162:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(2812),a=r(655),s=r(7416),c=o("URL");n({target:"URL",stat:!0,forced:!s},{parse:function(e){var t=i(arguments.length,1),r=a(e),n=t<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return new c(r,n)}catch(e){return null}}})},7208:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565);n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},6612:(e,t,r)=>{"use strict";var n=r(3609);e.exports=n},8418:(e,t,r)=>{"use strict";var n=r(8473);e.exports=n},2473:(e,t,r)=>{"use strict";var n=r(6398);r(2953),e.exports=n},2841:(e,t,r)=>{"use strict";var n=r(8367);e.exports=n},6811:(e,t,r)=>{"use strict";r(8408),r(4603),r(7566),r(8721);var n=r(9167);e.exports=n.URLSearchParams},8367:(e,t,r)=>{"use strict";r(6811),r(3296),r(2222),r(8162),r(7208);var n=r(9167);e.exports=n.URL}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(8156)})()));
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxJQUVsSFksU0FBVSxDQUNOLElBQUlaLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFX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QVhtRyxRQUEwQkEsT0FBT29XLGFBQzFDbGMsT0FBT0MsZUFBZU4sRUFBU21HLE9BQU9vVyxZQUFhLENBQUVoYyxNQUFPLFdBRTdERixPQUFPQyxlQUFlTixFQUFTLGFBQWMsQ0FBRU8sT0FBTyxHQUFPLEVDRnBDZ3VELEVBQW9CLEsiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvYmFzZTYyc3RyL2Rpc3Qvc3JjL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2V4cGlyZS1zZXQvbGliL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9nbG9iYWx0aGlzL2ltcGxlbWVudGF0aW9uLmJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvZ2xvYmFsdGhpcy9wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9vZmZpY2VzZGstYnJvYWRjYXN0LWNoYW5uZWwvZGlzdC9vZmZpY2VzZGstYnJvYWRjYXN0LWNoYW5uZWwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3Byb3h5LXBvbHlmaWxsL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9wcm94eS1wb2x5ZmlsbC9zcmMvcHJveHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdGlueS1lbWl0dGVyL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL09mZmljZVNESy5icmFuZGluZy50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9PZmZpY2VTREsuZmFjYWRlLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL09mZmljZVNESy5mYWNhZGUudHlwZXMudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvT2ZmaWNlU0RLLmhlYWRlckJhcnMudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvT2ZmaWNlU0RLLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL2Fzc2VydC50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9jb25uZWN0LnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL2luZGV4LnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL3R5cGVzL0VtcHR5UGFnZS50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9yZWdleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdmFsaWRhdGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3N0cmluZ2lmeS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjEuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3BhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92MzUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL21kNS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3Y0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zaGExLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvbmlsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92ZXJzaW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvQVBJQWRhcHRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L0ZpbGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC9ldmVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvdHlwZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL2Rpc3QvU3RhcnRQYXJhbXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL2Rpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zL25vZGVfbW9kdWxlcy9pcy1wbGFpbi1vYmovaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2FjdHVhbC9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvYWN0dWFsL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZlYXR1cmVzL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZmVhdHVyZXMvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZnVsbC9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvdXJsL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY2FsbGFibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc2xpY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktc29ydC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20taXRlcmFibGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnRyeS11bmJpbmQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MtcGViYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLXdlYm9zLXdlYmtpdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LXY4LXZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2stY2xlYXIuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMtYWNjZXNzb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbmRleGVkLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnN0YWxsLWVycm9yLWNhdXNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWF0aC10cnVuYy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9taWNyb3Rhc2suanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXRoLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3F1ZXVlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1wdW55Y29kZS10by1hc2NpaS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Rhc2suanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2Vhay1tYXAtYmFzaWMtZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QudG8tc3RyaW5nLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmFsbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2guanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZXNvbHZlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLnRyeS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS53aXRoLXJlc29sdmVycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmZyb20tY29kZS1wb2ludC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQuYWdncmVnYXRlLWVycm9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS5hbGwtc2V0dGxlZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2UuYW55LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS50cnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLndpdGgtcmVzb2x2ZXJzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5kZWxldGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuY2FuLXBhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLnBhcnNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvb2JqZWN0L2Fzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3N0YWJsZS9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc3RhYmxlL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3dlYi91cmwtc2VhcmNoLXBhcmFtcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3dlYi91cmwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJXZWJPZmZpY2VKU1NES1wiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJXZWJPZmZpY2VKU1NES1wiXSA9IGZhY3RvcnkoKTtcbn0pKHNlbGYsICgpID0+IHtcbnJldHVybiAiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgQmFzZTYyU3RyID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gQmFzZTYyU3RyKGFscGhhYmV0KSB7XHJcbiAgICAgICAgdGhpcy5hbHBoYWJldCA9IGFscGhhYmV0O1xyXG4gICAgICAgIHRoaXMubG9va3VwID0gdGhpcy5jcmVhdGVMb29rdXBUYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgQmFzZTYyU3RyLmdldEJ5dGVzID0gZnVuY3Rpb24gKHN0cikge1xyXG4gICAgICAgIHZhciBieXRlcyA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGJ5dGVzLnB1c2goY2hhciAmIDB4RkYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYnl0ZXM7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLmdldFN0cmluZyA9IGZ1bmN0aW9uIChhcnIpIHtcclxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSh0aGlzLCBhcnIpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLiBEZWZhdWx0cyB0byB0aGUgR01QLXN0eWxlIGNoYXJhY3RlciBzZXQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybiBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIuY3JlYXRlSW5zdGFuY2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlSW5zdGFuY2VXaXRoR21wQ2hhcmFjdGVyU2V0KCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UgdXNpbmcgdGhlIEdNUC1zdHlsZSBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNyZWF0ZUluc3RhbmNlV2l0aEdtcENoYXJhY3RlclNldCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJhc2U2MlN0cihCYXNlNjJTdHIuQ2hhcmFjdGVyU2V0cy5HTVApO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlIHVzaW5nIHRoZSBpbnZlcnRlZCBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNyZWF0ZUluc3RhbmNlV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmFzZTYyU3RyKEJhc2U2MlN0ci5DaGFyYWN0ZXJTZXRzLklOVkVSVEVEKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIFVzZXMgdGhlIGVsZW1lbnRzIG9mIGEgYnl0ZSBhcnJheSBhcyBpbmRpY2VzIHRvIGEgZGljdGlvbmFyeSBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXNcclxuICAgICAqIGluIGZvcm0gb2YgYSBieXRlIGFycmF5LlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIudHJhbnNsYXRlID0gZnVuY3Rpb24gKGluZGljZXMsIGRpY3Rpb25hcnkpIHtcclxuICAgICAgICB2YXIgdHJhbnNsYXRpb24gPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBfaSA9IDAsIGluZGljZXNfMSA9IGluZGljZXM7IF9pIDwgaW5kaWNlc18xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICB2YXIgaW5kaWNlc2kgPSBpbmRpY2VzXzFbX2ldO1xyXG4gICAgICAgICAgICB0cmFuc2xhdGlvbi5wdXNoKGRpY3Rpb25hcnlbaW5kaWNlc2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgYSBieXRlIGFycmF5IGZyb20gYSBzb3VyY2UgYmFzZSB0byBhIHRhcmdldCBiYXNlIHVzaW5nIHRoZSBhbHBoYWJldC5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNvbnZlcnQgPSBmdW5jdGlvbiAobWVzc2FnZSwgc291cmNlQmFzZSwgdGFyZ2V0QmFzZSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFRoaXMgYWxnb3JpdGhtIGlzIGluc3BpcmVkIGJ5OiBodHRwOi8vY29kZWdvbGYuc3RhY2tleGNoYW5nZS5jb20vYS8yMTY3MlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHZhciBvdXQgPSBbXTtcclxuICAgICAgICB2YXIgc291cmNlID0gbWVzc2FnZTtcclxuICAgICAgICB3aGlsZSAoc291cmNlLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdmFyIHF1b3RpZW50ID0gW107XHJcbiAgICAgICAgICAgIHZhciByZW1haW5kZXIgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIHNvdXJjZV8xID0gc291cmNlOyBfaSA8IHNvdXJjZV8xLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIHNvdXJjZWkgPSBzb3VyY2VfMVtfaV07XHJcbiAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgICAgdmFyIGFjY3VtdWxhdG9yID0gKHNvdXJjZWkgJiAweEZGKSArIHJlbWFpbmRlciAqIHNvdXJjZUJhc2U7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGlnaXQgPSAoYWNjdW11bGF0b3IgLSAoYWNjdW11bGF0b3IgJSB0YXJnZXRCYXNlKSkgLyB0YXJnZXRCYXNlO1xyXG4gICAgICAgICAgICAgICAgcmVtYWluZGVyID0gYWNjdW11bGF0b3IgJSB0YXJnZXRCYXNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHF1b3RpZW50Lmxlbmd0aCA+IDAgfHwgZGlnaXQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVvdGllbnQucHVzaChkaWdpdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3V0LnB1c2gocmVtYWluZGVyKTtcclxuICAgICAgICAgICAgc291cmNlID0gcXVvdGllbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHBhZCBvdXRwdXQgd2l0aCB6ZXJvZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb2VzIGluIHRoZSBtZXNzYWdlXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZXNzYWdlLmxlbmd0aCAtIDEgJiYgbWVzc2FnZVtpXSA9PT0gMDsgaSsrKSB7XHJcbiAgICAgICAgICAgIG91dC5wdXNoKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gb3V0LnJldmVyc2UoKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEVuY29kZXMgYSBzZXF1ZW5jZSBvZiBieXRlcyBpbiBCYXNlNjIgZW5jb2RpbmcuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgYSBieXRlIHNlcXVlbmNlLlxyXG4gICAgICogQHJldHVybiBhIHNlcXVlbmNlIG9mIEJhc2U2Mi1lbmNvZGVkIGJ5dGVzLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XHJcbiAgICAgICAgdmFyIGluZGljZXMgPSBCYXNlNjJTdHIuY29udmVydChtZXNzYWdlLCBCYXNlNjJTdHIuU1RBTkRBUkRfQkFTRSwgQmFzZTYyU3RyLlRBUkdFVF9CQVNFKTtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLnRyYW5zbGF0ZShpbmRpY2VzLCB0aGlzLmFscGhhYmV0KTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIERlY29kZXMgYSBzZXF1ZW5jZSBvZiBCYXNlNjItZW5jb2RlZCBieXRlcy5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZW5jb2RlZCBhIHNlcXVlbmNlIG9mIEJhc2U2Mi1lbmNvZGVkIGJ5dGVzLlxyXG4gICAgICogQHJldHVybiBhIGJ5dGUgc2VxdWVuY2UuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gKGVuY29kZWQpIHtcclxuICAgICAgICB2YXIgcHJlcGFyZWQgPSBCYXNlNjJTdHIudHJhbnNsYXRlKGVuY29kZWQsIHRoaXMubG9va3VwKTtcclxuICAgICAgICByZXR1cm4gQmFzZTYyU3RyLmNvbnZlcnQocHJlcGFyZWQsIEJhc2U2MlN0ci5UQVJHRVRfQkFTRSwgQmFzZTYyU3RyLlNUQU5EQVJEX0JBU0UpO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZW5jb2RlU3RyID0gZnVuY3Rpb24gKGlucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci5nZXRTdHJpbmcodGhpcy5lbmNvZGUoQmFzZTYyU3RyLmdldEJ5dGVzKGlucHV0KSkpO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5wcm90b3R5cGUuZGVjb2RlU3RyID0gZnVuY3Rpb24gKGlucHV0KSB7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci5nZXRTdHJpbmcodGhpcy5kZWNvZGUoQmFzZTYyU3RyLmdldEJ5dGVzKGlucHV0KSkpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyB0aGUgbG9va3VwIHRhYmxlIGZyb20gY2hhcmFjdGVyIHRvIGluZGV4IG9mIGNoYXJhY3RlciBpbiBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmNyZWF0ZUxvb2t1cFRhYmxlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBsb29rdXAgPSBuZXcgQXJyYXkoMjU2KTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXHJcbiAgICAgICAgICAgIGxvb2t1cFt0aGlzLmFscGhhYmV0W2ldXSA9IChpICYgMHhGRik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsb29rdXA7XHJcbiAgICB9O1xyXG4gICAgQmFzZTYyU3RyLkNoYXJhY3RlclNldHMgPSB7XHJcbiAgICAgICAgR01QOiBbXHJcbiAgICAgICAgICAgICcwJy5jaGFyQ29kZUF0KDApLCAnMScuY2hhckNvZGVBdCgwKSwgJzInLmNoYXJDb2RlQXQoMCksICczJy5jaGFyQ29kZUF0KDApLCAnNCcuY2hhckNvZGVBdCgwKSwgJzUnLmNoYXJDb2RlQXQoMCksICc2Jy5jaGFyQ29kZUF0KDApLCAnNycuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJzgnLmNoYXJDb2RlQXQoMCksICc5Jy5jaGFyQ29kZUF0KDApLCAnQScuY2hhckNvZGVBdCgwKSwgJ0InLmNoYXJDb2RlQXQoMCksICdDJy5jaGFyQ29kZUF0KDApLCAnRCcuY2hhckNvZGVBdCgwKSwgJ0UnLmNoYXJDb2RlQXQoMCksICdGJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnRycuY2hhckNvZGVBdCgwKSwgJ0gnLmNoYXJDb2RlQXQoMCksICdJJy5jaGFyQ29kZUF0KDApLCAnSicuY2hhckNvZGVBdCgwKSwgJ0snLmNoYXJDb2RlQXQoMCksICdMJy5jaGFyQ29kZUF0KDApLCAnTScuY2hhckNvZGVBdCgwKSwgJ04nLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdPJy5jaGFyQ29kZUF0KDApLCAnUCcuY2hhckNvZGVBdCgwKSwgJ1EnLmNoYXJDb2RlQXQoMCksICdSJy5jaGFyQ29kZUF0KDApLCAnUycuY2hhckNvZGVBdCgwKSwgJ1QnLmNoYXJDb2RlQXQoMCksICdVJy5jaGFyQ29kZUF0KDApLCAnVicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ1cnLmNoYXJDb2RlQXQoMCksICdYJy5jaGFyQ29kZUF0KDApLCAnWScuY2hhckNvZGVBdCgwKSwgJ1onLmNoYXJDb2RlQXQoMCksICdhJy5jaGFyQ29kZUF0KDApLCAnYicuY2hhckNvZGVBdCgwKSwgJ2MnLmNoYXJDb2RlQXQoMCksICdkJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnZScuY2hhckNvZGVBdCgwKSwgJ2YnLmNoYXJDb2RlQXQoMCksICdnJy5jaGFyQ29kZUF0KDApLCAnaCcuY2hhckNvZGVBdCgwKSwgJ2knLmNoYXJDb2RlQXQoMCksICdqJy5jaGFyQ29kZUF0KDApLCAnaycuY2hhckNvZGVBdCgwKSwgJ2wnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdtJy5jaGFyQ29kZUF0KDApLCAnbicuY2hhckNvZGVBdCgwKSwgJ28nLmNoYXJDb2RlQXQoMCksICdwJy5jaGFyQ29kZUF0KDApLCAncScuY2hhckNvZGVBdCgwKSwgJ3InLmNoYXJDb2RlQXQoMCksICdzJy5jaGFyQ29kZUF0KDApLCAndCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ3UnLmNoYXJDb2RlQXQoMCksICd2Jy5jaGFyQ29kZUF0KDApLCAndycuY2hhckNvZGVBdCgwKSwgJ3gnLmNoYXJDb2RlQXQoMCksICd5Jy5jaGFyQ29kZUF0KDApLCAneicuY2hhckNvZGVBdCgwKVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgSU5WRVJURUQ6IFtcclxuICAgICAgICAgICAgJzAnLmNoYXJDb2RlQXQoMCksICcxJy5jaGFyQ29kZUF0KDApLCAnMicuY2hhckNvZGVBdCgwKSwgJzMnLmNoYXJDb2RlQXQoMCksICc0Jy5jaGFyQ29kZUF0KDApLCAnNScuY2hhckNvZGVBdCgwKSwgJzYnLmNoYXJDb2RlQXQoMCksICc3Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnOCcuY2hhckNvZGVBdCgwKSwgJzknLmNoYXJDb2RlQXQoMCksICdhJy5jaGFyQ29kZUF0KDApLCAnYicuY2hhckNvZGVBdCgwKSwgJ2MnLmNoYXJDb2RlQXQoMCksICdkJy5jaGFyQ29kZUF0KDApLCAnZScuY2hhckNvZGVBdCgwKSwgJ2YnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdnJy5jaGFyQ29kZUF0KDApLCAnaCcuY2hhckNvZGVBdCgwKSwgJ2knLmNoYXJDb2RlQXQoMCksICdqJy5jaGFyQ29kZUF0KDApLCAnaycuY2hhckNvZGVBdCgwKSwgJ2wnLmNoYXJDb2RlQXQoMCksICdtJy5jaGFyQ29kZUF0KDApLCAnbicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ28nLmNoYXJDb2RlQXQoMCksICdwJy5jaGFyQ29kZUF0KDApLCAncScuY2hhckNvZGVBdCgwKSwgJ3InLmNoYXJDb2RlQXQoMCksICdzJy5jaGFyQ29kZUF0KDApLCAndCcuY2hhckNvZGVBdCgwKSwgJ3UnLmNoYXJDb2RlQXQoMCksICd2Jy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAndycuY2hhckNvZGVBdCgwKSwgJ3gnLmNoYXJDb2RlQXQoMCksICd5Jy5jaGFyQ29kZUF0KDApLCAneicuY2hhckNvZGVBdCgwKSwgJ0EnLmNoYXJDb2RlQXQoMCksICdCJy5jaGFyQ29kZUF0KDApLCAnQycuY2hhckNvZGVBdCgwKSwgJ0QnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdFJy5jaGFyQ29kZUF0KDApLCAnRicuY2hhckNvZGVBdCgwKSwgJ0cnLmNoYXJDb2RlQXQoMCksICdIJy5jaGFyQ29kZUF0KDApLCAnSScuY2hhckNvZGVBdCgwKSwgJ0onLmNoYXJDb2RlQXQoMCksICdLJy5jaGFyQ29kZUF0KDApLCAnTCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ00nLmNoYXJDb2RlQXQoMCksICdOJy5jaGFyQ29kZUF0KDApLCAnTycuY2hhckNvZGVBdCgwKSwgJ1AnLmNoYXJDb2RlQXQoMCksICdRJy5jaGFyQ29kZUF0KDApLCAnUicuY2hhckNvZGVBdCgwKSwgJ1MnLmNoYXJDb2RlQXQoMCksICdUJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnVScuY2hhckNvZGVBdCgwKSwgJ1YnLmNoYXJDb2RlQXQoMCksICdXJy5jaGFyQ29kZUF0KDApLCAnWCcuY2hhckNvZGVBdCgwKSwgJ1knLmNoYXJDb2RlQXQoMCksICdaJy5jaGFyQ29kZUF0KDApXHJcbiAgICAgICAgXVxyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5TVEFOREFSRF9CQVNFID0gMjU2O1xyXG4gICAgQmFzZTYyU3RyLlRBUkdFVF9CQVNFID0gNjI7XHJcbiAgICByZXR1cm4gQmFzZTYyU3RyO1xyXG59KCkpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSBCYXNlNjJTdHI7XHJcbiIsIlwidXNlIHN0cmljdFwiO1xuLypcbkNvcHlyaWdodCAyMDIwIFNvcnVub21lXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IEdDX0RFTEFZID0gNTtcbmNsYXNzIEV4cGlyZVNldCB7XG4gICAgY29uc3RydWN0b3IodGltZW91dCwgZ2NEZWxheSkge1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0O1xuICAgICAgICB0aGlzLmRiID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5leHRHYyA9IG51bGw7XG4gICAgICAgIHRoaXMuZ2NEZWxheSA9IGdjRGVsYXkgfHwgR0NfREVMQVk7XG4gICAgfVxuICAgIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYi5zaXplO1xuICAgIH1cbiAgICBnZXQgYWxsKCkge1xuICAgICAgICBjb25zdCBzID0gbmV3IFNldCgpO1xuICAgICAgICB0aGlzLmRiLmZvckVhY2goKF8sIHYpID0+IHtcbiAgICAgICAgICAgIHMuYWRkKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuICAgIGFkZCh2YWx1ZSkge1xuICAgICAgICB0aGlzLmRiLnNldCh2YWx1ZSwgRGF0ZS5ub3coKSArIHRoaXMudGltZW91dCk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVHYygpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgaGFzKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRiLmhhcyh2YWx1ZSk7XG4gICAgfVxuICAgIGRlbGV0ZSh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5kYi5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLmRiLmRlbGV0ZSh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlR2ModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGdjKCkge1xuICAgICAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLmRiLmZvckVhY2goKHQsIHYpID0+IHtcbiAgICAgICAgICAgIGlmICh0IDwgbm93KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYi5kZWxldGUodik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm5leHRHYyA9IG51bGw7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVHYygpO1xuICAgIH1cbiAgICBzY2hlZHVsZUdjKGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGZvcmNlICYmIHRoaXMubmV4dEdjKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5uZXh0R2MpO1xuICAgICAgICAgICAgdGhpcy5uZXh0R2MgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm5leHRHYyAhPT0gbnVsbCB8fCB0aGlzLmRiLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdHMgPSAtMTtcbiAgICAgICAgdGhpcy5kYi5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICBpZiAodHMgPT09IC0xIHx8IHQgPCB0cykge1xuICAgICAgICAgICAgICAgIHRzID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0cyA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRzID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0aW1lb3V0ID0gdHMgLSBEYXRlLm5vdygpICsgdGhpcy5nY0RlbGF5O1xuICAgICAgICB0aGlzLm5leHRHYyA9IHNldFRpbWVvdXQodGhpcy5nYy5iaW5kKHRoaXMpLCB0aW1lb3V0KTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBFeHBpcmVTZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IEV4cGlyZVNldDtcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBFeHBpcmVTZXQ7XG4iLCIvKiBlc2xpbnQgbm8tbmVnYXRlZC1jb25kaXRpb246IDAsIG5vLW5ldy1mdW5jOiAwICovXG5cbid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJykge1xuXHRtb2R1bGUuZXhwb3J0cyA9IHNlbGY7XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG5cdG1vZHVsZS5leHBvcnRzID0gd2luZG93O1xufSBlbHNlIHtcblx0bW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsICE9PSAnb2JqZWN0JyB8fCAhZ2xvYmFsIHx8IGdsb2JhbC5NYXRoICE9PSBNYXRoIHx8IGdsb2JhbC5BcnJheSAhPT0gQXJyYXkpIHtcblx0XHRyZXR1cm4gaW1wbGVtZW50YXRpb247XG5cdH1cblx0cmV0dXJuIGdsb2JhbDtcbn07XG4iLCIhZnVuY3Rpb24oZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz10KCk7ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLHQpO2Vsc2V7dmFyIG49dCgpO2Zvcih2YXIgciBpbiBuKShcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzOmUpW3JdPW5bcl19fShzZWxmLCgoKT0+KCgpPT57dmFyIGU9ezMxODplPT57ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX0sZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSw4OmU9PntmdW5jdGlvbiB0KG4pe3JldHVybiBlLmV4cG9ydHM9dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHMsdChuKX1lLmV4cG9ydHM9dCxlLmV4cG9ydHMuX19lc01vZHVsZT0hMCxlLmV4cG9ydHMuZGVmYXVsdD1lLmV4cG9ydHN9LDk5MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PUEVOX0JST0FEQ0FTVF9DSEFOTkVMUz10LkJyb2FkY2FzdENoYW5uZWw9dm9pZCAwLHQuY2xlYXJOb2RlRm9sZGVyPWZ1bmN0aW9uKGUpe2U9KDAscy5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykoZSk7dmFyIHQ9KDAsby5jaG9vc2VNZXRob2QpKGUpO3JldHVyblwibm9kZVwiPT09dC50eXBlP3QuY2xlYXJOb2RlRm9sZGVyKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKTpyLlBST01JU0VfUkVTT0xWRURfRkFMU0V9LHQuZW5mb3JjZU9wdGlvbnM9ZnVuY3Rpb24oZSl7YT1lfTt2YXIgcj1uKDIwMiksbz1uKDYzMikscz1uKDQyMyksaT1uZXcgU2V0O3QuT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFM9aTt2YXIgYSx1PTAsYz1mdW5jdGlvbihlLHQpe3ZhciBuLGM7dGhpcy5pZD11KyssaS5hZGQodGhpcyksdGhpcy5uYW1lPWUsYSYmKHQ9YSksdGhpcy5vcHRpb25zPSgwLHMuZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKHQpLHRoaXMubWV0aG9kPSgwLG8uY2hvb3NlTWV0aG9kKSh0aGlzLm9wdGlvbnMpLHRoaXMuX2lMPSExLHRoaXMuX29uTUw9bnVsbCx0aGlzLl9hZGRFTD17bWVzc2FnZTpbXSxpbnRlcm5hbDpbXX0sdGhpcy5fdU1QPW5ldyBTZXQsdGhpcy5fYmVmQz1bXSx0aGlzLl9wcmVwUD1udWxsLGM9KG49dGhpcykubWV0aG9kLmNyZWF0ZShuLm5hbWUsbi5vcHRpb25zKSwoMCxyLmlzUHJvbWlzZSkoYyk/KG4uX3ByZXBQPWMsYy50aGVuKChmdW5jdGlvbihlKXtuLl9zdGF0ZT1lfSkpKTpuLl9zdGF0ZT1jfTtmdW5jdGlvbiBsKGUsdCxuKXt2YXIgbz17dGltZTplLm1ldGhvZC5taWNyb1NlY29uZHMoKSx0eXBlOnQsZGF0YTpufTtyZXR1cm4oZS5fcHJlcFA/ZS5fcHJlcFA6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHQ9ZS5tZXRob2QucG9zdE1lc3NhZ2UoZS5fc3RhdGUsbyk7cmV0dXJuIGUuX3VNUC5hZGQodCksdC5jYXRjaCgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUuX3VNUC5kZWxldGUodCl9KSksdH0pKX1mdW5jdGlvbiBkKGUpe3JldHVybiBlLl9hZGRFTC5tZXNzYWdlLmxlbmd0aD4wfHxlLl9hZGRFTC5pbnRlcm5hbC5sZW5ndGg+MH1mdW5jdGlvbiBmKGUsdCxuKXtlLl9hZGRFTFt0XS5wdXNoKG4pLGZ1bmN0aW9uKGUpe2lmKCFlLl9pTCYmZChlKSl7dmFyIHQ9ZnVuY3Rpb24odCl7ZS5fYWRkRUxbdC50eXBlXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnRpbWUtMWU1O3QudGltZT49biYmZS5mbih0LmRhdGEpfSkpfSxuPWUubWV0aG9kLm1pY3JvU2Vjb25kcygpO2UuX3ByZXBQP2UuX3ByZXBQLnRoZW4oKGZ1bmN0aW9uKCl7ZS5faUw9ITAsZS5tZXRob2Qub25NZXNzYWdlKGUuX3N0YXRlLHQsbil9KSk6KGUuX2lMPSEwLGUubWV0aG9kLm9uTWVzc2FnZShlLl9zdGF0ZSx0LG4pKX19KGUpfWZ1bmN0aW9uIGgoZSx0LG4pe2UuX2FkZEVMW3RdPWUuX2FkZEVMW3RdLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPT1ufSkpLGZ1bmN0aW9uKGUpe2lmKGUuX2lMJiYhZChlKSl7ZS5faUw9ITE7dmFyIHQ9ZS5tZXRob2QubWljcm9TZWNvbmRzKCk7ZS5tZXRob2Qub25NZXNzYWdlKGUuX3N0YXRlLG51bGwsdCl9fShlKX10LkJyb2FkY2FzdENoYW5uZWw9YyxjLl9wdWJrZXk9ITAsYy5wcm90b3R5cGU9e3Bvc3RNZXNzYWdlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWwucG9zdE1lc3NhZ2UoKTogQ2Fubm90IHBvc3QgbWVzc2FnZSBhZnRlciBjaGFubmVsIGhhcyBjbG9zZWQgXCIrSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiBsKHRoaXMsXCJtZXNzYWdlXCIsZSl9LHBvc3RJbnRlcm5hbDpmdW5jdGlvbihlKXtyZXR1cm4gbCh0aGlzLFwiaW50ZXJuYWxcIixlKX0sc2V0IG9ubWVzc2FnZShlKXt2YXIgdD17dGltZTp0aGlzLm1ldGhvZC5taWNyb1NlY29uZHMoKSxmbjplfTtoKHRoaXMsXCJtZXNzYWdlXCIsdGhpcy5fb25NTCksZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZT8odGhpcy5fb25NTD10LGYodGhpcyxcIm1lc3NhZ2VcIix0KSk6dGhpcy5fb25NTD1udWxsfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7Zih0aGlzLGUse3RpbWU6dGhpcy5tZXRob2QubWljcm9TZWNvbmRzKCksZm46dH0pfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aCh0aGlzLGUsdGhpcy5fYWRkRUxbZV0uZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZm49PT10fSkpKX0sY2xvc2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLmNsb3NlZCl7aS5kZWxldGUodGhpcyksdGhpcy5jbG9zZWQ9ITA7dmFyIHQ9dGhpcy5fcHJlcFA/dGhpcy5fcHJlcFA6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ7cmV0dXJuIHRoaXMuX29uTUw9bnVsbCx0aGlzLl9hZGRFTC5tZXNzYWdlPVtdLHQudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoQXJyYXkuZnJvbShlLl91TVApKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLmFsbChlLl9iZWZDLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZS5tZXRob2QuY2xvc2UoZS5fc3RhdGUpfSkpfX0sZ2V0IHR5cGUoKXtyZXR1cm4gdGhpcy5tZXRob2QudHlwZX0sZ2V0IGlzQ2xvc2VkKCl7cmV0dXJuIHRoaXMuY2xvc2VkfX19LDQzNzooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9big1ODUpO2UuZXhwb3J0cz17QnJvYWRjYXN0Q2hhbm5lbDpyLkJyb2FkY2FzdENoYW5uZWwsY3JlYXRlTGVhZGVyRWxlY3Rpb246ci5jcmVhdGVMZWFkZXJFbGVjdGlvbixjbGVhck5vZGVGb2xkZXI6ci5jbGVhck5vZGVGb2xkZXIsZW5mb3JjZU9wdGlvbnM6ci5lbmZvcmNlT3B0aW9ucyxiZUxlYWRlcjpyLmJlTGVhZGVyfX0sNTg1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIkJyb2FkY2FzdENoYW5uZWxcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5Ccm9hZGNhc3RDaGFubmVsfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5PUEVOX0JST0FEQ0FTVF9DSEFOTkVMU319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImJlTGVhZGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uYmVMZWFkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjbGVhck5vZGVGb2xkZXJcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5jbGVhck5vZGVGb2xkZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJjcmVhdGVMZWFkZXJFbGVjdGlvblwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmNyZWF0ZUxlYWRlckVsZWN0aW9ufX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiZW5mb3JjZU9wdGlvbnNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gci5lbmZvcmNlT3B0aW9uc319KTt2YXIgcj1uKDk5MSksbz1uKDU1MCl9LDU1MDooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5iZUxlYWRlcj1hLHQuY3JlYXRlTGVhZGVyRWxlY3Rpb249ZnVuY3Rpb24oZSx0KXtpZihlLl9sZWFkZXJFbGVjdG9yKXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWwgYWxyZWFkeSBoYXMgYSBsZWFkZXItZWxlY3RvclwiKTt0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fChlPXt9KSwoZT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKSkuZmFsbGJhY2tJbnRlcnZhbHx8KGUuZmFsbGJhY2tJbnRlcnZhbD0zZTMpLGUucmVzcG9uc2VUaW1lfHwoZS5yZXNwb25zZVRpbWU9dC5tZXRob2QuYXZlcmFnZVJlc3BvbnNlVGltZSh0Lm9wdGlvbnMpKSxlfSh0LGUpO3ZhciBuPW5ldyBzKGUsdCk7cmV0dXJuIGUuX2JlZkMucHVzaCgoZnVuY3Rpb24oKXtyZXR1cm4gbi5kaWUoKX0pKSxlLl9sZWFkZXJFbGVjdG9yPW4sbn07dmFyIHI9bigyMDIpLG89big0OTkpLHM9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3RoaXMuYnJvYWRjYXN0Q2hhbm5lbD1lLHRoaXMuX29wdGlvbnM9dCx0aGlzLmlzTGVhZGVyPSExLHRoaXMuaGFzTGVhZGVyPSExLHRoaXMuaXNEZWFkPSExLHRoaXMudG9rZW49KDAsci5yYW5kb21Ub2tlbikoKSx0aGlzLl9hcGxRPXIuUFJPTUlTRV9SRVNPTFZFRF9WT0lELHRoaXMuX2FwbFFDPTAsdGhpcy5fdW5sPVtdLHRoaXMuX2xzdG5zPVtdLHRoaXMuX2RwTD1mdW5jdGlvbigpe30sdGhpcy5fZHBMQz0hMTt2YXIgbz1mdW5jdGlvbihlKXtcImxlYWRlclwiPT09ZS5jb250ZXh0JiYoXCJkZWF0aFwiPT09ZS5hY3Rpb24mJihuLmhhc0xlYWRlcj0hMSksXCJ0ZWxsXCI9PT1lLmFjdGlvbiYmKG4uaGFzTGVhZGVyPSEwKSl9O3RoaXMuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixvKSx0aGlzLl9sc3Rucy5wdXNoKG8pfTtmdW5jdGlvbiBpKGUsdCl7dmFyIG49e2NvbnRleHQ6XCJsZWFkZXJcIixhY3Rpb246dCx0b2tlbjplLnRva2VufTtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLnBvc3RJbnRlcm5hbChuKX1mdW5jdGlvbiBhKGUpe2UuaXNMZWFkZXI9ITAsZS5oYXNMZWFkZXI9ITA7dmFyIHQ9KDAsby5hZGQpKChmdW5jdGlvbigpe3JldHVybiBlLmRpZSgpfSkpO2UuX3VubC5wdXNoKHQpO3ZhciBuPWZ1bmN0aW9uKHQpe1wibGVhZGVyXCI9PT10LmNvbnRleHQmJlwiYXBwbHlcIj09PXQuYWN0aW9uJiZpKGUsXCJ0ZWxsXCIpLFwibGVhZGVyXCIhPT10LmNvbnRleHR8fFwidGVsbFwiIT09dC5hY3Rpb258fGUuX2RwTEN8fChlLl9kcExDPSEwLGUuX2RwTCgpLGkoZSxcInRlbGxcIikpfTtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLG4pLGUuX2xzdG5zLnB1c2gobiksaShlLFwidGVsbFwiKX1zLnByb3RvdHlwZT17YXBwbHlPbmNlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMuaXNMZWFkZXI/KDAsci5zbGVlcCkoMCwhMCk6dGhpcy5pc0RlYWQ/KDAsci5zbGVlcCkoMCwhMSk6dGhpcy5fYXBsUUM+MT90aGlzLl9hcGxROih0aGlzLl9hcGxRQz10aGlzLl9hcGxRQysxLHRoaXMuX2FwbFE9dGhpcy5fYXBsUS50aGVuKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe2lmKHQuaXNMZWFkZXIpcmV0dXJuIHIuUFJPTUlTRV9SRVNPTFZFRF9UUlVFO3ZhciBuLG89ITEscz1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7bj1mdW5jdGlvbigpe289ITAsZSgpfX0pKSx1PVtdLGM9ZnVuY3Rpb24oZSl7XCJsZWFkZXJcIj09PWUuY29udGV4dCYmZS50b2tlbiE9dC50b2tlbiYmKHUucHVzaChlKSxcImFwcGx5XCI9PT1lLmFjdGlvbiYmZS50b2tlbj50LnRva2VuJiZuKCksXCJ0ZWxsXCI9PT1lLmFjdGlvbiYmKG4oKSx0Lmhhc0xlYWRlcj0hMCkpfTt0LmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsYyk7dmFyIGw9ZT80KnQuX29wdGlvbnMucmVzcG9uc2VUaW1lOnQuX29wdGlvbnMucmVzcG9uc2VUaW1lO3JldHVybiBpKHQsXCJhcHBseVwiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJhY2UoWygwLHIuc2xlZXApKGwpLHMudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKX0pKV0pfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGkodCxcImFwcGx5XCIpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmFjZShbKDAsci5zbGVlcCkobCkscy50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IpfSkpXSl9KSkuY2F0Y2goKGZ1bmN0aW9uKCl7fSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixjKSwhbyYmYSh0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiEwfSkpfSkpfSgpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7dC5fYXBsUUM9dC5fYXBsUUMtMX0pKSx0aGlzLl9hcGxRLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaXNMZWFkZXJ9KSkpfSxhd2FpdExlYWRlcnNoaXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYUxQfHwodGhpcy5fYUxQPShlPXRoaXMpLmlzTGVhZGVyP3IuUFJPTUlTRV9SRVNPTFZFRF9WT0lEOm5ldyBQcm9taXNlKChmdW5jdGlvbih0KXt2YXIgbj0hMTtmdW5jdGlvbiBvKCl7bnx8KG49ITAsZS5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHMpLHQoITApKX1lLmFwcGx5T25jZSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5pc0xlYWRlciYmbygpfSkpLGZ1bmN0aW9uIHQoKXtyZXR1cm4oMCxyLnNsZWVwKShlLl9vcHRpb25zLmZhbGxiYWNrSW50ZXJ2YWwpLnRoZW4oKGZ1bmN0aW9uKCl7aWYoIWUuaXNEZWFkJiYhbilyZXR1cm4gZS5pc0xlYWRlcj92b2lkIG8oKTplLmFwcGx5T25jZSghMCkudGhlbigoZnVuY3Rpb24oKXtlLmlzTGVhZGVyP28oKTp0KCl9KSl9KSl9KCk7dmFyIHM9ZnVuY3Rpb24odCl7XCJsZWFkZXJcIj09PXQuY29udGV4dCYmXCJkZWF0aFwiPT09dC5hY3Rpb24mJihlLmhhc0xlYWRlcj0hMSxlLmFwcGx5T25jZSgpLnRoZW4oKGZ1bmN0aW9uKCl7ZS5pc0xlYWRlciYmbygpfSkpKX07ZS5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHMpLGUuX2xzdG5zLnB1c2gocyl9KSkpLHRoaXMuX2FMUDt2YXIgZX0sc2V0IG9uZHVwbGljYXRlKGUpe3RoaXMuX2RwTD1lfSxkaWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLl9sc3Rucy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5icm9hZGNhc3RDaGFubmVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLHQpfSkpLHRoaXMuX2xzdG5zPVtdLHRoaXMuX3VubC5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZW1vdmUoKX0pKSx0aGlzLl91bmw9W10sdGhpcy5pc0xlYWRlciYmKHRoaXMuaGFzTGVhZGVyPSExLHRoaXMuaXNMZWFkZXI9ITEpLHRoaXMuaXNEZWFkPSEwLGkodGhpcyxcImRlYXRoXCIpfX19LDYzMjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigzMTgpO24oOCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5jaG9vc2VNZXRob2Q9ZnVuY3Rpb24oZSl7dmFyIHQ9W10uY29uY2F0KGUubWV0aG9kcyxjKS5maWx0ZXIoQm9vbGVhbik7aWYoZS50eXBlKXtpZihcInNpbXVsYXRlXCI9PT1lLnR5cGUpcmV0dXJuIGEuZGVmYXVsdDt2YXIgbj10LmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnR5cGU9PT1lLnR5cGV9KSk7aWYobilyZXR1cm4gbjt0aHJvdyBuZXcgRXJyb3IoXCJtZXRob2QtdHlwZSBcIitlLnR5cGUrXCIgbm90IGZvdW5kXCIpfWUud2ViV29ya2VyU3VwcG9ydHx8dS5pc05vZGV8fCh0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm5cImlkYlwiIT09ZS50eXBlfSkpKTt2YXIgcj10LmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNhbkJlVXNlZCgpfSkpO2lmKHIpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKFwiTm8gdXNlYWJsZSBtZXRob2QgZm91bmQgaW4gXCIrSlNPTi5zdHJpbmdpZnkoYy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGV9KSkpKX07dmFyIG89cihuKDExNSkpLHM9cihuKDEyMikpLGk9cihuKDkyNCkpLGE9cihuKDU3NCkpLHU9bigyMDIpLGM9W28uZGVmYXVsdCxzLmRlZmF1bHQsaS5kZWZhdWx0XX0sMTIyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9dyx0LmNhbkJlVXNlZD1DLHQuY2xlYW5PbGRNZXNzYWdlcz1wLHQuY2xvc2U9eSx0LmNyZWF0ZT12LHQuY3JlYXRlRGF0YWJhc2U9Yyx0LmRlZmF1bHQ9dm9pZCAwLHQuZ2V0QWxsTWVzc2FnZXM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50cmFuc2FjdGlvbihhKS5vYmplY3RTdG9yZShhKSxuPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dC5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKHQpe3ZhciByPXQudGFyZ2V0LnJlc3VsdDtyPyhuLnB1c2goci52YWx1ZSksci5jb250aW51ZSgpKTplKG4pfX0pKX0sdC5nZXRJZGI9dSx0LmdldE1lc3NhZ2VzSGlnaGVyVGhhbj1kLHQuZ2V0T2xkTWVzc2FnZXM9aCx0Lm1pY3JvU2Vjb25kcz12b2lkIDAsdC5vbk1lc3NhZ2U9Xyx0LnBvc3RNZXNzYWdlPWIsdC5yZW1vdmVNZXNzYWdlQnlJZD1mLHQudHlwZT12b2lkIDAsdC53cml0ZU1lc3NhZ2U9bDt2YXIgcj1uKDIwMiksbz1uKDE1MSkscz1uKDQyMyksaT1yLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1pO3ZhciBhPVwibWVzc2FnZXNcIjtmdW5jdGlvbiB1KCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGluZGV4ZWREQilyZXR1cm4gaW5kZXhlZERCO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpe2lmKHZvaWQgMCE9PXdpbmRvdy5tb3pJbmRleGVkREIpcmV0dXJuIHdpbmRvdy5tb3pJbmRleGVkREI7aWYodm9pZCAwIT09d2luZG93LndlYmtpdEluZGV4ZWREQilyZXR1cm4gd2luZG93LndlYmtpdEluZGV4ZWREQjtpZih2b2lkIDAhPT13aW5kb3cubXNJbmRleGVkREIpcmV0dXJuIHdpbmRvdy5tc0luZGV4ZWREQn1yZXR1cm4hMX1mdW5jdGlvbiBjKGUpe3ZhciB0PVwicHVia2V5LmJyb2FkY2FzdC1jaGFubmVsLTAtXCIrZSxuPXUoKS5vcGVuKHQsMSk7cmV0dXJuIG4ub251cGdyYWRlbmVlZGVkPWZ1bmN0aW9uKGUpe2UudGFyZ2V0LnJlc3VsdC5jcmVhdGVPYmplY3RTdG9yZShhLHtrZXlQYXRoOlwiaWRcIixhdXRvSW5jcmVtZW50OiEwfSl9LG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe24ub25lcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlKX0sbi5vbnN1Y2Nlc3M9ZnVuY3Rpb24oKXtlKG4ucmVzdWx0KX19KSl9ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9e3V1aWQ6dCx0aW1lOihuZXcgRGF0ZSkuZ2V0VGltZSgpLGRhdGE6bn0sbz1lLnRyYW5zYWN0aW9uKFthXSxcInJlYWR3cml0ZVwiKTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsdCl7by5vbmNvbXBsZXRlPWZ1bmN0aW9uKCl7cmV0dXJuIGUoKX0sby5vbmVycm9yPWZ1bmN0aW9uKGUpe3JldHVybiB0KGUpfSxvLm9iamVjdFN0b3JlKGEpLmFkZChyKX0pKX1mdW5jdGlvbiBkKGUsdCl7dmFyIG49ZS50cmFuc2FjdGlvbihhKS5vYmplY3RTdG9yZShhKSxyPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKCl7dHJ5e3ZhciBlPUlEQktleVJhbmdlLmJvdW5kKHQrMSwxLzApO3JldHVybiBuLm9wZW5DdXJzb3IoZSl9Y2F0Y2goZSl7cmV0dXJuIG4ub3BlbkN1cnNvcigpfX0oKSkub25zdWNjZXNzPWZ1bmN0aW9uKG4pe3ZhciBvPW4udGFyZ2V0LnJlc3VsdDtvP28udmFsdWUuaWQ8dCsxP28uY29udGludWUodCsxKTooci5wdXNoKG8udmFsdWUpLG8uY29udGludWUoKSk6ZShyKX19KSl9ZnVuY3Rpb24gZihlLHQpe3ZhciBuPWUudHJhbnNhY3Rpb24oW2FdLFwicmVhZHdyaXRlXCIpLm9iamVjdFN0b3JlKGEpLmRlbGV0ZSh0KTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe24ub25zdWNjZXNzPWZ1bmN0aW9uKCl7cmV0dXJuIGUoKX19KSl9ZnVuY3Rpb24gaChlLHQpe3ZhciBuPShuZXcgRGF0ZSkuZ2V0VGltZSgpLXQscj1lLnRyYW5zYWN0aW9uKGEpLm9iamVjdFN0b3JlKGEpLG89W107cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLm9wZW5DdXJzb3IoKS5vbnN1Y2Nlc3M9ZnVuY3Rpb24odCl7dmFyIHI9dC50YXJnZXQucmVzdWx0O2lmKHIpe3ZhciBzPXIudmFsdWU7aWYoIShzLnRpbWU8bikpcmV0dXJuIHZvaWQgZShvKTtvLnB1c2gocyksci5jb250aW51ZSgpfWVsc2UgZShvKX19KSl9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBoKGUsdCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UuYWxsKHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZihlLHQuaWQpfSkpKX0pKX1mdW5jdGlvbiB2KGUsdCl7cmV0dXJuIHQ9KDAscy5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cykodCksYyhlKS50aGVuKChmdW5jdGlvbihuKXt2YXIgcz17Y2xvc2VkOiExLGxhc3RDdXJzb3JJZDowLGNoYW5uZWxOYW1lOmUsb3B0aW9uczp0LHV1aWQ6KDAsci5yYW5kb21Ub2tlbikoKSxlTUlzOm5ldyBvLk9ibGl2aW91c1NldCgyKnQuaWRiLnR0bCksd3JpdGVCbG9ja1Byb21pc2U6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUQsbWVzc2FnZXNDYWxsYmFjazpudWxsLHJlYWRRdWV1ZVByb21pc2VzOltdLGRiOm59O3JldHVybiBuLm9uY2xvc2U9ZnVuY3Rpb24oKXtzLmNsb3NlZD0hMCx0LmlkYi5vbmNsb3NlJiZ0LmlkYi5vbmNsb3NlKCl9LG0ocyksc30pKX1mdW5jdGlvbiBtKGUpe2UuY2xvc2VkfHxnKGUpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuKDAsci5zbGVlcCkoZS5vcHRpb25zLmlkYi5mYWxsYmFja0ludGVydmFsKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBtKGUpfSkpfWZ1bmN0aW9uIGcoZSl7cmV0dXJuIGUuY2xvc2VkP3IuUFJPTUlTRV9SRVNPTFZFRF9WT0lEOmUubWVzc2FnZXNDYWxsYmFjaz9kKGUuZGIsZS5sYXN0Q3Vyc29ySWQpLnRoZW4oKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hIWV9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD5lLmxhc3RDdXJzb3JJZCYmKGUubGFzdEN1cnNvcklkPXQuaWQpLHR9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtyZXR1cm4hKGUudXVpZD09PXQudXVpZHx8dC5lTUlzLmhhcyhlLmlkKXx8ZS5kYXRhLnRpbWU8dC5tZXNzYWdlc0NhbGxiYWNrVGltZSl9KHQsZSl9KSkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS50aW1lLXQudGltZX0pKTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbih0KXtlLm1lc3NhZ2VzQ2FsbGJhY2smJihlLmVNSXMuYWRkKHQuaWQpLGUubWVzc2FnZXNDYWxsYmFjayh0LmRhdGEpKX0pKSxyLlBST01JU0VfUkVTT0xWRURfVk9JRH0pKTpyLlBST01JU0VfUkVTT0xWRURfVk9JRH1mdW5jdGlvbiB5KGUpe2UuY2xvc2VkPSEwLGUuZGIuY2xvc2UoKX1mdW5jdGlvbiBiKGUsdCl7cmV0dXJuIGUud3JpdGVCbG9ja1Byb21pc2U9ZS53cml0ZUJsb2NrUHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3JldHVybiBsKGUuZGIsZS51dWlkLHQpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7MD09PSgwLHIucmFuZG9tSW50KSgwLDEwKSYmcChlLmRiLGUub3B0aW9ucy5pZGIudHRsKX0pKSxlLndyaXRlQmxvY2tQcm9taXNlfWZ1bmN0aW9uIF8oZSx0LG4pe2UubWVzc2FnZXNDYWxsYmFja1RpbWU9bixlLm1lc3NhZ2VzQ2FsbGJhY2s9dCxnKGUpfWZ1bmN0aW9uIEMoKXtyZXR1cm4hci5pc05vZGUmJiEhdSgpfWZ1bmN0aW9uIHcoZSl7cmV0dXJuIDIqZS5pZGIuZmFsbGJhY2tJbnRlcnZhbH10LnR5cGU9XCJpZGJcIjt2YXIgRT17Y3JlYXRlOnYsY2xvc2U6eSxvbk1lc3NhZ2U6Xyxwb3N0TWVzc2FnZTpiLGNhbkJlVXNlZDpDLHR5cGU6XCJpZGJcIixhdmVyYWdlUmVzcG9uc2VUaW1lOncsbWljcm9TZWNvbmRzOml9O3QuZGVmYXVsdD1FfSw5MjQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYWRkU3RvcmFnZUV2ZW50TGlzdGVuZXI9ZCx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9Zyx0LmNhbkJlVXNlZD1tLHQuY2xvc2U9cCx0LmNyZWF0ZT1oLHQuZGVmYXVsdD12b2lkIDAsdC5nZXRMb2NhbFN0b3JhZ2U9dSx0Lm1pY3JvU2Vjb25kcz12b2lkIDAsdC5vbk1lc3NhZ2U9dix0LnBvc3RNZXNzYWdlPWwsdC5yZW1vdmVTdG9yYWdlRXZlbnRMaXN0ZW5lcj1mLHQuc3RvcmFnZUtleT1jLHQudHlwZT12b2lkIDA7dmFyIHI9bigxNTEpLG89big0MjMpLHM9bigyMDIpLGk9cy5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9aTt2YXIgYT1cImxvY2Fsc3RvcmFnZVwiO2Z1bmN0aW9uIHUoKXt2YXIgZTtpZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93KXJldHVybiBudWxsO3RyeXtlPXdpbmRvdy5sb2NhbFN0b3JhZ2UsZT13aW5kb3dbXCJpZTgtZXZlbnRsaXN0ZW5lci9zdG9yYWdlXCJdfHx3aW5kb3cubG9jYWxTdG9yYWdlfWNhdGNoKGUpe31yZXR1cm4gZX1mdW5jdGlvbiBjKGUpe3JldHVyblwicHVia2V5LmJyb2FkY2FzdENoYW5uZWwtXCIrZX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXsoMCxzLnNsZWVwKSgpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIHI9YyhlLmNoYW5uZWxOYW1lKSxvPXt0b2tlbjooMCxzLnJhbmRvbVRva2VuKSgpLHRpbWU6KG5ldyBEYXRlKS5nZXRUaW1lKCksZGF0YTp0LHV1aWQ6ZS51dWlkfSxpPUpTT04uc3RyaW5naWZ5KG8pO3UoKS5zZXRJdGVtKHIsaSk7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKTthLmluaXRFdmVudChcInN0b3JhZ2VcIiwhMCwhMCksYS5rZXk9cixhLm5ld1ZhbHVlPWksd2luZG93LmRpc3BhdGNoRXZlbnQoYSksbigpfSkpfSkpfWZ1bmN0aW9uIGQoZSx0KXt2YXIgbj1jKGUpLHI9ZnVuY3Rpb24oZSl7ZS5rZXk9PT1uJiZ0KEpTT04ucGFyc2UoZS5uZXdWYWx1ZSkpfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJzdG9yYWdlXCIscikscn1mdW5jdGlvbiBmKGUpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic3RvcmFnZVwiLGUpfWZ1bmN0aW9uIGgoZSx0KXtpZih0PSgwLG8uZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKHQpLCFtKCkpdGhyb3cgbmV3IEVycm9yKFwiQnJvYWRjYXN0Q2hhbm5lbDogbG9jYWxzdG9yYWdlIGNhbm5vdCBiZSB1c2VkXCIpO3ZhciBuPSgwLHMucmFuZG9tVG9rZW4pKCksaT1uZXcgci5PYmxpdmlvdXNTZXQodC5sb2NhbHN0b3JhZ2UucmVtb3ZlVGltZW91dCksYT17Y2hhbm5lbE5hbWU6ZSx1dWlkOm4sZU1JczppfTtyZXR1cm4gYS5saXN0ZW5lcj1kKGUsKGZ1bmN0aW9uKGUpe2EubWVzc2FnZXNDYWxsYmFjayYmZS51dWlkIT09biYmZS50b2tlbiYmIWkuaGFzKGUudG9rZW4pJiYoZS5kYXRhLnRpbWUmJmUuZGF0YS50aW1lPGEubWVzc2FnZXNDYWxsYmFja1RpbWV8fChpLmFkZChlLnRva2VuKSxhLm1lc3NhZ2VzQ2FsbGJhY2soZS5kYXRhKSkpfSkpLGF9ZnVuY3Rpb24gcChlKXtmKGUubGlzdGVuZXIpfWZ1bmN0aW9uIHYoZSx0LG4pe2UubWVzc2FnZXNDYWxsYmFja1RpbWU9bixlLm1lc3NhZ2VzQ2FsbGJhY2s9dH1mdW5jdGlvbiBtKCl7aWYocy5pc05vZGUpcmV0dXJuITE7dmFyIGU9dSgpO2lmKCFlKXJldHVybiExO3RyeXt2YXIgdD1cIl9fYnJvYWRjYXN0Y2hhbm5lbF9jaGVja1wiO2Uuc2V0SXRlbSh0LFwid29ya3NcIiksZS5yZW1vdmVJdGVtKHQpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGcoKXt2YXIgZT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUuaW5jbHVkZXMoXCJzYWZhcmlcIikmJiFlLmluY2x1ZGVzKFwiY2hyb21lXCIpPzI0MDoxMjB9dC50eXBlPWE7dmFyIHk9e2NyZWF0ZTpoLGNsb3NlOnAsb25NZXNzYWdlOnYscG9zdE1lc3NhZ2U6bCxjYW5CZVVzZWQ6bSx0eXBlOmEsYXZlcmFnZVJlc3BvbnNlVGltZTpnLG1pY3JvU2Vjb25kczppfTt0LmRlZmF1bHQ9eX0sMTE1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9ZCx0LmNhbkJlVXNlZD1sLHQuY2xvc2U9YSx0LmNyZWF0ZT1pLHQubWljcm9TZWNvbmRzPXQuZGVmYXVsdD12b2lkIDAsdC5vbk1lc3NhZ2U9Yyx0LnBvc3RNZXNzYWdlPXUsdC50eXBlPXZvaWQgMDt2YXIgcj1uKDIwMiksbz1yLm1pY3JvU2Vjb25kczt0Lm1pY3JvU2Vjb25kcz1vO3ZhciBzPVwibmF0aXZlXCI7ZnVuY3Rpb24gaShlKXt2YXIgdD17bWVzc2FnZXNDYWxsYmFjazpudWxsLGJjOm5ldyBCcm9hZGNhc3RDaGFubmVsKGUpLHN1YkZuczpbXX07cmV0dXJuIHQuYmMub25tZXNzYWdlPWZ1bmN0aW9uKGUpe3QubWVzc2FnZXNDYWxsYmFjayYmdC5tZXNzYWdlc0NhbGxiYWNrKGUuZGF0YSl9LHR9ZnVuY3Rpb24gYShlKXtlLmJjLmNsb3NlKCksZS5zdWJGbnM9W119ZnVuY3Rpb24gdShlLHQpe3RyeXtyZXR1cm4gZS5iYy5wb3N0TWVzc2FnZSh0LCExKSxyLlBST01JU0VfUkVTT0xWRURfVk9JRH1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fWZ1bmN0aW9uIGMoZSx0KXtlLm1lc3NhZ2VzQ2FsbGJhY2s9dH1mdW5jdGlvbiBsKCl7aWYoci5pc05vZGUmJlwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCl7aWYoQnJvYWRjYXN0Q2hhbm5lbC5fcHVia2V5KXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWw6IERvIG5vdCBvdmVyd3JpdGUgd2luZG93LkJyb2FkY2FzdENoYW5uZWwgd2l0aCB0aGlzIG1vZHVsZSwgdGhpcyBpcyBub3QgYSBwb2x5ZmlsbFwiKTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBkKCl7cmV0dXJuIDE1MH10LnR5cGU9czt2YXIgZj17Y3JlYXRlOmksY2xvc2U6YSxvbk1lc3NhZ2U6Yyxwb3N0TWVzc2FnZTp1LGNhbkJlVXNlZDpsLHR5cGU6cyxhdmVyYWdlUmVzcG9uc2VUaW1lOmQsbWljcm9TZWNvbmRzOm99O3QuZGVmYXVsdD1mfSw1NzQ6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXZlcmFnZVJlc3BvbnNlVGltZT1kLHQuY2FuQmVVc2VkPWwsdC5jbG9zZT1hLHQuY3JlYXRlPWksdC5taWNyb1NlY29uZHM9dC5kZWZhdWx0PXZvaWQgMCx0Lm9uTWVzc2FnZT1jLHQucG9zdE1lc3NhZ2U9dSx0LnR5cGU9dm9pZCAwO3ZhciByPW4oMjAyKS5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9cjt2YXIgbz1cInNpbXVsYXRlXCI7dC50eXBlPW87dmFyIHM9bmV3IFNldDtmdW5jdGlvbiBpKGUpe3ZhciB0PXtuYW1lOmUsbWVzc2FnZXNDYWxsYmFjazpudWxsfTtyZXR1cm4gcy5hZGQodCksdH1mdW5jdGlvbiBhKGUpe3MuZGVsZXRlKGUpfWZ1bmN0aW9uIHUoZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKG4pe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe0FycmF5LmZyb20ocykuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5uYW1lPT09ZS5uYW1lfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFlLm1lc3NhZ2VzQ2FsbGJhY2t9KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVzc2FnZXNDYWxsYmFjayh0KX0pKSxuKCl9KSw1KX0pKX1mdW5jdGlvbiBjKGUsdCl7ZS5tZXNzYWdlc0NhbGxiYWNrPXR9ZnVuY3Rpb24gbCgpe3JldHVybiEwfWZ1bmN0aW9uIGQoKXtyZXR1cm4gNX12YXIgZj17Y3JlYXRlOmksY2xvc2U6YSxvbk1lc3NhZ2U6Yyxwb3N0TWVzc2FnZTp1LGNhbkJlVXNlZDpsLHR5cGU6byxhdmVyYWdlUmVzcG9uc2VUaW1lOmQsbWljcm9TZWNvbmRzOnJ9O3QuZGVmYXVsdD1mfSw0MjM6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmZpbGxPcHRpb25zV2l0aERlZmF1bHRzPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSk7cmV0dXJuIHZvaWQgMD09PXQud2ViV29ya2VyU3VwcG9ydCYmKHQud2ViV29ya2VyU3VwcG9ydD0hMCksdC5pZGJ8fCh0LmlkYj17fSksdC5pZGIudHRsfHwodC5pZGIudHRsPTQ1ZTMpLHQuaWRiLmZhbGxiYWNrSW50ZXJ2YWx8fCh0LmlkYi5mYWxsYmFja0ludGVydmFsPTE1MCksZS5pZGImJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUuaWRiLm9uY2xvc2UmJih0LmlkYi5vbmNsb3NlPWUuaWRiLm9uY2xvc2UpLHQubG9jYWxzdG9yYWdlfHwodC5sb2NhbHN0b3JhZ2U9e30pLHQubG9jYWxzdG9yYWdlLnJlbW92ZVRpbWVvdXR8fCh0LmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0PTZlNCksZS5tZXRob2RzJiYodC5tZXRob2RzPWUubWV0aG9kcyksdC5ub2RlfHwodC5ub2RlPXt9KSx0Lm5vZGUudHRsfHwodC5ub2RlLnR0bD0xMmU0KSx0Lm5vZGUubWF4UGFyYWxsZWxXcml0ZXN8fCh0Lm5vZGUubWF4UGFyYWxsZWxXcml0ZXM9MjA0OCksdm9pZCAwPT09dC5ub2RlLnVzZUZhc3RQYXRoJiYodC5ub2RlLnVzZUZhc3RQYXRoPSEwKSx0fX0sMjAyOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1uKDE1NSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc05vZGU9dC5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ9dC5QUk9NSVNFX1JFU09MVkVEX1RSVUU9dC5QUk9NSVNFX1JFU09MVkVEX0ZBTFNFPXZvaWQgMCx0LmlzUHJvbWlzZT1mdW5jdGlvbihlKXtyZXR1cm4hKCFlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlLnRoZW4pfSx0Lm1pY3JvU2Vjb25kcz1mdW5jdGlvbigpe3ZhciBlPShuZXcgRGF0ZSkuZ2V0VGltZSgpO3JldHVybiBlPT09YT8xZTMqZSsgKyt1OihhPWUsdT0wLDFlMyplKX0sdC5yYW5kb21JbnQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKih0LWUrMSkrZSl9LHQucmFuZG9tVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIpfSx0LnNsZWVwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV8fChlPTApLG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gbih0KX0pLGUpfSkpfTt2YXIgbz1Qcm9taXNlLnJlc29sdmUoITEpO3QuUFJPTUlTRV9SRVNPTFZFRF9GQUxTRT1vO3ZhciBzPVByb21pc2UucmVzb2x2ZSghMCk7dC5QUk9NSVNFX1JFU09MVkVEX1RSVUU9czt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKTt0LlBST01JU0VfUkVTT0xWRURfVk9JRD1pO3ZhciBhPTAsdT0wLGM9XCJbb2JqZWN0IHByb2Nlc3NdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodm9pZCAwIT09cj9yOjApO3QuaXNOb2RlPWN9LDIyNzooZSx0LG4pPT57dmFyIHI9bigxNTUpO3QuZm9ybWF0QXJncz1mdW5jdGlvbih0KXtpZih0WzBdPSh0aGlzLnVzZUNvbG9ycz9cIiVjXCI6XCJcIikrdGhpcy5uYW1lc3BhY2UrKHRoaXMudXNlQ29sb3JzP1wiICVjXCI6XCIgXCIpK3RbMF0rKHRoaXMudXNlQ29sb3JzP1wiJWMgXCI6XCIgXCIpK1wiK1wiK2UuZXhwb3J0cy5odW1hbml6ZSh0aGlzLmRpZmYpLCF0aGlzLnVzZUNvbG9ycylyZXR1cm47Y29uc3Qgbj1cImNvbG9yOiBcIit0aGlzLmNvbG9yO3Quc3BsaWNlKDEsMCxuLFwiY29sb3I6IGluaGVyaXRcIik7bGV0IHI9MCxvPTA7dFswXS5yZXBsYWNlKC8lW2EtekEtWiVdL2csKGU9PntcIiUlXCIhPT1lJiYocisrLFwiJWNcIj09PWUmJihvPXIpKX0pKSx0LnNwbGljZShvLDAsbil9LHQuc2F2ZT1mdW5jdGlvbihlKXt0cnl7ZT90LnN0b3JhZ2Uuc2V0SXRlbShcImRlYnVnXCIsZSk6dC5zdG9yYWdlLnJlbW92ZUl0ZW0oXCJkZWJ1Z1wiKX1jYXRjaChlKXt9fSx0LmxvYWQ9ZnVuY3Rpb24oKXtsZXQgZTt0cnl7ZT10LnN0b3JhZ2UuZ2V0SXRlbShcImRlYnVnXCIpfWNhdGNoKGUpe31yZXR1cm4hZSYmdm9pZCAwIT09ciYmXCJlbnZcImluIHImJihlPXIuZW52LkRFQlVHKSxlfSx0LnVzZUNvbG9ycz1mdW5jdGlvbigpe3JldHVybiEoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5wcm9jZXNzfHxcInJlbmRlcmVyXCIhPT13aW5kb3cucHJvY2Vzcy50eXBlJiYhd2luZG93LnByb2Nlc3MuX19ud2pzKXx8KFwidW5kZWZpbmVkXCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCFuYXZpZ2F0b3IudXNlckFnZW50fHwhbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC8oZWRnZXx0cmlkZW50KVxcLyhcXGQrKS8pKSYmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5XZWJraXRBcHBlYXJhbmNlfHxcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuY29uc29sZSYmKHdpbmRvdy5jb25zb2xlLmZpcmVidWd8fHdpbmRvdy5jb25zb2xlLmV4Y2VwdGlvbiYmd2luZG93LmNvbnNvbGUudGFibGUpfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSYmcGFyc2VJbnQoUmVnRXhwLiQxLDEwKT49MzF8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvYXBwbGV3ZWJraXRcXC8oXFxkKykvKSl9LHQuc3RvcmFnZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbG9jYWxTdG9yYWdlfWNhdGNoKGUpe319KCksdC5kZXN0cm95PSgoKT0+e2xldCBlPSExO3JldHVybigpPT57ZXx8KGU9ITAsY29uc29sZS53YXJuKFwiSW5zdGFuY2UgbWV0aG9kIGBkZWJ1Zy5kZXN0cm95KClgIGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbiBvZiBgZGVidWdgLlwiKSl9fSkoKSx0LmNvbG9ycz1bXCIjMDAwMENDXCIsXCIjMDAwMEZGXCIsXCIjMDAzM0NDXCIsXCIjMDAzM0ZGXCIsXCIjMDA2NkNDXCIsXCIjMDA2NkZGXCIsXCIjMDA5OUNDXCIsXCIjMDA5OUZGXCIsXCIjMDBDQzAwXCIsXCIjMDBDQzMzXCIsXCIjMDBDQzY2XCIsXCIjMDBDQzk5XCIsXCIjMDBDQ0NDXCIsXCIjMDBDQ0ZGXCIsXCIjMzMwMENDXCIsXCIjMzMwMEZGXCIsXCIjMzMzM0NDXCIsXCIjMzMzM0ZGXCIsXCIjMzM2NkNDXCIsXCIjMzM2NkZGXCIsXCIjMzM5OUNDXCIsXCIjMzM5OUZGXCIsXCIjMzNDQzAwXCIsXCIjMzNDQzMzXCIsXCIjMzNDQzY2XCIsXCIjMzNDQzk5XCIsXCIjMzNDQ0NDXCIsXCIjMzNDQ0ZGXCIsXCIjNjYwMENDXCIsXCIjNjYwMEZGXCIsXCIjNjYzM0NDXCIsXCIjNjYzM0ZGXCIsXCIjNjZDQzAwXCIsXCIjNjZDQzMzXCIsXCIjOTkwMENDXCIsXCIjOTkwMEZGXCIsXCIjOTkzM0NDXCIsXCIjOTkzM0ZGXCIsXCIjOTlDQzAwXCIsXCIjOTlDQzMzXCIsXCIjQ0MwMDAwXCIsXCIjQ0MwMDMzXCIsXCIjQ0MwMDY2XCIsXCIjQ0MwMDk5XCIsXCIjQ0MwMENDXCIsXCIjQ0MwMEZGXCIsXCIjQ0MzMzAwXCIsXCIjQ0MzMzMzXCIsXCIjQ0MzMzY2XCIsXCIjQ0MzMzk5XCIsXCIjQ0MzM0NDXCIsXCIjQ0MzM0ZGXCIsXCIjQ0M2NjAwXCIsXCIjQ0M2NjMzXCIsXCIjQ0M5OTAwXCIsXCIjQ0M5OTMzXCIsXCIjQ0NDQzAwXCIsXCIjQ0NDQzMzXCIsXCIjRkYwMDAwXCIsXCIjRkYwMDMzXCIsXCIjRkYwMDY2XCIsXCIjRkYwMDk5XCIsXCIjRkYwMENDXCIsXCIjRkYwMEZGXCIsXCIjRkYzMzAwXCIsXCIjRkYzMzMzXCIsXCIjRkYzMzY2XCIsXCIjRkYzMzk5XCIsXCIjRkYzM0NDXCIsXCIjRkYzM0ZGXCIsXCIjRkY2NjAwXCIsXCIjRkY2NjMzXCIsXCIjRkY5OTAwXCIsXCIjRkY5OTMzXCIsXCIjRkZDQzAwXCIsXCIjRkZDQzMzXCJdLHQubG9nPWNvbnNvbGUuZGVidWd8fGNvbnNvbGUubG9nfHwoKCk9Pnt9KSxlLmV4cG9ydHM9big0NDcpKHQpO2NvbnN0e2Zvcm1hdHRlcnM6b309ZS5leHBvcnRzO28uaj1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUpfWNhdGNoKGUpe3JldHVyblwiW1VuZXhwZWN0ZWRKU09OUGFyc2VFcnJvcl06IFwiK2UubWVzc2FnZX19fSw0NDc6KGUsdCxuKT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2xldCBuLG8scyxpPW51bGw7ZnVuY3Rpb24gYSguLi5lKXtpZighYS5lbmFibGVkKXJldHVybjtjb25zdCByPWEsbz1OdW1iZXIobmV3IERhdGUpLHM9by0obnx8byk7ci5kaWZmPXMsci5wcmV2PW4sci5jdXJyPW8sbj1vLGVbMF09dC5jb2VyY2UoZVswXSksXCJzdHJpbmdcIiE9dHlwZW9mIGVbMF0mJmUudW5zaGlmdChcIiVPXCIpO2xldCBpPTA7ZVswXT1lWzBdLnJlcGxhY2UoLyUoW2EtekEtWiVdKS9nLCgobixvKT0+e2lmKFwiJSVcIj09PW4pcmV0dXJuXCIlXCI7aSsrO2NvbnN0IHM9dC5mb3JtYXR0ZXJzW29dO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHMpe2NvbnN0IHQ9ZVtpXTtuPXMuY2FsbChyLHQpLGUuc3BsaWNlKGksMSksaS0tfXJldHVybiBufSkpLHQuZm9ybWF0QXJncy5jYWxsKHIsZSksKHIubG9nfHx0LmxvZykuYXBwbHkocixlKX1yZXR1cm4gYS5uYW1lc3BhY2U9ZSxhLnVzZUNvbG9ycz10LnVzZUNvbG9ycygpLGEuY29sb3I9dC5zZWxlY3RDb2xvcihlKSxhLmV4dGVuZD1yLGEuZGVzdHJveT10LmRlc3Ryb3ksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJlbmFibGVkXCIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiExLGdldDooKT0+bnVsbCE9PWk/aToobyE9PXQubmFtZXNwYWNlcyYmKG89dC5uYW1lc3BhY2VzLHM9dC5lbmFibGVkKGUpKSxzKSxzZXQ6ZT0+e2k9ZX19KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmluaXQmJnQuaW5pdChhKSxhfWZ1bmN0aW9uIHIoZSxuKXtjb25zdCByPXQodGhpcy5uYW1lc3BhY2UrKHZvaWQgMD09PW4/XCI6XCI6bikrZSk7cmV0dXJuIHIubG9nPXRoaXMubG9nLHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS50b1N0cmluZygpLnN1YnN0cmluZygyLGUudG9TdHJpbmcoKS5sZW5ndGgtMikucmVwbGFjZSgvXFwuXFwqXFw/JC8sXCIqXCIpfXJldHVybiB0LmRlYnVnPXQsdC5kZWZhdWx0PXQsdC5jb2VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBFcnJvcj9lLnN0YWNrfHxlLm1lc3NhZ2U6ZX0sdC5kaXNhYmxlPWZ1bmN0aW9uKCl7Y29uc3QgZT1bLi4udC5uYW1lcy5tYXAobyksLi4udC5za2lwcy5tYXAobykubWFwKChlPT5cIi1cIitlKSldLmpvaW4oXCIsXCIpO3JldHVybiB0LmVuYWJsZShcIlwiKSxlfSx0LmVuYWJsZT1mdW5jdGlvbihlKXtsZXQgbjt0LnNhdmUoZSksdC5uYW1lc3BhY2VzPWUsdC5uYW1lcz1bXSx0LnNraXBzPVtdO2NvbnN0IHI9KFwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJcIikuc3BsaXQoL1tcXHMsXSsvKSxvPXIubGVuZ3RoO2ZvcihuPTA7bjxvO24rKylyW25dJiYoXCItXCI9PT0oZT1yW25dLnJlcGxhY2UoL1xcKi9nLFwiLio/XCIpKVswXT90LnNraXBzLnB1c2gobmV3IFJlZ0V4cChcIl5cIitlLnNsaWNlKDEpK1wiJFwiKSk6dC5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoXCJeXCIrZStcIiRcIikpKX0sdC5lbmFibGVkPWZ1bmN0aW9uKGUpe2lmKFwiKlwiPT09ZVtlLmxlbmd0aC0xXSlyZXR1cm4hMDtsZXQgbixyO2ZvcihuPTAscj10LnNraXBzLmxlbmd0aDtuPHI7bisrKWlmKHQuc2tpcHNbbl0udGVzdChlKSlyZXR1cm4hMTtmb3Iobj0wLHI9dC5uYW1lcy5sZW5ndGg7bjxyO24rKylpZih0Lm5hbWVzW25dLnRlc3QoZSkpcmV0dXJuITA7cmV0dXJuITF9LHQuaHVtYW5pemU9big4MjQpLHQuZGVzdHJveT1mdW5jdGlvbigpe2NvbnNvbGUud2FybihcIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC5cIil9LE9iamVjdC5rZXlzKGUpLmZvckVhY2goKG49Pnt0W25dPWVbbl19KSksdC5uYW1lcz1bXSx0LnNraXBzPVtdLHQuZm9ybWF0dGVycz17fSx0LnNlbGVjdENvbG9yPWZ1bmN0aW9uKGUpe2xldCBuPTA7Zm9yKGxldCB0PTA7dDxlLmxlbmd0aDt0Kyspbj0objw8NSktbitlLmNoYXJDb2RlQXQodCksbnw9MDtyZXR1cm4gdC5jb2xvcnNbTWF0aC5hYnMobikldC5jb2xvcnMubGVuZ3RoXX0sdC5lbmFibGUodC5sb2FkKCkpLHR9fSw2NDM6ZT0+e2UuZXhwb3J0cz0hMX0sODI0OmU9Pnt2YXIgdD0xZTMsbj02MCp0LHI9NjAqbixvPTI0KnI7ZnVuY3Rpb24gcyhlLHQsbixyKXt2YXIgbz10Pj0xLjUqbjtyZXR1cm4gTWF0aC5yb3VuZChlL24pK1wiIFwiK3IrKG8/XCJzXCI6XCJcIil9ZS5leHBvcnRzPWZ1bmN0aW9uKGUsaSl7aT1pfHx7fTt2YXIgYSx1LGM9dHlwZW9mIGU7aWYoXCJzdHJpbmdcIj09PWMmJmUubGVuZ3RoPjApcmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCEoKGU9U3RyaW5nKGUpKS5sZW5ndGg+MTAwKSl7dmFyIHM9L14oLT8oPzpcXGQrKT9cXC4/XFxkKykgKihtaWxsaXNlY29uZHM/fG1zZWNzP3xtc3xzZWNvbmRzP3xzZWNzP3xzfG1pbnV0ZXM/fG1pbnM/fG18aG91cnM/fGhycz98aHxkYXlzP3xkfHdlZWtzP3x3fHllYXJzP3x5cnM/fHkpPyQvaS5leGVjKGUpO2lmKHMpe3ZhciBpPXBhcnNlRmxvYXQoc1sxXSk7c3dpdGNoKChzWzJdfHxcIm1zXCIpLnRvTG93ZXJDYXNlKCkpe2Nhc2VcInllYXJzXCI6Y2FzZVwieWVhclwiOmNhc2VcInlyc1wiOmNhc2VcInlyXCI6Y2FzZVwieVwiOnJldHVybiAzMTU1NzZlNSppO2Nhc2VcIndlZWtzXCI6Y2FzZVwid2Vla1wiOmNhc2VcIndcIjpyZXR1cm4gNjA0OGU1Kmk7Y2FzZVwiZGF5c1wiOmNhc2VcImRheVwiOmNhc2VcImRcIjpyZXR1cm4gaSpvO2Nhc2VcImhvdXJzXCI6Y2FzZVwiaG91clwiOmNhc2VcImhyc1wiOmNhc2VcImhyXCI6Y2FzZVwiaFwiOnJldHVybiBpKnI7Y2FzZVwibWludXRlc1wiOmNhc2VcIm1pbnV0ZVwiOmNhc2VcIm1pbnNcIjpjYXNlXCJtaW5cIjpjYXNlXCJtXCI6cmV0dXJuIGkqbjtjYXNlXCJzZWNvbmRzXCI6Y2FzZVwic2Vjb25kXCI6Y2FzZVwic2Vjc1wiOmNhc2VcInNlY1wiOmNhc2VcInNcIjpyZXR1cm4gaSp0O2Nhc2VcIm1pbGxpc2Vjb25kc1wiOmNhc2VcIm1pbGxpc2Vjb25kXCI6Y2FzZVwibXNlY3NcIjpjYXNlXCJtc2VjXCI6Y2FzZVwibXNcIjpyZXR1cm4gaTtkZWZhdWx0OnJldHVybn19fX0oZSk7aWYoXCJudW1iZXJcIj09PWMmJmlzRmluaXRlKGUpKXJldHVybiBpLmxvbmc/KGE9ZSwodT1NYXRoLmFicyhhKSk+PW8/cyhhLHUsbyxcImRheVwiKTp1Pj1yP3MoYSx1LHIsXCJob3VyXCIpOnU+PW4/cyhhLHUsbixcIm1pbnV0ZVwiKTp1Pj10P3MoYSx1LHQsXCJzZWNvbmRcIik6YStcIiBtc1wiKTpmdW5jdGlvbihlKXt2YXIgcz1NYXRoLmFicyhlKTtyZXR1cm4gcz49bz9NYXRoLnJvdW5kKGUvbykrXCJkXCI6cz49cj9NYXRoLnJvdW5kKGUvcikrXCJoXCI6cz49bj9NYXRoLnJvdW5kKGUvbikrXCJtXCI6cz49dD9NYXRoLnJvdW5kKGUvdCkrXCJzXCI6ZStcIm1zXCJ9KGUpO3Rocm93IG5ldyBFcnJvcihcInZhbCBpcyBub3QgYSBub24tZW1wdHkgc3RyaW5nIG9yIGEgdmFsaWQgbnVtYmVyLiB2YWw9XCIrSlNPTi5zdHJpbmdpZnkoZSkpfX0sMTUxOihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQse09ibGl2aW91c1NldDooKT0+cixub3c6KCk9PnMscmVtb3ZlVG9vT2xkVmFsdWVzOigpPT5vfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMudHRsPWUsdGhpcy5zZXQ9bmV3IFNldCx0aGlzLnRpbWVNYXA9bmV3IE1hcH1yZXR1cm4gZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldC5oYXMoZSl9LGUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMudGltZU1hcC5zZXQoZSxzKCkpLHRoaXMuc2V0LmFkZChlKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe28odCl9KSwwKX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldC5jbGVhcigpLHRoaXMudGltZU1hcC5jbGVhcigpfSxlfSgpO2Z1bmN0aW9uIG8oZSl7Zm9yKHZhciB0PXMoKS1lLnR0bCxuPWUuc2V0W1N5bWJvbC5pdGVyYXRvcl0oKTs7KXt2YXIgcj1uLm5leHQoKS52YWx1ZTtpZighcilyZXR1cm47aWYoIShlLnRpbWVNYXAuZ2V0KHIpPHQpKXJldHVybjtlLnRpbWVNYXAuZGVsZXRlKHIpLGUuc2V0LmRlbGV0ZShyKX19ZnVuY3Rpb24gcygpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfX0sMTU1OmU9Pnt2YXIgdCxuLHI9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIHMoKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gaShlKXtpZih0PT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKCh0PT09b3x8IXQpJiZzZXRUaW1lb3V0KXJldHVybiB0PXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gdChlLDApfWNhdGNoKG4pe3RyeXtyZXR1cm4gdC5jYWxsKG51bGwsZSwwKX1jYXRjaChuKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSwwKX19fSFmdW5jdGlvbigpe3RyeXt0PVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3Q9b310cnl7bj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnN9Y2F0Y2goZSl7bj1zfX0oKTt2YXIgYSx1PVtdLGM9ITEsbD0tMTtmdW5jdGlvbiBkKCl7YyYmYSYmKGM9ITEsYS5sZW5ndGg/dT1hLmNvbmNhdCh1KTpsPS0xLHUubGVuZ3RoJiZmKCkpfWZ1bmN0aW9uIGYoKXtpZighYyl7dmFyIGU9aShkKTtjPSEwO2Zvcih2YXIgdD11Lmxlbmd0aDt0Oyl7Zm9yKGE9dSx1PVtdOysrbDx0OylhJiZhW2xdLnJ1bigpO2w9LTEsdD11Lmxlbmd0aH1hPW51bGwsYz0hMSxmdW5jdGlvbihlKXtpZihuPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKG49PT1zfHwhbikmJmNsZWFyVGltZW91dClyZXR1cm4gbj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtuKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gbi5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIG4uY2FsbCh0aGlzLGUpfX19KGUpfX1mdW5jdGlvbiBoKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rpb24gcCgpe31yLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07dS5wdXNoKG5ldyBoKGUsdCkpLDEhPT11Lmxlbmd0aHx8Y3x8aShmKX0saC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sci50aXRsZT1cImJyb3dzZXJcIixyLmJyb3dzZXI9ITAsci5lbnY9e30sci5hcmd2PVtdLHIudmVyc2lvbj1cIlwiLHIudmVyc2lvbnM9e30sci5vbj1wLHIuYWRkTGlzdGVuZXI9cCxyLm9uY2U9cCxyLm9mZj1wLHIucmVtb3ZlTGlzdGVuZXI9cCxyLnJlbW92ZUFsbExpc3RlbmVycz1wLHIuZW1pdD1wLHIucHJlcGVuZExpc3RlbmVyPXAsci5wcmVwZW5kT25jZUxpc3RlbmVyPXAsci5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LHIuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZFwiKX0sci5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm5cIi9cIn0sci5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9LHIudW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LDI3OTplPT57ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZT17b246ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZXx8KHRoaXMuZT17fSk7cmV0dXJuKHJbZV18fChyW2VdPVtdKSkucHVzaCh7Zm46dCxjdHg6bn0pLHRoaXN9LG9uY2U6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7ZnVuY3Rpb24gbygpe3Iub2ZmKGUsbyksdC5hcHBseShuLGFyZ3VtZW50cyl9cmV0dXJuIG8uXz10LHRoaXMub24oZSxvLG4pfSxlbWl0OmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxuPSgodGhpcy5lfHwodGhpcy5lPXt9KSlbZV18fFtdKS5zbGljZSgpLHI9MCxvPW4ubGVuZ3RoO3I8bztyKyspbltyXS5mbi5hcHBseShuW3JdLmN0eCx0KTtyZXR1cm4gdGhpc30sb2ZmOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5lfHwodGhpcy5lPXt9KSxyPW5bZV0sbz1bXTtpZihyJiZ0KWZvcih2YXIgcz0wLGk9ci5sZW5ndGg7czxpO3MrKylyW3NdLmZuIT09dCYmcltzXS5mbi5fIT09dCYmby5wdXNoKHJbc10pO3JldHVybiBvLmxlbmd0aD9uW2VdPW86ZGVsZXRlIG5bZV0sdGhpc319LGUuZXhwb3J0cz10LGUuZXhwb3J0cy5UaW55RW1pdHRlcj10fSw3OTc6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbixyPXRoaXMmJnRoaXMuX19leHRlbmRzfHwobj1mdW5jdGlvbihlLHQpe3JldHVybiBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0sbihlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYXNzZXJ0PXQuQXNzZXJ0RXJyb3I9dm9pZCAwO3ZhciBvPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbnVsbCE9PWUmJmUuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuQXNzZXJ0RXJyb3I9byx0LmFzc2VydD1mdW5jdGlvbihlLHQsbil7aWYodChlKSlyZXR1cm4gZTt0aHJvdyBuZXcgbyhuKX19LDYwMTooZSx0KT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuU09VUkNFX05BTUVTUEFDRT12b2lkIDAsdC5TT1VSQ0VfTkFNRVNQQUNFPVwiT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbFwifSw3NTg6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbixyPXRoaXMmJnRoaXMuX19leHRlbmRzfHwobj1mdW5jdGlvbihlLHQpe3JldHVybiBuPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihlLHQpe2UuX19wcm90b19fPXR9fHxmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pJiYoZVtuXT10W25dKX0sbihlLHQpfSxmdW5jdGlvbihlLHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiK1N0cmluZyh0KStcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPWV9bihlLHQpLGUucHJvdG90eXBlPW51bGw9PT10P09iamVjdC5jcmVhdGUodCk6KHIucHJvdG90eXBlPXQucHJvdG90eXBlLG5ldyByKX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuSW52b2tlRXJyb3I9dC5NZXNzYWdlVGltZW91dEVycm9yPXQuTWVzc2FnZUVycm9yPXZvaWQgMDt2YXIgbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBuPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiBuLm5hbWU9XCJNZXNzYWdlRXJyb3JcIixPYmplY3Quc2V0UHJvdG90eXBlT2YobixzLnByb3RvdHlwZSksbn1yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0Lk1lc3NhZ2VFcnJvcj1vO3ZhciBzPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7dmFyIHI9ZS5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIHIubmFtZT1cIk1lc3NhZ2VUaW1lb3V0RXJyb3JcIixPYmplY3Quc2V0UHJvdG90eXBlT2Yocix0LnByb3RvdHlwZSkscn1yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0Lk1lc3NhZ2VUaW1lb3V0RXJyb3I9czt2YXIgaT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe3ZhciBuPWUuY2FsbCh0aGlzLHQpfHx0aGlzO3JldHVybiBuLm5hbWU9XCJJbnZva2VFcnJvclwiLE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHMucHJvdG90eXBlKSxufXJldHVybiByKHQsZSksdH0oRXJyb3IpO3QuSW52b2tlRXJyb3I9aX0sNjA3OmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fZXhwb3J0U3Rhcnx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIj09PW58fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfHxyKHQsZSxuKX0scz10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lk9mZmljZVNES01lc3NhZ2VFdmVudD10LmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZT10Lk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWw9dm9pZCAwO3ZhciBpPXMobig2MjMpKTt0Lk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWw9aS5kZWZhdWx0O3ZhciBhPW4oOTI4KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZVwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk9mZmljZVNES01lc3NhZ2VFdmVudFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhLk9mZmljZVNES01lc3NhZ2VFdmVudH19KSxvKG4oOTI4KSx0KSxvKG4oNjIzKSx0KSxvKG4oNzU4KSx0KSxvKG4oODYpLHQpLG8obig2MDEpLHQpfSw5Mjg6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlPXQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50PXZvaWQgMDt2YXIgcj1uKDEzMSksbz1uKDc5Nykscz1uKDYwMSksaT1mdW5jdGlvbihlKXt2YXIgdD1lLmRhdGEsbj1lLmNvbnRleHQsaT1lLnRpbWUsYT1lLm9yaWdpbix1PWUuZW1pdHRlcixjPWUuY2hhbm5lbElkLGw9T2JqZWN0LmFzc2lnbih7fSxuLHtjaGFubmVsSWQ6Y30pO1wic3RyaW5nXCI9PXR5cGVvZiBsLm1lc3NhZ2VJZCYmXCJcIiE9PWwubWVzc2FnZUlkLnRyaW0oKXx8KGwubWVzc2FnZUlkPSgwLHIudXVpZCkoKSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7ZGF0YTp7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSxjb250ZXh0OntlbnVtZXJhYmxlOiEwLHZhbHVlOmx9LHRpbWU6e2VudW1lcmFibGU6ITAsdmFsdWU6bnVsbCE9aT9pOkRhdGUubm93KCl9LGlkOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsLm1lc3NhZ2VJZH19LHNvdXJjZTp7ZW51bWVyYWJsZTohMCx2YWx1ZTpzLlNPVVJDRV9OQU1FU1BBQ0V9LG9yaWdpbjp7ZW51bWVyYWJsZTohMCx2YWx1ZTphfSxlbWl0dGVyOntlbnVtZXJhYmxlOiEwLHZhbHVlOnV9LGNoYW5uZWxJZDp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5jaGFubmVsSWR9fX0pLCgwLG8uYXNzZXJ0KSh0aGlzLmNvbnRleHQuY2hhbm5lbElkLChmdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmZS5sZW5ndGg+MH0pLFwiY2hhbm5lbCBpZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ1wiKSwoMCxvLmFzc2VydCkodGhpcy5pZCwoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJmUubGVuZ3RoPjB9KSxcImlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpLCgwLG8uYXNzZXJ0KSh0aGlzLnRpbWUsKGZ1bmN0aW9uKGUpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiBlJiZlPj0wfSksXCJ0aW1lIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXJcIil9O3QuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50PWksdC5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2U9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuITA7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPWUpe3ZhciB0PWU7cmV0dXJuIHQuc291cmNlPT09cy5TT1VSQ0VfTkFNRVNQQUNFJiZcInN0cmluZ1wiPT10eXBlb2YgdC5jaGFubmVsSWQmJnQuY2hhbm5lbElkLmxlbmd0aD4wJiZudWxsIT10LmNvbnRleHR9cmV0dXJuITF9fSw2MjM6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbmV3KG58fChuPVByb21pc2UpKSgoZnVuY3Rpb24obyxzKXtmdW5jdGlvbiBpKGUpe3RyeXt1KHIubmV4dChlKSl9Y2F0Y2goZSl7cyhlKX19ZnVuY3Rpb24gYShlKXt0cnl7dShyLnRocm93KGUpKX1jYXRjaChlKXtzKGUpfX1mdW5jdGlvbiB1KGUpe3ZhciB0O2UuZG9uZT9vKGUudmFsdWUpOih0PWUudmFsdWUsdCBpbnN0YW5jZW9mIG4/dDpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0KX0pKSkudGhlbihpLGEpfXUoKHI9ci5hcHBseShlLHR8fFtdKSkubmV4dCgpKX0pKX0sbz10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxzLGk9e2xhYmVsOjAsc2VudDpmdW5jdGlvbigpe2lmKDEmb1swXSl0aHJvdyBvWzFdO3JldHVybiBvWzFdfSx0cnlzOltdLG9wczpbXX07cmV0dXJuIHM9e25leHQ6YSgwKSx0aHJvdzphKDEpLHJldHVybjphKDIpfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihzW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHM7ZnVuY3Rpb24gYShzKXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKHMpe2lmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7Zm9yKDtpOyl0cnl7aWYobj0xLHImJihvPTImc1swXT9yLnJldHVybjpzWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsc1sxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYocz1bMiZzWzBdLG8udmFsdWVdKSxzWzBdKXtjYXNlIDA6Y2FzZSAxOm89czticmVhaztjYXNlIDQ6cmV0dXJuIGkubGFiZWwrKyx7dmFsdWU6c1sxXSxkb25lOiExfTtjYXNlIDU6aS5sYWJlbCsrLHI9c1sxXSxzPVswXTtjb250aW51ZTtjYXNlIDc6cz1pLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKChvPShvPWkudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pfHw2IT09c1swXSYmMiE9PXNbMF0pKXtpPTA7Y29udGludWV9aWYoMz09PXNbMF0mJighb3x8c1sxXT5vWzBdJiZzWzFdPG9bM10pKXtpLmxhYmVsPXNbMV07YnJlYWt9aWYoNj09PXNbMF0mJmkubGFiZWw8b1sxXSl7aS5sYWJlbD1vWzFdLG89czticmVha31pZihvJiZpLmxhYmVsPG9bMl0pe2kubGFiZWw9b1syXSxpLm9wcy5wdXNoKHMpO2JyZWFrfW9bMl0mJmkub3BzLnBvcCgpLGkudHJ5cy5wb3AoKTtjb250aW51ZX1zPXQuY2FsbChlLGkpfWNhdGNoKGUpe3M9WzYsZV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZzWzBdKXRocm93IHNbMV07cmV0dXJue3ZhbHVlOnNbMF0/c1sxXTp2b2lkIDAsZG9uZTohMH19KFtzLGFdKX19fSxzPXRoaXMmJnRoaXMuX19zcHJlYWRBcnJheXx8ZnVuY3Rpb24oZSx0LG4pe2lmKG58fDI9PT1hcmd1bWVudHMubGVuZ3RoKWZvcih2YXIgcixvPTAscz10Lmxlbmd0aDtvPHM7bysrKSFyJiZvIGluIHR8fChyfHwocj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDAsbykpLHJbb109dFtvXSk7cmV0dXJuIGUuY29uY2F0KHJ8fEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKX0saT10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LkNvbnRleHRUeXBlPXQuREVCVUdfTkFNRVNQQUNFPXQuSU5WT0tFX0RFRkFVVExfVElNRU9VVD12b2lkIDA7dmFyIGE9big0MzcpLHU9bigyNzkpLGM9big3OTcpLGw9big3NTgpLGQ9big5MjgpLGY9big4NiksaD1pKG4oMjI3KSkscD1pKG4oNjc1KSksdj1uKDEzMSk7dC5JTlZPS0VfREVGQVVUTF9USU1FT1VUPTZlNCx0LkRFQlVHX05BTUVTUEFDRT1cIlNNX0NIQU5cIjt2YXIgbSxnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgbixzPXRoaXM7dGhpcy5pbnZva2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuZXZlbnRIYW5kbGVycz1uZXcgTWFwLHRoaXMuZW1pdHRlcklkPSgwLHYudXVpZCkoKSx0aGlzLl9kZWJ1Z05hbWVzcGFjZT10LkRFQlVHX05BTUVTUEFDRSx0aGlzLmRlYnVnPSEwPT09ZS5kZWJ1Zyx0aGlzLmRlYnVnTmFtZXNwYWNlPW51bGwhPT0obj1lLmRlYnVnTmFtZXNwYWNlKSYmdm9pZCAwIT09bj9uOnQuREVCVUdfTkFNRVNQQUNFLHRoaXMuYXV0b1N0cnVjdHVyZWRDbG9uZT0hMD09PWUuYXV0b1N0cnVjdHVyZWRDbG9uZSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcImlkXCIse2VudW1lcmFibGU6ITAsdmFsdWU6XCJzdHJpbmdcIj09dHlwZW9mIGUuY2hhbm5lbElkPygwLGMuYXNzZXJ0KShlLmNoYW5uZWxJZC50cmltKCksKGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4wfSksXCJjaGFubmVsSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdcIik6KDAsdi51dWlkKSgpfSksdGhpcy5lbWl0dGVyPW5ldyB1LlRpbnlFbWl0dGVyO3ZhciBpPW5ldyBhLkJyb2FkY2FzdENoYW5uZWwodGhpcy5pZCxlLmJyb2FkY2FzdENoYW5uZWxPcHRpb25zKTtpLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsKGZ1bmN0aW9uKGUpe3Iocyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciB0LG4scjtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOnRyeXt0PXRoaXMuaW5pdE1lc3NhZ2VFdmVudChlKX1jYXRjaCh0KXtyZXR1cm4obj1uZXcgbC5NZXNzYWdlRXJyb3IobnVsbCE9PShyPW51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkmJnZvaWQgMCE9PXI/cjpcIm1lc3NhZ2UgY2Fubm90IGJlIGhhbmRsZWRcIikpLm9yaWdpbk1lc3NhZ2U9ZS5kYXRhLHRoaXMuZW1pdChcIm1lc3NhZ2VFcnJvclwiLG4pLFsyXX1yZXR1cm5bNCx0aGlzLmRpc3RyaWJ1dGVNZXNzYWdlKHQpXTtjYXNlIDE6cmV0dXJuIG8uc2VudCgpLFsyXX19KSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiByKHMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbWl0KFwiZXJyb3JcIixlKSxbMl19KSl9KSl9KSl9KSksdGhpcy5jaGFubmVsPWl9cmV0dXJuIGUucHJvdG90eXBlLmluaXRNZXNzYWdlRXZlbnQ9ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7ZW1pdHRlcjp0aGlzLmVtaXR0ZXJJZH0sZSx7Y2hhbm5lbElkOnRoaXMuaWR9KTtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgdC5vcmlnaW4mJih0Lm9yaWdpbj1sb2NhdGlvbi5vcmlnaW4pLG5ldyBkLk9mZmljZVNES01lc3NhZ2VFdmVudCh0KX0sZS5wcm90b3R5cGUuc3RydWN0dXJlZENsb25lPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmF1dG9TdHJ1Y3R1cmVkQ2xvbmU/KDAsZi5zdHJ1Y3R1cmVkQ2xvbmUpKGUse3JlcGxhY2VyOmZ1bmN0aW9uKCl7fX0pOmV9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQoZSk7QXJyYXkuaXNBcnJheShyKXx8KHI9W10pLHIucHVzaChbdCxuXSksdGhpcy5ldmVudEhhbmRsZXJzLnNldChlLHIpfSxlLnByb3RvdHlwZS5vbj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztyZXR1cm4gdGhpcy5hZGRFdmVudExpc3RlbmVyKGUsdCxuKSxmdW5jdGlvbigpe3Iub2ZmKGUsdCxuKX19LGUucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMsbz1mdW5jdGlvbihuLG8pe3Iub2ZmKGUsdCxvKSx0KG4sbyl9O3JldHVybiBvLmhhbmRsZXI9dCx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoZSxvLG4pLGZ1bmN0aW9uKCl7ci5vZmYoZSx0LG4pfX0sZS5wcm90b3R5cGUub2ZmPWZ1bmN0aW9uKGUsdCxuKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl0aGlzLmV2ZW50SGFuZGxlcnMuZGVsZXRlKGUpO2Vsc2V7dmFyIHI9dGhpcy5ldmVudEhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpJiYoXCIqXCI9PT0obnVsbD09bj92b2lkIDA6bi5hdWRpZW5jZSk/dGhpcy5ldmVudEhhbmRsZXJzLmRlbGV0ZShlKTp0aGlzLmV2ZW50SGFuZGxlcnMuc2V0KGUsci5maWx0ZXIoKGZ1bmN0aW9uKGUpe3ZhciByPWVbMF0sbz1lWzFdO3JldHVybiByIT09dCYmci5oYW5kbGVyIT09dHx8KG51bGw9PW8/dm9pZCAwOm8uYXVkaWVuY2UpPT09KG51bGw9PW4/dm9pZCAwOm4uYXVkaWVuY2UpfSkpKSl9fSxlLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KGUpO2lmKHRoaXMubG9nKFwiZW1pdCBldmVudFwiLHtuYW1lOmUsZGF0YTp0LGNvbnRleHQ6bixoYW5kbGVyczpyfSksQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIG89MCxzPXI7bzxzLmxlbmd0aDtvKyspe3ZhciBpPXNbb10sYT1pWzBdO3koaVsxXSxuKSYmYSh0LG4pfX0sZS5wcm90b3R5cGUucG9zdE1lc3NhZ2U9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIG4scixzLGk7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDp0cnl7cj10aGlzLnN0cnVjdHVyZWRDbG9uZShlKSxuPSgwLGQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlKShyKT90aGlzLmluaXRNZXNzYWdlRXZlbnQocik6dGhpcy5pbml0TWVzc2FnZUV2ZW50KHtkYXRhOnIsY29udGV4dDpudWxsIT10P3RoaXMubWVyZ2VDb250ZXh0cyhbdF0pOnR9KX1jYXRjaCh0KXt0aHJvdyB0aGlzLmxvZyhcIm1lc3NhZ2UgaW52YWxpZFwiLGUsdCksKGk9bmV3IGwuTWVzc2FnZUVycm9yKG51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSkpLm9yaWdpbk1lc3NhZ2U9cixpfW8ubGFiZWw9MTtjYXNlIDE6cmV0dXJuIG8udHJ5cy5wdXNoKFsxLDMsLDRdKSx0aGlzLmxvZyhcInByZSBwb3N0TWVzc2FnZVwiLHttZXNzYWdlOnIsb3JpZ2luOmUsY29udGV4dDp0LHN0cnVjdHVyZWRDbG9uZWQ6dGhpcy5hdXRvU3RydWN0dXJlZENsb25lfSksWzQsdGhpcy5jaGFubmVsLnBvc3RNZXNzYWdlKG4pXTtjYXNlIDI6cmV0dXJuIG8uc2VudCgpLHRoaXMuZW1pdChcInBvc3RNZXNzYWdlXCIsbixuLmNvbnRleHQpLHRoaXMubG9nKFwicG9zdE1lc3NhZ2Ugc3VjY2Vzc1wiLG4pLFszLDRdO2Nhc2UgMzp0aHJvdyBzPW8uc2VudCgpLHRoaXMubG9nKFwicG9zdCBtZXNzYWdlIGVycm9yXCIscyksKGk9bmV3IGwuTWVzc2FnZUVycm9yKG51bGw9PXM/dm9pZCAwOnMubWVzc2FnZSkpLm9yaWdpbk1lc3NhZ2U9ZSxpO2Nhc2UgNDpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5kaXN0cmlidXRlTWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgdCxuLHM7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciByLGk7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4obnVsbD09PSh0PShyPWUpLmNvbnRleHQpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmNoYW5uZWxJZCkhPT10aGlzLmlkfHxyLmVtaXR0ZXI9PT10aGlzLmVtaXR0ZXJJZD8odGhpcy5sb2coXCJkaXNjYXJkIG1lc3NhZ2VcIixyKSxbMl0pOlwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMub25NZXNzYWdlQXJyaXZlP1szLDJdOls0LHRoaXMub25NZXNzYWdlQXJyaXZlKHIpXTtjYXNlIDE6aWYoISgoaT1vLnNlbnQoKSlpbnN0YW5jZW9mIGQuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KSlyZXR1cm4gdGhpcy5sb2coXCJza2lwIGRpc3RyaWJ1dGluZyBtZXNzYWdlIGJ5IGBvbk1lc3NhZ2VBcnJpdmVgXCIse21lc3NhZ2U6aSxvcmlnaW46ZX0pLFsyXTtyPWksby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gdGhpcy5sb2coXCJkaXN0cmlidXRlIG1lc3NhZ2VcIix7bWVzc2FnZTpyLG9yaWdpbjplfSksKG51bGw9PT0obj1yLmNvbnRleHQpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLnR5cGUpIT09bS5JbnZva2VSZXF1ZXN0P1szLDRdOls0LHRoaXMuaGFuZGxlSW52b2tlUmVxdWVzdChyKV07Y2FzZSAzOnJldHVybiBvLnNlbnQoKSxbMl07Y2FzZSA0OnJldHVybihudWxsPT09KHM9ci5jb250ZXh0KXx8dm9pZCAwPT09cz92b2lkIDA6cy50eXBlKT09PW0uSW52b2tlUmVzcG9uc2U/KHRoaXMuaGFuZGxlSW52b2tlUmVzcG9uc2UociksWzJdKToodGhpcy5lbWl0KFwibWVzc2FnZVwiLHIsci5jb250ZXh0KSxbMl0pfX0pKX0pKX0sZS5wcm90b3R5cGUuaGFuZGxlSW52b2tlUmVxdWVzdD1mdW5jdGlvbihlKXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHQsbixyLHMsaSxhLHUsYyxsLGQsZjtyZXR1cm4gbyh0aGlzLChmdW5jdGlvbihvKXtzd2l0Y2goby5sYWJlbCl7Y2FzZSAwOmlmKCEoMCxwLmRlZmF1bHQpKGUuZGF0YSkpdGhyb3cgdGhpcy5sb2coXCJpbnZhbGlkIGludm9rZSByZXF1ZXN0XCIsZSksbmV3IEVycm9yKFwiSW52b2tlUmVxdWVzdCBkYXRhIG11c3QgYmUgYW4gb2JqZWN0XCIpO2lmKHQ9ZS5kYXRhLG49dC5uYW1lLHI9dC5hcmdzLHM9dGhpcy5pbnZva2VIYW5kbGVycy5nZXQobiksdGhpcy5sb2coXCJoYW5kbGUgaW52b2tlIHJlcXVlc3RcIix7bWVzc2FnZTplLGhhbmRsZXJzOnN9KSxpPWUuY29udGV4dCwhQXJyYXkuaXNBcnJheShzKXx8MD09PXMubGVuZ3RoKXJldHVybiB0aGlzLmxvZyhcIm5vIGludm9rZSBoYW5kbGVyc1wiLG4pLFsyXTthPTAsdT1zLG8ubGFiZWw9MTtjYXNlIDE6aWYoIShhPHUubGVuZ3RoKSlyZXR1cm5bMyw4XTtpZigheSgoYz11W2FdKS5jb250ZXh0LGkpKXJldHVyblszLDddO2w9e2RhdGE6dm9pZCAwfSxvLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBvLnRyeXMucHVzaChbMiw0LCw1XSksZD1sLFs0LGMuaGFuZGxlci5hcHBseShjLHIpXTtjYXNlIDM6cmV0dXJuIGQuZGF0YT1vLnNlbnQoKSxbMyw1XTtjYXNlIDQ6cmV0dXJuIGY9by5zZW50KCksbC5lcnJvcj1mLFszLDVdO2Nhc2UgNTpyZXR1cm5bNCx0aGlzLnBvc3RNZXNzYWdlKGwsT2JqZWN0LmFzc2lnbih7fSxpLHt0eXBlOm0uSW52b2tlUmVzcG9uc2V9KSldO2Nhc2UgNjpyZXR1cm4gby5zZW50KCksWzJdO2Nhc2UgNzpyZXR1cm4gYSsrLFszLDFdO2Nhc2UgODpyZXR1cm4gdGhpcy5sb2coXCJubyBpbnZva2UgaGFuZGxlciBmb3VuZFwiLG4pLFsyXX19KSl9KSl9LGUucHJvdG90eXBlLmhhbmRsZUludm9rZVJlc3BvbnNlPWZ1bmN0aW9uKGUpe2lmKHRoaXMubG9nKFwiaGFuZGxlIGludm9rZSByZXNwb25zZVwiLGUpLFwic3RyaW5nXCIhPXR5cGVvZiBlLmlkKXRocm93IG5ldyBsLkludm9rZUVycm9yKFwiSW52b2tlIHJlc3BvbnNlIGNvbnRleHQgaWQgaXMgaW52YWxpZFwiKTt0aGlzLmVtaXR0ZXIuZW1pdChlLmlkLGUuZGF0YSl9LGUucHJvdG90eXBlLm1lcmdlQ29udGV4dHM9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5hc3NpZ24uYXBwbHkoT2JqZWN0LHMoW3tjaGFubmVsSWQ6dGhpcy5pZH1dLGUsITEpKX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKGUsbixzKXtyZXR1cm4gcih0aGlzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7dmFyIHIsaSxhLHUsYyxkPXRoaXM7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDpyZXR1cm4gcj17bmFtZTplLGFyZ3M6bn0saT1cIm51bWJlclwiPT10eXBlb2YobnVsbD09cz92b2lkIDA6cy50aW1lb3V0KSYmKG51bGw9PXM/dm9pZCAwOnMudGltZW91dCk+MD9udWxsPT1zP3ZvaWQgMDpzLnRpbWVvdXQ6dC5JTlZPS0VfREVGQVVUTF9USU1FT1VULGE9KDAsdi51dWlkKSgpLHU9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7ZC5lbWl0dGVyLm9uY2UoYSwoZnVuY3Rpb24obyl7aWYoby5lcnJvciBpbnN0YW5jZW9mIGwuSW52b2tlRXJyb3IpcihvLmVycm9yKTtlbHNlIGlmKG51bGwhPW8uZXJyb3Ipe3ZhciBzPW5ldyBsLkludm9rZUVycm9yKFwic3RyaW5nXCI9PXR5cGVvZiBvLmVycm9yP28uZXJyb3I6by5lcnJvci5tZXNzYWdlKTtzLm1ldGhvZD1lLHMuYXJndW1lbnRzPW4scihzKX1lbHNlIHQoby5kYXRhKX0pKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2QuZW1pdHRlci5vZmYoYSkscihuZXcgbC5NZXNzYWdlVGltZW91dEVycm9yKFwiXCIuY29uY2F0KGUsXCIgaW52b2tlIHRpbWVvdXRcIikpKX0pLGkpfSkpLFs0LHRoaXMucG9zdE1lc3NhZ2UocixPYmplY3QuYXNzaWduKHt9LHMse21lc3NhZ2VJZDphLHRpbWVvdXQ6aSx0eXBlOm0uSW52b2tlUmVxdWVzdH0pKV07Y2FzZSAxOm8uc2VudCgpLG8ubGFiZWw9MjtjYXNlIDI6cmV0dXJuIG8udHJ5cy5wdXNoKFsyLDQsLDVdKSxbNCx1XTtjYXNlIDM6cmV0dXJuWzIsby5zZW50KCldO2Nhc2UgNDp0aHJvdyBjPW8uc2VudCgpLHRoaXMubG9nKFwiaW52b2tlIGVycm9yXCIse2lkOmEsbmFtZTplLGFyZ3M6bixwYXlsb2FkOnIsZXJyb3I6Y30pLGM7Y2FzZSA1OnJldHVyblsyXX19KSl9KSl9LGUucHJvdG90eXBlLmFkZEludm9rZUhhbmRsZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuaW52b2tlSGFuZGxlcnMuZ2V0KGUpO0FycmF5LmlzQXJyYXkocil8fChyPVtdKSxyLnB1c2goe2hhbmRsZXI6dCxjb250ZXh0Om59KSx0aGlzLmludm9rZUhhbmRsZXJzLnNldChlLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVJbnZva2VIYW5kbGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmludm9rZUhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpJiZ0aGlzLmludm9rZUhhbmRsZXJzLnNldChlLHIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gZS5oYW5kbGVyIT09dHx8KG51bGw9PT0ocj1lLmNvbnRleHQpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmF1ZGllbmNlKSE9PShudWxsPT1uP3ZvaWQgMDpuLmF1ZGllbmNlKX0pKSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImRlYnVnXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBoLmRlZmF1bHQuZW5hYmxlZCh0aGlzLl9kZWJ1Z05hbWVzcGFjZSl9LHNldDpmdW5jdGlvbihlKXtoLmRlZmF1bHQuZW5hYmxlKGU/dGhpcy5fZGVidWdOYW1lc3BhY2U6XCItXCIuY29uY2F0KHRoaXMuX2RlYnVnTmFtZXNwYWNlKSl9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLFwiZGVidWdOYW1lc3BhY2VcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnTmFtZXNwYWNlfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kZWJ1ZztoLmRlZmF1bHQuZW5hYmxlKFwiLVwiLmNvbmNhdCh0aGlzLl9kZWJ1Z05hbWVzcGFjZSkpLHRoaXMubG9nPSgwLGguZGVmYXVsdCkoZSksdGhpcy5fZGVidWdOYW1lc3BhY2U9ZSx0JiZoLmRlZmF1bHQuZW5hYmxlKGUpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLGV9KCk7ZnVuY3Rpb24geShlLHQpe3ZhciBuPW51bGw9PWU/dm9pZCAwOmUuYXVkaWVuY2Uscj1udWxsPT10P3ZvaWQgMDp0LmF1ZGllbmNlO3JldHVybiBuPT09cnx8XCIqXCI9PT1ufHxcIipcIj09PXJ9dC5kZWZhdWx0PWcsZnVuY3Rpb24oZSl7ZVtlLkludm9rZVJlcXVlc3Q9MF09XCJJbnZva2VSZXF1ZXN0XCIsZVtlLkludm9rZVJlc3BvbnNlPTFdPVwiSW52b2tlUmVzcG9uc2VcIn0obT10LkNvbnRleHRUeXBlfHwodC5Db250ZXh0VHlwZT17fSkpfSw4NjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5zdHJ1Y3R1cmVkQ2xvbmU9dm9pZCAwO3ZhciBvPXIobig2NzUpKSxzPW4oOTI4KTtmdW5jdGlvbiBpKGUsdCl7dHJ5e3JldHVybiBlIGluc3RhbmNlb2YgdH1jYXRjaChlKXtyZXR1cm4hMX19dC5zdHJ1Y3R1cmVkQ2xvbmU9ZnVuY3Rpb24gZSh0LG4pe2lmKHZvaWQgMD09PW4mJihuPXt9KSxcInN0cmluZ1wiPT10eXBlb2YgdHx8XCJudW1iZXJcIj09dHlwZW9mIHR8fFwiYm9vbGVhblwiPT10eXBlb2YgdHx8bnVsbD09dHx8dCBpbnN0YW5jZW9mIERhdGV8fHQgaW5zdGFuY2VvZiBSZWdFeHB8fHQgaW5zdGFuY2VvZiBCb29sZWFufHx0IGluc3RhbmNlb2YgU3RyaW5nfHx0IGluc3RhbmNlb2Ygcy5PZmZpY2VTREtNZXNzYWdlRXZlbnQpcmV0dXJuIHQ7dHJ5e2Zvcih2YXIgcj0wLGE9W3dpbmRvdy5BcnJheUJ1ZmZlcix3aW5kb3cuTWFwLHdpbmRvdy5TZXQsd2luZG93LkRhdGFWaWV3LHdpbmRvdy5GaWxlLHdpbmRvdy5GaWxlTGlzdCx3aW5kb3cuQmxvYix3aW5kb3cuSW1hZ2VCaXRtYXAsd2luZG93LkltYWdlRGF0YV07cjxhLmxlbmd0aDtyKyspaWYoaSh0LGFbcl0pKXJldHVybiB0fWNhdGNoKGUpe31pZigoMCxvLmRlZmF1bHQpKHQpKXt2YXIgdT10LGM9e307Zm9yKHZhciBsIGluIHUpITA9PT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodSxsKSYmKGNbbF09ZSh1W2xdLG4pKTtyZXR1cm4gY31pZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUodCxuKX0pKTtpZih0IGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHQubWVzc2FnZTt0cnl7aWYodCBpbnN0YW5jZW9mIE9iamVjdC5nZXRQcm90b3R5cGVPZihVaW50OEFycmF5KSlyZXR1cm4gdH1jYXRjaChlKXt9aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5yZXBsYWNlcil7dmFyIGQ9T2JqZWN0LmFzc2lnbih7fSxuKTtyZXR1cm4gZC5yZXBsYWNlcj12b2lkIDAsZShuLnJlcGxhY2VyKHQpLGQpfXRocm93IG5ldyBFcnJvcihcIlwiLmNvbmNhdChTdHJpbmcodCksXCIgY291bGQgbm90IGJlIGNsb25lZFwiKSl9fSwxMzE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LnV1aWQ9dm9pZCAwLHQudXVpZD1mdW5jdGlvbigpe2Zvcih2YXIgZSx0PVtdLG49KG51bGwhPT0oZT13aW5kb3cuY3J5cHRvKSYmdm9pZCAwIT09ZT9lOndpbmRvdy5tc0NyeXB0bykuZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDIwKSkscj0wO3I8bi5sZW5ndGg7cisrKXQucHVzaChuW3JdLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLFwiMFwiKSk7Zm9yKHZhciBvPTAscz1bNCw3LDEwLDEzXTtvPHMubGVuZ3RoO28rKyl0W3Nbb11dPVwiLVwiO3JldHVybiB0LmpvaW4oXCJcIil9fSw0OTk6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO24ucih0KSxuLmQodCx7YWRkOigpPT5kLGdldFNpemU6KCk9PnAscmVtb3ZlQWxsOigpPT5oLHJ1bkFsbDooKT0+Zn0pO3ZhciByPW4oNjQzKSxvPW4ubihyKTtjb25zdCBzPXthZGQ6ZnVuY3Rpb24oZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYgaW5zdGFuY2VvZiBXb3JrZXJHbG9iYWxTY29wZSk7ZWxzZXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcilyZXR1cm47d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJiZWZvcmV1bmxvYWRcIiwoZnVuY3Rpb24oKXtlKCl9KSwhMCksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ1bmxvYWRcIiwoZnVuY3Rpb24oKXtlKCl9KSwhMCl9fX07dmFyIGk9bigxOTkpLGE9bi5uKGkpLHU9bygpP2EoKTpzLGM9bmV3IFNldCxsPSExO2Z1bmN0aW9uIGQoZSl7aWYobHx8KGw9ITAsdS5hZGQoZikpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKFwiTGlzdGVuZXIgaXMgbm8gZnVuY3Rpb25cIik7cmV0dXJuIGMuYWRkKGUpLHtyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWxldGUoZSl9LHJ1bjpmdW5jdGlvbigpe3JldHVybiBjLmRlbGV0ZShlKSxlKCl9fX1mdW5jdGlvbiBmKCl7dmFyIGU9W107cmV0dXJuIGMuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5wdXNoKHQoKSksYy5kZWxldGUodCl9KSksUHJvbWlzZS5hbGwoZSl9ZnVuY3Rpb24gaCgpe2MuY2xlYXIoKX1mdW5jdGlvbiBwKCl7cmV0dXJuIGMuc2l6ZX19LDE5OTooKT0+e30sNjc1OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKGUpe2lmKFwiW29iamVjdCBPYmplY3RdXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7Y29uc3QgdD1PYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk7cmV0dXJuIG51bGw9PT10fHx0PT09T2JqZWN0LnByb3RvdHlwZX1uLnIodCksbi5kKHQse2RlZmF1bHQ6KCk9PnJ9KX19LHQ9e307ZnVuY3Rpb24gbihyKXt2YXIgbz10W3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgcz10W3JdPXtleHBvcnRzOnt9fTtyZXR1cm4gZVtyXS5jYWxsKHMuZXhwb3J0cyxzLHMuZXhwb3J0cyxuKSxzLmV4cG9ydHN9cmV0dXJuIG4ubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIG4uZCh0LHthOnR9KSx0fSxuLmQ9KGUsdCk9Pntmb3IodmFyIHIgaW4gdCluLm8odCxyKSYmIW4ubyhlLHIpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9LG4ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksbi5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxuKDYwNyl9KSgpKSk7IiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICogdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbihmdW5jdGlvbihzY29wZSkge1xuICBpZiAoc2NvcGVbJ1Byb3h5J10pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgc2NvcGUuUHJveHkgPSByZXF1aXJlKCcuL3Byb3h5LmpzJykoKTtcbiAgc2NvcGUuUHJveHlbJ3Jldm9jYWJsZSddID0gc2NvcGUuUHJveHkucmV2b2NhYmxlO1xufSkoXG4gICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHByb2Nlc3MgJiZcbiAgICAnW29iamVjdCBwcm9jZXNzXScgPT09IHt9LnRvU3RyaW5nLmNhbGwocHJvY2VzcykpIHx8XG4gICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJylcbiAgICA/IGdsb2JhbFxuICAgIDogc2VsZlxuKTtcblxuIiwiLypcbiAqIENvcHlyaWdodCAyMDE2IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3RcbiAqIHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mXG4gKiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsIFdJVEhPVVRcbiAqIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZVxuICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMgdW5kZXJcbiAqIHRoZSBMaWNlbnNlLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJveHlQb2x5ZmlsbCgpIHtcbiAgbGV0IGxhc3RSZXZva2VGbiA9IG51bGw7XG4gIGxldCBQcm94eVBvbHlmaWxsO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG9cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gd2hldGhlciB0aGlzIGlzIHByb2JhYmx5IGEgKG5vbi1udWxsKSBPYmplY3RcbiAgICovXG4gIGZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgICByZXR1cm4gbyA/ICh0eXBlb2YgbyA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG8gPT09ICdmdW5jdGlvbicpIDogZmFsc2U7XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZVByb3RvKHByb3RvKSB7XG4gICAgaWYgKHByb3RvICE9PSBudWxsICYmICFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGw6ICcgKyBwcm90byk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgJE9iamVjdCA9IE9iamVjdDtcblxuICAvLyBDbG9zdXJlIGFzc3VtZXMgdGhhdCBge19fcHJvdG9fXzogbnVsbH0gaW5zdGFuY2VvZiBPYmplY3RgIGlzIGFsd2F5cyB0cnVlLCBoZW5jZSB3aHkgd2UgY2hlY2sgYWdhaW5zdCBhIGRpZmZlcmVudCBuYW1lLlxuICBjb25zdCBjYW5DcmVhdGVOdWxsUHJvdG9PYmplY3RzID0gQm9vbGVhbigkT2JqZWN0LmNyZWF0ZSkgfHwgISh7IF9fcHJvdG9fXzogbnVsbCB9IGluc3RhbmNlb2YgJE9iamVjdCk7XG4gIGNvbnN0IG9iamVjdENyZWF0ZSA9XG4gICAgJE9iamVjdC5jcmVhdGUgfHxcbiAgICAoY2FuQ3JlYXRlTnVsbFByb3RvT2JqZWN0c1xuICAgICAgPyBmdW5jdGlvbiBjcmVhdGUocHJvdG8pIHtcbiAgICAgICAgICB2YWxpZGF0ZVByb3RvKHByb3RvKTtcbiAgICAgICAgICByZXR1cm4geyBfX3Byb3RvX186IHByb3RvIH07XG4gICAgICAgIH1cbiAgICAgIDogZnVuY3Rpb24gY3JlYXRlKHByb3RvKSB7XG4gICAgICAgICAgdmFsaWRhdGVQcm90byhwcm90byk7XG4gICAgICAgICAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ05hdGl2ZSBPYmplY3QuY3JlYXRlIGlzIHJlcXVpcmVkIHRvIGNyZWF0ZSBvYmplY3RzIHdpdGggbnVsbCBwcm90b3R5cGUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBuYi4gY2FzdCB0byBjb252aW5jZSBDbG9zdXJlIGNvbXBpbGVyIHRoYXQgdGhpcyBpcyBhIGNvbnN0cnVjdG9yXG4gICAgICAgICAgdmFyIFQgPSAvKiogQHR5cGUgeyFGdW5jdGlvbn0gKi8gKGZ1bmN0aW9uIFQoKSB7fSk7XG4gICAgICAgICAgVC5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgICAgICByZXR1cm4gbmV3IFQoKTtcbiAgICAgICAgfSk7XG5cbiAgY29uc3Qgbm9vcCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbnVsbDsgfTtcblxuICBjb25zdCBnZXRQcm90byA9XG4gICAgJE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fFxuICAgIChbXS5fX3Byb3RvX18gPT09IEFycmF5LnByb3RvdHlwZVxuICAgICAgPyBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihPKSB7XG4gICAgICAgICAgLy8gSWYgTy5bW1Byb3RvdHlwZV1dID09PSBudWxsLCB0aGVuIHRoZSBfX3Byb3RvX18gYWNjZXNzb3Igd29uJ3QgZXhpc3QsXG4gICAgICAgICAgLy8gYXMgaXQncyBpbmhlcml0ZWQgZnJvbSBgT2JqZWN0LnByb3RvdHlwZWBcbiAgICAgICAgICBjb25zdCBwcm90byA9IE8uX19wcm90b19fO1xuICAgICAgICAgIHJldHVybiBpc09iamVjdChwcm90bykgPyBwcm90byA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgIDogbm9vcCk7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0geyFPYmplY3R9IHRhcmdldFxuICAgKiBAcGFyYW0ge3thcHBseSwgY29uc3RydWN0LCBnZXQsIHNldH19IGhhbmRsZXJcbiAgICovXG4gIFByb3h5UG9seWZpbGwgPSBmdW5jdGlvbih0YXJnZXQsIGhhbmRsZXIpIHtcbiAgICBjb25zdCBuZXdUYXJnZXQgPSB0aGlzICYmIHRoaXMgaW5zdGFuY2VvZiBQcm94eVBvbHlmaWxsID8gdGhpcy5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZDtcbiAgICBpZiAobmV3VGFyZ2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDb25zdHJ1Y3RvciBQcm94eSByZXF1aXJlcyAnbmV3J1wiKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgfHwgIWlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY3JlYXRlIHByb3h5IHdpdGggYSBub24tb2JqZWN0IGFzIHRhcmdldCBvciBoYW5kbGVyJyk7XG4gICAgfVxuXG4gICAgLy8gQ29uc3RydWN0IHJldm9rZSBmdW5jdGlvbiwgYW5kIHNldCBsYXN0UmV2b2tlRm4gc28gdGhhdCBQcm94eS5yZXZvY2FibGUgY2FuIHN0ZWFsIGl0LlxuICAgIC8vIFRoZSBjYWxsZXIgbWlnaHQgZ2V0IHRoZSB3cm9uZyByZXZva2UgZnVuY3Rpb24gaWYgYSB1c2VyIHJlcGxhY2VzIG9yIHdyYXBzIHNjb3BlLlByb3h5XG4gICAgLy8gdG8gY2FsbCBpdHNlbGYsIGJ1dCB0aGF0IHNlZW1zIHVubGlrZWx5IGVzcGVjaWFsbHkgd2hlbiB1c2luZyB0aGUgcG9seWZpbGwuXG4gICAgbGV0IHRocm93UmV2b2tlZCA9IGZ1bmN0aW9uKCkge307XG4gICAgbGFzdFJldm9rZUZuID0gZnVuY3Rpb24oKSB7XG4gICAgICAvKiogQHN1cHByZXNzIHtjaGVja1R5cGVzfSAqL1xuICAgICAgdGFyZ2V0ID0gbnVsbDsgIC8vIGNsZWFyIHJlZlxuICAgICAgdGhyb3dSZXZva2VkID0gZnVuY3Rpb24odHJhcCkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBDYW5ub3QgcGVyZm9ybSAnJHt0cmFwfScgb24gYSBwcm94eSB0aGF0IGhhcyBiZWVuIHJldm9rZWRgKTtcbiAgICAgIH07XG4gICAgfTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgbGFzdFJldm9rZUZuID0gbnVsbDtcbiAgICB9LCAwKTtcblxuICAgIC8vIEZhaWwgb24gdW5zdXBwb3J0ZWQgdHJhcHM6IENocm9tZSBkb2Vzbid0IGRvIHRoaXMsIGJ1dCBlbnN1cmUgdGhhdCB1c2VycyBvZiB0aGUgcG9seWZpbGxcbiAgICAvLyBhcmUgYSBiaXQgbW9yZSBjYXJlZnVsLiBDb3B5IHRoZSBpbnRlcm5hbCBwYXJ0cyBvZiBoYW5kbGVyIHRvIHByZXZlbnQgdXNlciBjaGFuZ2VzLlxuICAgIGNvbnN0IHVuc2FmZUhhbmRsZXIgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSB7ICdnZXQnOiBudWxsLCAnc2V0JzogbnVsbCwgJ2FwcGx5JzogbnVsbCwgJ2NvbnN0cnVjdCc6IG51bGwgfTtcbiAgICBmb3IgKGxldCBrIGluIHVuc2FmZUhhbmRsZXIpIHtcbiAgICAgIGlmICghKGsgaW4gaGFuZGxlcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHJveHkgcG9seWZpbGwgZG9lcyBub3Qgc3VwcG9ydCB0cmFwICcke2t9J2ApO1xuICAgICAgfVxuICAgICAgaGFuZGxlcltrXSA9IHVuc2FmZUhhbmRsZXJba107XG4gICAgfVxuICAgIGlmICh0eXBlb2YgdW5zYWZlSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWxsb3cgaGFuZGxlciB0byBiZSBhIGZ1bmN0aW9uICh3aGljaCBoYXMgYW4gJ2FwcGx5JyBtZXRob2QpLiBUaGlzIG1hdGNoZXMgd2hhdCBpc1xuICAgICAgLy8gcHJvYmFibHkgYSBidWcgaW4gbmF0aXZlIHZlcnNpb25zLiBJdCB0cmVhdHMgdGhlIGFwcGx5IGNhbGwgYXMgYSB0cmFwIHRvIGJlIGNvbmZpZ3VyZWQuXG4gICAgICBoYW5kbGVyLmFwcGx5ID0gdW5zYWZlSGFuZGxlci5hcHBseS5iaW5kKHVuc2FmZUhhbmRsZXIpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSBwcm94eSBhcyBhbiBvYmplY3QgdGhhdCBleHRlbmRzIHRhcmdldC5bW1Byb3RvdHlwZV1dLFxuICAgIC8vIG9yIGEgRnVuY3Rpb24gKGlmIGVpdGhlciBpdCdzIGNhbGxhYmxlLCBvciBhcHBseSBpcyBzZXQpLlxuICAgIGNvbnN0IHByb3RvID0gZ2V0UHJvdG8odGFyZ2V0KTsgIC8vIGNhbiByZXR1cm4gbnVsbCBpbiBvbGQgYnJvd3NlcnNcbiAgICBsZXQgcHJveHk7XG4gICAgbGV0IGlzTWV0aG9kID0gZmFsc2U7XG4gICAgbGV0IGlzQXJyYXkgPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJveHkgPSBmdW5jdGlvbiBQcm94eVBvbHlmaWxsKCkge1xuICAgICAgICBjb25zdCB1c2luZ05ldyA9ICh0aGlzICYmIHRoaXMuY29uc3RydWN0b3IgPT09IHByb3h5KTtcbiAgICAgICAgY29uc3QgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgIHRocm93UmV2b2tlZCh1c2luZ05ldyA/ICdjb25zdHJ1Y3QnIDogJ2FwcGx5Jyk7XG5cbiAgICAgICAgLy8gVE9ETyhzYW10aG9yKTogQ2xvc3VyZSBjb21waWxlciBkb2Vzbid0IGtub3cgYWJvdXQgJ2NvbnN0cnVjdCcsIGF0dGVtcHRzIHRvIHJlbmFtZSBpdC5cbiAgICAgICAgaWYgKHVzaW5nTmV3ICYmIGhhbmRsZXJbJ2NvbnN0cnVjdCddKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZXJbJ2NvbnN0cnVjdCddLmNhbGwodGhpcywgdGFyZ2V0LCBhcmdzKTtcbiAgICAgICAgfSBlbHNlIGlmICghdXNpbmdOZXcgJiYgaGFuZGxlci5hcHBseSkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVyWydhcHBseSddKHRhcmdldCwgdGhpcywgYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzaW5jZSB0aGUgdGFyZ2V0IHdhcyBhIGZ1bmN0aW9uLCBmYWxsYmFjayB0byBjYWxsaW5nIGl0IGRpcmVjdGx5LlxuICAgICAgICBpZiAodXNpbmdOZXcpIHtcbiAgICAgICAgICAvLyBpbnNwaXJlZCBieSBhbnN3ZXJzIHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcS8xNjA2Nzk3XG4gICAgICAgICAgYXJncy51bnNoaWZ0KHRhcmdldCk7ICAvLyBwYXNzIGNsYXNzIGFzIGZpcnN0IGFyZyB0byBjb25zdHJ1Y3RvciwgYWx0aG91Z2ggaXJyZWxldmFudFxuICAgICAgICAgIC8vIG5iLiBjYXN0IHRvIGNvbnZpbmNlIENsb3N1cmUgY29tcGlsZXIgdGhhdCB0aGlzIGlzIGEgY29uc3RydWN0b3JcbiAgICAgICAgICBjb25zdCBmID0gLyoqIEB0eXBlIHshRnVuY3Rpb259ICovICh0YXJnZXQuYmluZC5hcHBseSh0YXJnZXQsIGFyZ3MpKTtcbiAgICAgICAgICByZXR1cm4gbmV3IGYoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgfTtcbiAgICAgIGlzTWV0aG9kID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRhcmdldCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBwcm94eSA9IFtdO1xuICAgICAgaXNBcnJheSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb3h5ID0gKGNhbkNyZWF0ZU51bGxQcm90b09iamVjdHMgfHwgcHJvdG8gIT09IG51bGwpID8gb2JqZWN0Q3JlYXRlKHByb3RvKSA6IHt9O1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBkZWZhdWx0IGdldHRlcnMvc2V0dGVycy4gQ3JlYXRlIGRpZmZlcmVudCBjb2RlIHBhdGhzIGFzIGhhbmRsZXIuZ2V0L2hhbmRsZXIuc2V0IGNhbid0XG4gICAgLy8gY2hhbmdlIGFmdGVyIGNyZWF0aW9uLlxuICAgIGNvbnN0IGdldHRlciA9IGhhbmRsZXIuZ2V0ID8gZnVuY3Rpb24ocHJvcCkge1xuICAgICAgdGhyb3dSZXZva2VkKCdnZXQnKTtcbiAgICAgIHJldHVybiBoYW5kbGVyLmdldCh0aGlzLCBwcm9wLCBwcm94eSk7XG4gICAgfSA6IGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgIHRocm93UmV2b2tlZCgnZ2V0Jyk7XG4gICAgICByZXR1cm4gdGhpc1twcm9wXTtcbiAgICB9O1xuICAgIGNvbnN0IHNldHRlciA9IGhhbmRsZXIuc2V0ID8gZnVuY3Rpb24ocHJvcCwgdmFsdWUpIHtcbiAgICAgIHRocm93UmV2b2tlZCgnc2V0Jyk7XG4gICAgICBjb25zdCBzdGF0dXMgPSBoYW5kbGVyLnNldCh0aGlzLCBwcm9wLCB2YWx1ZSwgcHJveHkpO1xuICAgICAgLy8gVE9ETyhzYW10aG9yKTogSWYgdGhlIGNhbGxpbmcgY29kZSBpcyBpbiBzdHJpY3QgbW9kZSwgdGhyb3cgVHlwZUVycm9yLlxuICAgICAgLy8gaWYgKCFzdGF0dXMpIHtcbiAgICAgICAgLy8gSXQncyAoc29tZXRpbWVzKSBwb3NzaWJsZSB0byB3b3JrIHRoaXMgb3V0LCBpZiB0aGlzIGNvZGUgaXNuJ3Qgc3RyaWN0LSB0cnkgdG8gbG9hZCB0aGVcbiAgICAgICAgLy8gY2FsbGVlLCBhbmQgaWYgaXQncyBhdmFpbGFibGUsIHRoYXQgY29kZSBpcyBub24tc3RyaWN0LiBIb3dldmVyLCB0aGlzIGlzbid0IGV4aGF1c3RpdmUuXG4gICAgICAvLyB9XG4gICAgfSA6IGZ1bmN0aW9uKHByb3AsIHZhbHVlKSB7XG4gICAgICB0aHJvd1Jldm9rZWQoJ3NldCcpO1xuICAgICAgdGhpc1twcm9wXSA9IHZhbHVlO1xuICAgIH07XG5cbiAgICAvLyBDbG9uZSBkaXJlY3QgcHJvcGVydGllcyAoaS5lLiwgbm90IHBhcnQgb2YgYSBwcm90b3R5cGUpLlxuICAgIGNvbnN0IHByb3BlcnR5TmFtZXMgPSAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgICBjb25zdCBwcm9wZXJ0eU1hcCA9IHt9O1xuICAgIHByb3BlcnR5TmFtZXMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgICBpZiAoKGlzTWV0aG9kIHx8IGlzQXJyYXkpICYmIHByb3AgaW4gcHJveHkpIHtcbiAgICAgICAgcmV0dXJuOyAgLy8gaWdub3JlIHByb3BlcnRpZXMgYWxyZWFkeSBoZXJlLCBlLmcuICdiaW5kJywgJ3Byb3RvdHlwZScgZXRjXG4gICAgICB9XG4gICAgICBjb25zdCByZWFsID0gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBwcm9wKTtcbiAgICAgIGNvbnN0IGRlc2MgPSB7XG4gICAgICAgIGVudW1lcmFibGU6IEJvb2xlYW4ocmVhbC5lbnVtZXJhYmxlKSxcbiAgICAgICAgZ2V0OiBnZXR0ZXIuYmluZCh0YXJnZXQsIHByb3ApLFxuICAgICAgICBzZXQ6IHNldHRlci5iaW5kKHRhcmdldCwgcHJvcCksXG4gICAgICB9O1xuICAgICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgcHJvcCwgZGVzYyk7XG4gICAgICBwcm9wZXJ0eU1hcFtwcm9wXSA9IHRydWU7XG4gICAgfSk7XG5cbiAgICAvLyBTZXQgdGhlIHByb3RvdHlwZSwgb3IgY2xvbmUgYWxsIHByb3RvdHlwZSBtZXRob2RzIChhbHdheXMgcmVxdWlyZWQgaWYgYSBnZXR0ZXIgaXMgcHJvdmlkZWQpLlxuICAgIC8vIFRPRE8oc2FtdGhvcik6IFdlIGRvbid0IGFsbG93IHByb3RvdHlwZSBtZXRob2RzIHRvIGJlIHNldC4gSXQncyAoZXZlbiBtb3JlKSBhd2t3YXJkLlxuICAgIC8vIEFuIGFsdGVybmF0aXZlIGhlcmUgd291bGQgYmUgdG8gX2p1c3RfIGNsb25lIG1ldGhvZHMgdG8ga2VlcCBiZWhhdmlvciBjb25zaXN0ZW50LlxuICAgIGxldCBwcm90b3R5cGVPayA9IHRydWU7XG4gICAgaWYgKGlzTWV0aG9kIHx8IGlzQXJyYXkpIHtcbiAgICAgIC8vIEFycmF5cyBhbmQgbWV0aG9kcyBhcmUgc3BlY2lhbDogYWJvdmUsIHdlIGluc3RhbnRpYXRlIGJvcmluZyB2ZXJzaW9ucyBvZiB0aGVzZSB0aGVuIHN3YXBcbiAgICAgIC8vIG91ciB0aGVpciBwcm90b3R5cGUgbGF0ZXIuIFNvIHdlIG9ubHkgbmVlZCB0byB1c2Ugc2V0UHJvdG90eXBlT2YgaW4gdGhlc2UgY2FzZXMuIFNvbWUgb2xkXG4gICAgICAvLyBlbmdpbmVzIHN1cHBvcnQgYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgYnV0IG5vdCBgT2JqZWN0LnNldFByb3RvdHlwZU9mYC5cbiAgICAgIGNvbnN0IHNldFByb3RvID1cbiAgICAgICAgJE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAoW10uX19wcm90b19fID09PSBBcnJheS5wcm90b3R5cGVcbiAgICAgICAgICA/IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlUHJvdG8ocHJvdG8pO1xuICAgICAgICAgICAgICBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICAgICAgICByZXR1cm4gTztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG5vb3ApO1xuICAgICAgaWYgKCEocHJvdG8gJiYgc2V0UHJvdG8ocHJveHksIHByb3RvKSkpIHtcbiAgICAgICAgcHJvdG90eXBlT2sgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGhhbmRsZXIuZ2V0IHx8ICFwcm90b3R5cGVPaykge1xuICAgICAgZm9yIChsZXQgayBpbiB0YXJnZXQpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5TWFwW2tdKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgaywgeyBnZXQ6IGdldHRlci5iaW5kKHRhcmdldCwgaykgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIFByb3h5IHBvbHlmaWxsIGNhbm5vdCBoYW5kbGUgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzLiBTZWFsIHRoZSB0YXJnZXQgYW5kIHByb3h5LlxuICAgICRPYmplY3Quc2VhbCh0YXJnZXQpO1xuICAgICRPYmplY3Quc2VhbChwcm94eSk7XG5cbiAgICByZXR1cm4gcHJveHk7ICAvLyBuYi4gaWYgaXNNZXRob2QgaXMgdHJ1ZSwgcHJveHkgIT0gdGhpc1xuICB9O1xuXG4gIFByb3h5UG9seWZpbGwucmV2b2NhYmxlID0gZnVuY3Rpb24odGFyZ2V0LCBoYW5kbGVyKSB7XG4gICAgY29uc3QgcCA9IG5ldyBQcm94eVBvbHlmaWxsKHRhcmdldCwgaGFuZGxlcik7XG4gICAgcmV0dXJuIHsgJ3Byb3h5JzogcCwgJ3Jldm9rZSc6IGxhc3RSZXZva2VGbiB9O1xuICB9O1xuXG4gIHJldHVybiBQcm94eVBvbHlmaWxsO1xufVxuIiwiZnVuY3Rpb24gRSAoKSB7XG4gIC8vIEtlZXAgdGhpcyBlbXB0eSBzbyBpdCdzIGVhc2llciB0byBpbmhlcml0IGZyb21cbiAgLy8gKHZpYSBodHRwczovL2dpdGh1Yi5jb20vbGlwc21hY2sgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRjb3JnYW4vdGlueS1lbWl0dGVyL2lzc3Vlcy8zKVxufVxuXG5FLnByb3RvdHlwZSA9IHtcbiAgb246IGZ1bmN0aW9uIChuYW1lLCBjYWxsYmFjaywgY3R4KSB7XG4gICAgdmFyIGUgPSB0aGlzLmUgfHwgKHRoaXMuZSA9IHt9KTtcblxuICAgIChlW25hbWVdIHx8IChlW25hbWVdID0gW10pKS5wdXNoKHtcbiAgICAgIGZuOiBjYWxsYmFjayxcbiAgICAgIGN0eDogY3R4XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSxcblxuICBvbmNlOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIGN0eCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBmdW5jdGlvbiBsaXN0ZW5lciAoKSB7XG4gICAgICBzZWxmLm9mZihuYW1lLCBsaXN0ZW5lcik7XG4gICAgICBjYWxsYmFjay5hcHBseShjdHgsIGFyZ3VtZW50cyk7XG4gICAgfTtcblxuICAgIGxpc3RlbmVyLl8gPSBjYWxsYmFja1xuICAgIHJldHVybiB0aGlzLm9uKG5hbWUsIGxpc3RlbmVyLCBjdHgpO1xuICB9LFxuXG4gIGVtaXQ6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdmFyIGRhdGEgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgdmFyIGV2dEFyciA9ICgodGhpcy5lIHx8ICh0aGlzLmUgPSB7fSkpW25hbWVdIHx8IFtdKS5zbGljZSgpO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgbGVuID0gZXZ0QXJyLmxlbmd0aDtcblxuICAgIGZvciAoaTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBldnRBcnJbaV0uZm4uYXBwbHkoZXZ0QXJyW2ldLmN0eCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgb2ZmOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgZSA9IHRoaXMuZSB8fCAodGhpcy5lID0ge30pO1xuICAgIHZhciBldnRzID0gZVtuYW1lXTtcbiAgICB2YXIgbGl2ZUV2ZW50cyA9IFtdO1xuXG4gICAgaWYgKGV2dHMgJiYgY2FsbGJhY2spIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBldnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChldnRzW2ldLmZuICE9PSBjYWxsYmFjayAmJiBldnRzW2ldLmZuLl8gIT09IGNhbGxiYWNrKVxuICAgICAgICAgIGxpdmVFdmVudHMucHVzaChldnRzW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgZXZlbnQgZnJvbSBxdWV1ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrXG4gICAgLy8gU3VnZ2VzdGVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9sYXpkXG4gICAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRjb3JnYW4vdGlueS1lbWl0dGVyL2NvbW1pdC9jNmViZmFhOWJjOTczYjMzZDExMGE4NGEzMDc3NDJiN2NmOTRjOTUzI2NvbW1pdGNvbW1lbnQtNTAyNDkxMFxuXG4gICAgKGxpdmVFdmVudHMubGVuZ3RoKVxuICAgICAgPyBlW25hbWVdID0gbGl2ZUV2ZW50c1xuICAgICAgOiBkZWxldGUgZVtuYW1lXTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEU7XG5tb2R1bGUuZXhwb3J0cy5UaW55RW1pdHRlciA9IEU7XG4iLCJleHBvcnQgY29uc3QgQlJBTkRJTkdfTUVUSE9EID0ge1xuICBnZXRFZGl0b3JGb290ZXJMb2dvOiAnYnJhbmRpbmcuZ2V0RWRpdG9yRm9vdGVyTG9nbycsXG4gIHNldEVkaXRvckZvb3RlckxvZ29TcmM6ICdicmFuZGluZy5zZXRFZGl0b3JGb290ZXJMb2dvU3JjJ1xufSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgQlJBTkRJTkdfQ0hBTkdFRF9FVkVOVCA9ICdicmFuZGluZzpjaGFuZ2VkJ1xuXG5leHBvcnQgdHlwZSBTREtCcmFuZE1vZGUgPSAnMCcgfCAnMScgfCAnMidcbmV4cG9ydCB0eXBlIFNES0JyYW5kU291cmNlID0gMCB8IDEgfCAyIHwgM1xuXG5leHBvcnQgaW50ZXJmYWNlIFNES0JyYW5kQ29uZmlnIHtcbiAgbW9kZTogU0RLQnJhbmRNb2RlXG4gIGN1c3RvbUFkZHJlc3M/OiBzdHJpbmdcbiAgc291cmNlOiBTREtCcmFuZFNvdXJjZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kaW5nQ2hhbmdlZFBheWxvYWQge1xuICBlZGl0b3JGb290ZXJMb2dvPzogU0RLQnJhbmRDb25maWdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuZGluZ0ZhY2FkZSB7XG4gIGdldEVkaXRvckZvb3RlckxvZ286ICgpID0+IFByb21pc2U8U0RLQnJhbmRDb25maWcgfCB1bmRlZmluZWQ+XG4gIHNldEVkaXRvckZvb3RlckxvZ29TcmM6IChzcmM6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5pbnRlcmZhY2UgQnJhbmRpbmdIb3N0IHtcbiAgZ2V0RWRpdG9yRm9vdGVyTG9nb1N0YXRlKCk6IFNES0JyYW5kQ29uZmlnIHwgdW5kZWZpbmVkXG4gIHNldEVkaXRvckZvb3RlckxvZ29TdGF0ZShjb25maWc6IFNES0JyYW5kQ29uZmlnIHwgdW5kZWZpbmVkKTogdm9pZFxuICBpbnZva2VCcmFuZGluZzxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKTogUHJvbWlzZTxUPlxuICBlbWl0QnJhbmRpbmdFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycjogdW5rbm93bik6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRCcmFuZGluZ0ZhY2FkZShob3N0OiBCcmFuZGluZ0hvc3QpOiBCcmFuZGluZ0ZhY2FkZSB7XG4gIHJldHVybiB7XG4gICAgZ2V0RWRpdG9yRm9vdGVyTG9nbzogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgaG9zdC5pbnZva2VCcmFuZGluZzxTREtCcmFuZENvbmZpZyB8IHVuZGVmaW5lZD4oXG4gICAgICAgIEJSQU5ESU5HX01FVEhPRC5nZXRFZGl0b3JGb290ZXJMb2dvXG4gICAgICApXG4gICAgICBob3N0LnNldEVkaXRvckZvb3RlckxvZ29TdGF0ZShjb25maWcpXG4gICAgICByZXR1cm4gaG9zdC5nZXRFZGl0b3JGb290ZXJMb2dvU3RhdGUoKVxuICAgIH0sXG4gICAgc2V0RWRpdG9yRm9vdGVyTG9nb1NyYzogYXN5bmMgKHNyYzogc3RyaW5nKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCBob3N0Lmludm9rZUJyYW5kaW5nPFNES0JyYW5kQ29uZmlnPihcbiAgICAgICAgICBCUkFORElOR19NRVRIT0Quc2V0RWRpdG9yRm9vdGVyTG9nb1NyYyxcbiAgICAgICAgICB7IHNyYyB9XG4gICAgICAgIClcbiAgICAgICAgaG9zdC5zZXRFZGl0b3JGb290ZXJMb2dvU3RhdGUoY29uZmlnKVxuICAgICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICAgIGhvc3QuZW1pdEJyYW5kaW5nRXJyb3IoJ3NldCBlZGl0b3IgZm9vdGVyIGxvZ28gc3JjIGZhaWxlZCcsIGVycilcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUJyYW5kaW5nQ2hhbmdlZChcbiAgaG9zdDogQnJhbmRpbmdIb3N0LFxuICBwYXlsb2FkPzogQnJhbmRpbmdDaGFuZ2VkUGF5bG9hZFxuKSB7XG4gIGlmIChcbiAgICAhcGF5bG9hZCB8fFxuICAgICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGF5bG9hZCwgJ2VkaXRvckZvb3RlckxvZ28nKVxuICApIHtcbiAgICByZXR1cm5cbiAgfVxuICBob3N0LnNldEVkaXRvckZvb3RlckxvZ29TdGF0ZShwYXlsb2FkLmVkaXRvckZvb3RlckxvZ28pXG59XG4iLCJpbXBvcnQgeyBGaWxlVHlwZSB9IGZyb20gJ3dlYm9mZmljZS1qcy1zZGstc2hhcmVkJ1xuXG5pbXBvcnQgdHlwZSB7XG4gIENvbGxhYm9yYXRvckZhY2FkZSxcbiAgQWRkUmFuZ2VMb2NrUGFyYW1zLFxuICBBZGRTaGVldExvY2tQYXJhbXMsXG4gIENvbnRlbnQsXG4gIENvbnRlbnRGYWNhZGUsXG4gIERpc2N1c3Npb25GYWNhZGUsXG4gIERvY3NSYW5nZUZhY2FkZSxcbiAgRG9jc1JhbmdlVmFsdWUsXG4gIERvY3NTZWFyY2hGYWNhZGUsXG4gIERvY3NTZWxlY3Rpb25GYWNhZGUsXG4gIERvY3NTZXR0aW5nc0ZhY2FkZSxcbiAgRG9jc1NpZGViYXJGYWNhZGUsXG4gIERvY3NPdXRsaW5lRmFjYWRlLFxuICBEb2NzVGFibGVDZWxsRmFjYWRlLFxuICBEb2NzVGFibGVGYWNhZGUsXG4gIERvY3NUYWJsZVJhbmdlRmFjYWRlLFxuICBEb2NzVGFibGVTZWxlY3Rpb24sXG4gIERvY3NUYWJsZXNGYWNhZGUsXG4gIEV4dGVybmFsQXBwRmFjYWRlLFxuICBIaXN0b3J5RmFjYWRlLFxuICBMb2Nrc0ZhY2FkZSxcbiAgTWVudGlvbkZhY2FkZSxcbiAgTWVudGlvblR5cGVzLFxuICBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUsXG4gIFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvblNoYXBlLFxuICBQcmVzZW50YXRpb25TaGFwZUJhc2UsXG4gIFByZXNlbnRhdGlvblRleHRTaGFwZSxcbiAgUHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25TbGlkZUZhY2FkZSxcbiAgUHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlLFxuICBQcmVzZW50YXRpb25UZXh0RmFjYWRlLFxuICBQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUsXG4gIFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlLFxuICBQcmVzZW50YXRpb25ab29tRmFjYWRlLFxuICBSZW1vdmVSYW5nZUxvY2tzUGFyYW1zLFxuICBSZW1vdmVTaGVldExvY2tQYXJhbXMsXG4gIFJldmlzaW9uQ3JlYXRlT3B0aW9ucyxcbiAgU2hlZXRDaGFydHNGYWNhZGUsXG4gIFNoZWV0Q2VsbEZhY2FkZSxcbiAgU2hlZXRSYW5nZUZhY2FkZSxcbiAgU2hlZXRSYW5nZVZhbHVlLFxuICBTaGVldFNlbGVjdGlvbnNGYWNhZGUsXG4gIFNoZWV0V29ya2Jvb2tGYWNhZGUsXG4gIFNoZWV0V29ya3NoZWV0RmFjYWRlLFxuICBUaXRsZUZhY2FkZSxcbiAgVmVyc2lvbkZhY2FkZVxufSBmcm9tICcuL09mZmljZVNESy5mYWNhZGUudHlwZXMnXG5cbnR5cGUgRWRpdG9yRmFjYWRlQ2FsbGJhY2sgPSAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPlxuXG5pbnRlcmZhY2UgRmFjYWRlSG9zdCB7XG4gIGZpbGVUeXBlOiBGaWxlVHlwZVxuICBpbnZva2VFZGl0b3JGYWNhZGU8VD4obWV0aG9kOiBzdHJpbmcsIGFyZ3M/OiB1bmtub3duW10pOiBQcm9taXNlPFQ+XG4gIGxpc3RlbkVkaXRvckV2ZW50PFQ+KFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgbGlzdGVuZXI6IChwYXlsb2FkOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWRcbiAgY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIHN0YXRpY0ZpZWxkcz86IFBhcnRpYWw8VD5cbiAgKTogVFxuICBjcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBsb2NhdG9yOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBzdGF0aWNGaWVsZHM6IFBhcnRpYWw8VD5cbiAgKTogVFxuICByZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyPFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIGxpc3RlbmVyOiAocGF5bG9hZDogVCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkXG4gIHJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2s6IEVkaXRvckZhY2FkZUNhbGxiYWNrKTogc3RyaW5nXG4gIHVucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFja0lkOiBzdHJpbmcpOiB2b2lkXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURvY3NSYW5nZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogRG9jc1JhbmdlRmFjYWRlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8RG9jc1JhbmdlRmFjYWRlPihcbiAgICAnc2VsZWN0aW9uLnJhbmdlJyxcbiAgICBsb2NhdG9yLFxuICAgIHtcbiAgICAgIHN0YXJ0OiBsb2NhdG9yLnN0YXJ0LFxuICAgICAgZW5kOiBsb2NhdG9yLmVuZCxcbiAgICAgIGlzQ2FyZXQ6IGxvY2F0b3Iuc3RhcnQgPT09IGxvY2F0b3IuZW5kXG4gICAgfVxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURvY3NUYWJsZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjogeyB0YWJsZUlkOiBzdHJpbmcgfVxuKTogRG9jc1RhYmxlRmFjYWRlIHtcbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8RG9jc1RhYmxlRmFjYWRlPigndGFibGVzLml0ZW0nLCBsb2NhdG9yLCB7XG4gICAgdGFibGVJZDogbG9jYXRvci50YWJsZUlkLFxuICAgIGdldENlbGw6IGFzeW5jIChyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpID0+IHtcbiAgICAgIGNvbnN0IG5leHRMb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICB0YWJsZUlkOiBzdHJpbmdcbiAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgIH0gfCBudWxsPigndGFibGVzLml0ZW0uZ2V0Q2VsbCcsIFtsb2NhdG9yLCByb3csIGNvbHVtbl0pXG4gICAgICBpZiAoIW5leHRMb2NhdG9yKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxEb2NzVGFibGVDZWxsRmFjYWRlPihcbiAgICAgICAgJ3RhYmxlcy5jZWxsJyxcbiAgICAgICAgbmV4dExvY2F0b3IsXG4gICAgICAgIHtcbiAgICAgICAgICB0YWJsZUlkOiBuZXh0TG9jYXRvci50YWJsZUlkLFxuICAgICAgICAgIHJvdzogbmV4dExvY2F0b3Iucm93LFxuICAgICAgICAgIGNvbHVtbjogbmV4dExvY2F0b3IuY29sdW1uXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9LFxuICAgIGdldFJhbmdlOiBhc3luYyAoc2VsZWN0aW9uOiBEb2NzVGFibGVTZWxlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IG5leHRMb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICB0YWJsZUlkOiBzdHJpbmdcbiAgICAgICAgc2VsZWN0aW9uOiBEb2NzVGFibGVTZWxlY3Rpb25cbiAgICAgIH0gfCBudWxsPigndGFibGVzLml0ZW0uZ2V0UmFuZ2UnLCBbbG9jYXRvciwgc2VsZWN0aW9uXSlcbiAgICAgIGlmICghbmV4dExvY2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPERvY3NUYWJsZVJhbmdlRmFjYWRlPihcbiAgICAgICAgJ3RhYmxlcy5yYW5nZScsXG4gICAgICAgIG5leHRMb2NhdG9yLFxuICAgICAgICB7XG4gICAgICAgICAgdGFibGVJZDogbmV4dExvY2F0b3IudGFibGVJZCxcbiAgICAgICAgICBzZWxlY3Rpb246IG5leHRMb2NhdG9yLnNlbGVjdGlvblxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGVldFJhbmdlRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOlxuICAgIHwge1xuICAgICAgICBzaGVldElkPzogc3RyaW5nXG4gICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICAgIHJvd0NvdW50OiBudW1iZXJcbiAgICAgICAgY29sdW1uQ291bnQ6IG51bWJlclxuICAgICAgfVxuICAgIHwgbnVsbFxuICAgIHwgdW5kZWZpbmVkXG4pOiBTaGVldFJhbmdlRmFjYWRlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8U2hlZXRSYW5nZUZhY2FkZT4oXG4gICAgJ3NoZWV0LnJhbmdlJyxcbiAgICBsb2NhdG9yLFxuICAgIGxvY2F0b3JcbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGVldENlbGxGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6XG4gICAgfCB7XG4gICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgIH1cbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZFxuKTogU2hlZXRDZWxsRmFjYWRlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8U2hlZXRDZWxsRmFjYWRlPihcbiAgICAnc2hlZXQuY2VsbCcsXG4gICAgbG9jYXRvcixcbiAgICBsb2NhdG9yXG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2hlZXRXb3Jrc2hlZXRGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IHtcbiAgICBzaGVldElkPzogc3RyaW5nXG4gICAgaWQ/OiBzdHJpbmdcbiAgICBuYW1lPzogc3RyaW5nXG4gICAgYWN0aXZlPzogYm9vbGVhblxuICB9XG4pOiBTaGVldFdvcmtzaGVldEZhY2FkZSB7XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFNoZWV0V29ya3NoZWV0RmFjYWRlPihcbiAgICAnc2hlZXQud29ya3NoZWV0JyxcbiAgICBsb2NhdG9yLFxuICAgIHtcbiAgICAgIGlkOiBsb2NhdG9yLmlkLFxuICAgICAgbmFtZTogbG9jYXRvci5uYW1lLFxuICAgICAgZ2V0UmFuZ2U6IGFzeW5jICh2YWx1ZTogU2hlZXRSYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhbmdlTG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzaGVldElkPzogc3RyaW5nXG4gICAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgICAgIHJvd0NvdW50OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICAgICAgIH0gfCBudWxsPignc2hlZXQud29ya3NoZWV0LmdldFJhbmdlJywgW2xvY2F0b3IsIHZhbHVlXSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNoZWV0UmFuZ2VGYWNhZGUoaG9zdCwgcmFuZ2VMb2NhdG9yKVxuICAgICAgfSxcbiAgICAgIGdldENlbGw6IGFzeW5jIChyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgY2VsbExvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIHJvdzogbnVtYmVyXG4gICAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KCdzaGVldC53b3Jrc2hlZXQuZ2V0Q2VsbCcsIFtsb2NhdG9yLCByb3csIGNvbHVtbl0pXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldENlbGxGYWNhZGUoaG9zdCwgY2VsbExvY2F0b3IpXG4gICAgICB9LFxuICAgICAgZ2V0QWN0aXZlQ2VsbDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBjZWxsTG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzaGVldElkPzogc3RyaW5nXG4gICAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgICB9IHwgbnVsbD4oJ3NoZWV0LndvcmtzaGVldC5nZXRBY3RpdmVDZWxsJywgW2xvY2F0b3JdKVxuICAgICAgICByZXR1cm4gY3JlYXRlU2hlZXRDZWxsRmFjYWRlKGhvc3QsIGNlbGxMb2NhdG9yKVxuICAgICAgfVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IHsgc3RhcnQ6IHN0cmluZzsgZW5kOiBzdHJpbmcgfSB8IG51bGwgfCB1bmRlZmluZWRcbik6IFByZXNlbnRhdGlvblRleHRSYW5nZUZhY2FkZSB8IG51bGwge1xuICBpZiAoIWxvY2F0b3IpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFByZXNlbnRhdGlvblRleHRSYW5nZUZhY2FkZT4oXG4gICAgJ3NlbGVjdGlvbi50ZXh0UmFuZ2UnLFxuICAgIGxvY2F0b3IsXG4gICAge1xuICAgICAgc3RhcnQ6IGxvY2F0b3Iuc3RhcnQsXG4gICAgICBlbmQ6IGxvY2F0b3IuZW5kXG4gICAgfVxuICApXG59XG5cbmludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUxvY2F0b3Ige1xuICBzbGlkZUlkOiBzdHJpbmdcbiAgc2hhcGVJZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICB0eXBlOiBzdHJpbmdcbiAgdGV4dENvbnRlbnQ/OiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJlc2VudGF0aW9uU2hhcGVGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IFByZXNlbnRhdGlvblNoYXBlTG9jYXRvciB8IG51bGwgfCB1bmRlZmluZWRcbik6IFByZXNlbnRhdGlvblNoYXBlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBzdGF0aWNGaWVsZHM6IFBhcnRpYWw8UHJlc2VudGF0aW9uU2hhcGVCYXNlPiAmIHtcbiAgICBpZDogc3RyaW5nXG4gICAgbmFtZTogc3RyaW5nXG4gICAgdHlwZTogc3RyaW5nXG4gICAgdGV4dENvbnRlbnQ/OiBzdHJpbmdcbiAgfSA9IHtcbiAgICBpZDogbG9jYXRvci5zaGFwZUlkLFxuICAgIG5hbWU6IGxvY2F0b3IubmFtZSxcbiAgICB0eXBlOiBsb2NhdG9yLnR5cGUsXG4gICAgdGV4dENvbnRlbnQ6IGxvY2F0b3IudGV4dENvbnRlbnRcbiAgfVxuXG4gIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFByZXNlbnRhdGlvblNoYXBlPihcbiAgICAnc2xpZGVzLnNsaWRlLnNoYXBlJyxcbiAgICBsb2NhdG9yIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgc3RhdGljRmllbGRzIGFzIFBhcnRpYWw8UHJlc2VudGF0aW9uU2hhcGU+XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IHtcbiAgICBzbGlkZUlkOiBzdHJpbmdcbiAgfVxuKTogUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUge1xuICBjb25zdCBpbnNlcnRTaGFwZSA9IChhc3luYyAob3B0aW9uczogdW5rbm93bikgPT4ge1xuICAgIGNvbnN0IHNoYXBlID1cbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFByZXNlbnRhdGlvblNoYXBlTG9jYXRvciB8IG51bGw+KFxuICAgICAgICAnc2xpZGVzLnNsaWRlLmluc2VydFNoYXBlJyxcbiAgICAgICAgW2xvY2F0b3IsIG9wdGlvbnNdXG4gICAgICApXG4gICAgY29uc3QgZmFjYWRlID0gY3JlYXRlUHJlc2VudGF0aW9uU2hhcGVGYWNhZGUoaG9zdCwgc2hhcGUpXG4gICAgaWYgKCFmYWNhZGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncHJlc2VudGF0aW9uIHNoYXBlIG5vdCBmb3VuZCcpXG4gICAgfVxuICAgIHJldHVybiBmYWNhZGVcbiAgfSkgYXMgUHJlc2VudGF0aW9uU2xpZGVGYWNhZGVbJ2luc2VydFNoYXBlJ11cblxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT4oXG4gICAgJ3NsaWRlcy5zbGlkZScsXG4gICAgbG9jYXRvcixcbiAgICB7XG4gICAgICBpZDogbG9jYXRvci5zbGlkZUlkLFxuICAgICAgZ2V0U2hhcGVzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNoYXBlcyA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFxuICAgICAgICAgIFByZXNlbnRhdGlvblNoYXBlTG9jYXRvcltdXG4gICAgICAgID4oJ3NsaWRlcy5zbGlkZS5nZXRTaGFwZXMnLCBbbG9jYXRvcl0pXG4gICAgICAgIHJldHVybiBzaGFwZXNcbiAgICAgICAgICAubWFwKChzaGFwZSkgPT4gY3JlYXRlUHJlc2VudGF0aW9uU2hhcGVGYWNhZGUoaG9zdCwgc2hhcGUpKVxuICAgICAgICAgIC5maWx0ZXIoKHNoYXBlKTogc2hhcGUgaXMgUHJlc2VudGF0aW9uU2hhcGUgPT4gc2hhcGUgIT09IG51bGwpXG4gICAgICB9LFxuICAgICAgaW5zZXJ0U2hhcGUsXG4gICAgICBpbnNlcnRUZXh0Qm94OiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBzaGFwZSA9XG4gICAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8UHJlc2VudGF0aW9uU2hhcGVMb2NhdG9yIHwgbnVsbD4oXG4gICAgICAgICAgICAnc2xpZGVzLnNsaWRlLmluc2VydFRleHRCb3gnLFxuICAgICAgICAgICAgW2xvY2F0b3IsIG9wdGlvbnNdXG4gICAgICAgICAgKVxuICAgICAgICBjb25zdCBmYWNhZGUgPSBjcmVhdGVQcmVzZW50YXRpb25TaGFwZUZhY2FkZShob3N0LCBzaGFwZSlcbiAgICAgICAgaWYgKCFmYWNhZGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ByZXNlbnRhdGlvbiB0ZXh0IHNoYXBlIG5vdCBmb3VuZCcpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhY2FkZSBhcyBQcmVzZW50YXRpb25UZXh0U2hhcGVcbiAgICAgIH1cbiAgICB9XG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm9vdEZhY2FkZVN0YXRlKFxuICBob3N0OiBGYWNhZGVIb3N0XG4pOiBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUge1xuICBjb25zdCB0aXRsZUZhY2FkZTogVGl0bGVGYWNhZGUgPSB7XG4gICAgYWRkQ2hhbmdlZExpc3RlbmVyOiAobGlzdGVuZXI6ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gICAgICByZXR1cm4gaG9zdC5saXN0ZW5FZGl0b3JFdmVudDxzdHJpbmc+KCd0aXRsZUNoYW5nZScsIGxpc3RlbmVyKVxuICAgIH0sXG4gICAgc2V0VGl0bGU6IGFzeW5jICh0aXRsZTogc3RyaW5nKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndGl0bGUuc2V0VGl0bGUnLCBbdGl0bGVdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbW1lbnRzRmFjYWRlID0ge1xuICAgIHNob3c6IGFzeW5jICh0eXBlPzogJ2xpc3QnIHwgJ2NhcmQnKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZShcbiAgICAgICAgJ2NvbW1lbnRzLnNob3cnLFxuICAgICAgICB0eXBlb2YgdHlwZSA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFt0eXBlXVxuICAgICAgKVxuICAgIH0sXG4gICAgaGlkZTogYXN5bmMgKHR5cGU/OiAnbGlzdCcgfCAnY2FyZCcpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKFxuICAgICAgICAnY29tbWVudHMuaGlkZScsXG4gICAgICAgIHR5cGVvZiB0eXBlID09PSAndW5kZWZpbmVkJyA/IFtdIDogW3R5cGVdXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGlzdG9yeUZhY2FkZTogSGlzdG9yeUZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnaGlzdG9yeS5zaG93JylcbiAgICB9LFxuICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdoaXN0b3J5LmhpZGUnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc2N1c3Npb25GYWNhZGU6IERpc2N1c3Npb25GYWNhZGUgPSB7XG4gICAgc2hvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2Rpc2N1c3Npb24uc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnZGlzY3Vzc2lvbi5oaWRlJylcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb2xsYWJvcmF0b3JGYWNhZGU6IENvbGxhYm9yYXRvckZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnY29sbGFib3JhdG9yLnNob3cnKVxuICAgIH0sXG4gICAgaGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2NvbGxhYm9yYXRvci5oaWRlJylcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHRlcm5hbEFwcEZhY2FkZTogRXh0ZXJuYWxBcHBGYWNhZGUgPSB7XG4gICAgaW5zZXJ0OiBhc3luYyAodXJsLCBwYXJhbXMpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnaW5zZXJ0RXh0ZXJuYWxBcHAnLCBbdXJsLCBwYXJhbXNdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGxvY2tzRmFjYWRlOiBMb2Nrc0ZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3Muc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MuaGlkZScpXG4gICAgfSxcbiAgICBhZGRSYW5nZUxvY2s6IGFzeW5jIChvcHRpb25zOiBBZGRSYW5nZUxvY2tQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5hZGRSYW5nZUxvY2snLCBbb3B0aW9uc10pXG4gICAgfSxcbiAgICBhZGRTaGVldExvY2s6IGFzeW5jIChvcHRpb25zOiBBZGRTaGVldExvY2tQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5hZGRTaGVldExvY2snLCBbb3B0aW9uc10pXG4gICAgfSxcbiAgICByZW1vdmVSYW5nZUxvY2tzSW5SYW5nZXM6IGFzeW5jIChvcHRpb25zOiBSZW1vdmVSYW5nZUxvY2tzUGFyYW1zKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MucmVtb3ZlUmFuZ2VMb2Nrc0luUmFuZ2VzJywgW29wdGlvbnNdKVxuICAgIH0sXG4gICAgcmVtb3ZlU2hlZXRMb2NrOiBhc3luYyAob3B0aW9uczogUmVtb3ZlU2hlZXRMb2NrUGFyYW1zKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbG9ja3MucmVtb3ZlU2hlZXRMb2NrJywgW29wdGlvbnNdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1lbnRpb25GYWNhZGU6IE1lbnRpb25GYWNhZGUgPSB7XG4gICAgbG9jYXRlQ2VsbEJ5R3VpZDogYXN5bmMgKGd1aWQ6IHN0cmluZywgbm90aWZpY2F0aW9uVHlwZT86IE1lbnRpb25UeXBlcykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ21lbnRpb24ubG9jYXRlQ2VsbEJ5R3VpZCcsIFtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgbm90aWZpY2F0aW9uVHlwZVxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb250ZW50RmFjYWRlOiBDb250ZW50RmFjYWRlID0ge1xuICAgIHNldENvbnRlbnQ6IGFzeW5jIChjb250ZW50OiBDb250ZW50KSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnY29udGVudC5zZXRDb250ZW50JywgW2NvbnRlbnRdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHZlcnNpb25GYWNhZGU6IFZlcnNpb25GYWNhZGUgPSB7XG4gICAgc2hvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ZlcnNpb24uc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndmVyc2lvbi5oaWRlJylcbiAgICB9LFxuICAgIGNyZWF0ZVJldmlzaW9uOiBhc3luYyAob3B0aW9ucz86IFJldmlzaW9uQ3JlYXRlT3B0aW9ucykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ZlcnNpb24uY3JlYXRlUmV2aXNpb24nLCBbb3B0aW9uc10pXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJlc2VudGF0aW9uRmFjYWRlOiBQcmVzZW50YXRpb25GYWNhZGUgPSB7XG4gICAgc3RhcnQ6IGFzeW5jIChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoXG4gICAgICAgICdwcmVzZW50YXRpb24uc3RhcnQnLFxuICAgICAgICB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gW2luZGV4XSA6IFtdXG4gICAgICApXG4gICAgfSxcbiAgICBxdWl0OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgncHJlc2VudGF0aW9uLnF1aXQnKVxuICAgIH0sXG4gICAgc3RhcnRGcm9tQ3VycmVudDogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydEZyb21DdXJyZW50JylcbiAgICB9LFxuICAgIHN0YXJ0UmVtb3RlTGl2ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFJlbW90ZUxpdmUnKVxuICAgIH0sXG4gICAgc3RhcnRTcGVha2VyVmlldzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFNwZWFrZXJWaWV3JylcbiAgICB9LFxuICAgIGFkZENoYW5nZUxpc3RlbmVyOiAobGlzdGVuZXI6IChwYXlsb2FkOiB1bmtub3duKSA9PiB2b2lkKSA9PlxuICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAncHJlc2VudGF0aW9uLmFkZENoYW5nZUxpc3RlbmVyJyxcbiAgICAgICAgbGlzdGVuZXJcbiAgICAgIClcbiAgfVxuXG4gIGNvbnN0IGJhdGNoQ2hhbmdlc0ZhY2FkZSA9IGFzeW5jIDxUPihcbiAgICBjYWxsYmFjazogKCkgPT4gVCB8IFByb21pc2U8VD5cbiAgKTogUHJvbWlzZTxBd2FpdGVkPFQ+PiA9PiB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFjaylcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdiYXRjaENoYW5nZXMnLCBbY2FsbGJhY2tJZF0pXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGhvc3QudW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrSWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcHJpbnRGYWNhZGUgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByaW50JylcbiAgfVxuXG4gIGNvbnN0IGV4cG9ydEZhY2FkZSA9IGFzeW5jICh0eXBlOiBzdHJpbmcpID0+IHtcbiAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnZXhwb3J0JywgW3R5cGVdKVxuICB9XG5cbiAgY29uc3Qgc2V0Rm9jdXNGYWNhZGUgPSBhc3luYyAoaXNGb2N1czogYm9vbGVhbikgPT4ge1xuICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdzZXRGb2N1cycsIFtpc0ZvY3VzXSlcbiAgfVxuXG4gIGNvbnN0IGRvY3NTZWxlY3Rpb25GYWNhZGUgPVxuICAgIGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTZWxlY3Rpb25GYWNhZGU+KCdzZWxlY3Rpb24nLCB7XG4gICAgICBnZXRSYW5nZTogYXN5bmMgKHZhbHVlPzogRG9jc1JhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzdGFydDogbnVtYmVyXG4gICAgICAgICAgZW5kOiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KFxuICAgICAgICAgICdzZWxlY3Rpb24uZ2V0UmFuZ2UnLFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFt2YWx1ZV1cbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gY3JlYXRlRG9jc1JhbmdlRmFjYWRlKGhvc3QsIGxvY2F0b3IpXG4gICAgICB9LFxuICAgICAgZ2V0V2hvbGVSYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHN0YXJ0OiBudW1iZXJcbiAgICAgICAgICBlbmQ6IG51bWJlclxuICAgICAgICB9IHwgbnVsbD4oJ3NlbGVjdGlvbi5nZXRXaG9sZVJhbmdlJylcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURvY3NSYW5nZUZhY2FkZShob3N0LCBsb2NhdG9yKVxuICAgICAgfSxcbiAgICAgIGFkZFJhbmdlTGlzdGVuZXI6IChsaXN0ZW5lcjogKHBheWxvYWQ6IERvY3NSYW5nZVZhbHVlIHwgbnVsbCkgPT4gdm9pZCkgPT5cbiAgICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAgICdzZWxlY3Rpb24uYWRkUmFuZ2VMaXN0ZW5lcicsXG4gICAgICAgICAgbGlzdGVuZXJcbiAgICAgICAgKVxuICAgIH0pXG5cbiAgY29uc3QgZG9jc1RhYmxlc0ZhY2FkZSA9IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NUYWJsZXNGYWNhZGU+KFxuICAgICd0YWJsZXMnLFxuICAgIHtcbiAgICAgIGdldEFsbDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZXMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBBcnJheTx7IHRhYmxlSWQ6IHN0cmluZyB9PlxuICAgICAgICA+KCd0YWJsZXMuZ2V0QWxsJylcbiAgICAgICAgcmV0dXJuIHRhYmxlcy5tYXAoKHRhYmxlKSA9PiBjcmVhdGVEb2NzVGFibGVGYWNhZGUoaG9zdCwgdGFibGUpKVxuICAgICAgfSxcbiAgICAgIGdldE9uZTogYXN5bmMgKHRhYmxlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgdGFibGVJZDogc3RyaW5nIH0gfCBudWxsPihcbiAgICAgICAgICAndGFibGVzLmdldE9uZScsXG4gICAgICAgICAgW3RhYmxlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHRhYmxlID8gY3JlYXRlRG9jc1RhYmxlRmFjYWRlKGhvc3QsIHRhYmxlKSA6IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIClcblxuICBjb25zdCBzaGVldFdvcmtib29rRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxTaGVldFdvcmtib29rRmFjYWRlPignd29ya2Jvb2snLCB7XG4gICAgICBnZXRXb3Jrc2hlZXRzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdvcmtzaGVldHMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBBcnJheTx7IHNoZWV0SWQ/OiBzdHJpbmc7IGlkPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0+XG4gICAgICAgID4oJ3dvcmtib29rLmdldFdvcmtzaGVldHMnKVxuICAgICAgICByZXR1cm4gd29ya3NoZWV0cy5tYXAoKHNoZWV0KSA9PlxuICAgICAgICAgIGNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlKGhvc3QsIHNoZWV0KVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgZ2V0V29ya3NoZWV0QnlJZDogYXN5bmMgKHNoZWV0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIGlkPzogc3RyaW5nXG4gICAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgICB9IHwgbnVsbD4oJ3dvcmtib29rLmdldFdvcmtzaGVldEJ5SWQnLCBbc2hlZXRJZF0pXG4gICAgICAgIHJldHVybiB3b3Jrc2hlZXQgPyBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCB3b3Jrc2hlZXQpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGdldEFjdGl2ZVdvcmtzaGVldDogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXQgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICAgIGlkPzogc3RyaW5nXG4gICAgICAgICAgbmFtZT86IHN0cmluZ1xuICAgICAgICAgIGFjdGl2ZT86IGJvb2xlYW5cbiAgICAgICAgfT4oJ3dvcmtib29rLmdldEFjdGl2ZVdvcmtzaGVldCcpXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCB3b3Jrc2hlZXQpXG4gICAgICB9XG4gICAgfSlcblxuICBjb25zdCBwcmVzZW50YXRpb25TbGlkZXNGYWNhZGUgPVxuICAgIGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZT4oJ3NsaWRlcycsIHtcbiAgICAgIGdldEN1cnJlbnRTbGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0+KFxuICAgICAgICAgICdzbGlkZXMuZ2V0Q3VycmVudFNsaWRlJ1xuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShob3N0LCBzbGlkZSlcbiAgICAgIH0sXG4gICAgICBnZXRTbGlkZXM6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyBzbGlkZUlkOiBzdHJpbmcgfT5cbiAgICAgICAgPignc2xpZGVzLmdldFNsaWRlcycpXG4gICAgICAgIHJldHVybiBzbGlkZXMubWFwKChzbGlkZSkgPT4gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoaG9zdCwgc2xpZGUpKVxuICAgICAgfSxcbiAgICAgIGdldFNsaWRlQnlJZDogYXN5bmMgKHNsaWRlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0gfCBudWxsPihcbiAgICAgICAgICAnc2xpZGVzLmdldFNsaWRlQnlJZCcsXG4gICAgICAgICAgW3NsaWRlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIHNsaWRlID8gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoaG9zdCwgc2xpZGUpIDogbnVsbFxuICAgICAgfSxcbiAgICAgIGdldFNlbGVjdGVkU2xpZGVzOiBhc3luYyAoaWRzPzogc3RyaW5nW10pID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGVzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyBzbGlkZUlkOiBzdHJpbmcgfT5cbiAgICAgICAgPignc2xpZGVzLmdldFNlbGVjdGVkU2xpZGVzJywgdHlwZW9mIGlkcyA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFtpZHNdKVxuICAgICAgICByZXR1cm4gc2xpZGVzLm1hcCgoc2xpZGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKSlcbiAgICAgIH0sXG4gICAgICBhZGRTbGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0+KFxuICAgICAgICAgICdzbGlkZXMuYWRkU2xpZGUnXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKVxuICAgICAgfSxcbiAgICAgIGR1cGxpY2F0ZVNsaWRlOiBhc3luYyAoc2xpZGVJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8eyBzbGlkZUlkOiBzdHJpbmcgfT4oXG4gICAgICAgICAgJ3NsaWRlcy5kdXBsaWNhdGVTbGlkZScsXG4gICAgICAgICAgW3NsaWRlSWRdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgY29uc3QgcHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGU+KCdzZWxlY3Rpb24nLCB7XG4gICAgICBnZXRUZXh0UmFuZ2U6IGFzeW5jICh2YWx1ZT86IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc3RhcnQ6IHN0cmluZ1xuICAgICAgICAgIGVuZDogc3RyaW5nXG4gICAgICAgIH0gfCBudWxsPihcbiAgICAgICAgICAnc2VsZWN0aW9uLmdldFRleHRSYW5nZScsXG4gICAgICAgICAgdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyA/IFtdIDogW3ZhbHVlXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUoaG9zdCwgbG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgICAgIGxpc3RlbmVyOiAocGF5bG9hZDogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWUgfCBudWxsKSA9PiB2b2lkXG4gICAgICApID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnc2VsZWN0aW9uLmFkZFJhbmdlTGlzdGVuZXInLFxuICAgICAgICAgIGxpc3RlbmVyXG4gICAgICAgICksXG4gICAgICBnZXRTZWxlY3RlZFNoYXBlczogYXN5bmMgKGlkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNoYXBlcyA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFxuICAgICAgICAgIFByZXNlbnRhdGlvblNoYXBlTG9jYXRvcltdIHwgbnVsbFxuICAgICAgICA+KFxuICAgICAgICAgICdzZWxlY3Rpb24uZ2V0U2VsZWN0ZWRTaGFwZXMnLFxuICAgICAgICAgIHR5cGVvZiBpZHMgPT09ICd1bmRlZmluZWQnID8gW10gOiBbaWRzXVxuICAgICAgICApXG4gICAgICAgIGlmICghc2hhcGVzKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hhcGVzXG4gICAgICAgICAgLm1hcCgoc2hhcGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblNoYXBlRmFjYWRlKGhvc3QsIHNoYXBlKSlcbiAgICAgICAgICAuZmlsdGVyKChzaGFwZSk6IHNoYXBlIGlzIFByZXNlbnRhdGlvblNoYXBlID0+IHNoYXBlICE9PSBudWxsKVxuICAgICAgfVxuICAgIH0pXG5cbiAgY29uc3QgcHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGU6IFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlID1cbiAgICB7XG4gICAgICBhZGRFcnJvckxpc3RlbmVyOiAoXG4gICAgICAgIGxpc3RlbmVyOiAoZXJyb3I6IHsgY29kZTogbnVtYmVyIHwgc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHZvaWRcbiAgICAgICkgPT5cbiAgICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAgICdldmVudFN1YnNjcmlwdGlvbi5hZGRFcnJvckxpc3RlbmVyJyxcbiAgICAgICAgICBsaXN0ZW5lclxuICAgICAgICApLFxuICAgICAgYWRkTG9hZGVkTGlzdGVuZXI6IChsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT5cbiAgICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAgICdldmVudFN1YnNjcmlwdGlvbi5hZGRMb2FkZWRMaXN0ZW5lcicsXG4gICAgICAgICAgbGlzdGVuZXJcbiAgICAgICAgKVxuICAgIH1cblxuICBjb25zdCBkb2NzT3V0bGluZUZhY2FkZSA9IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NPdXRsaW5lRmFjYWRlPihcbiAgICAnb3V0bGluZScsXG4gICAge1xuICAgICAgc2hvdzogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnb3V0bGluZS5zZXRPcGVuJywgW3RydWVdKVxuICAgICAgfSxcbiAgICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ291dGxpbmUuc2V0T3BlbicsIFtmYWxzZV0pXG4gICAgICB9XG4gICAgfVxuICApXG5cbiAgc3dpdGNoIChob3N0LmZpbGVUeXBlKSB7XG4gICAgY2FzZSBGaWxlVHlwZS5Eb2N1bWVudDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0aXRsZUZhY2FkZSxcbiAgICAgICAgaGlzdG9yeTogaGlzdG9yeUZhY2FkZSxcbiAgICAgICAgY29tbWVudHM6IGNvbW1lbnRzRmFjYWRlLFxuICAgICAgICBkaXNjdXNzaW9uOiBkaXNjdXNzaW9uRmFjYWRlLFxuICAgICAgICBjb2xsYWJvcmF0b3I6IGNvbGxhYm9yYXRvckZhY2FkZSxcbiAgICAgICAgZXh0ZXJuYWxBcHA6IGV4dGVybmFsQXBwRmFjYWRlLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uRmFjYWRlLFxuICAgICAgICBwcmVzZW50YXRpb246IHByZXNlbnRhdGlvbkZhY2FkZSxcbiAgICAgICAgc2VsZWN0aW9uOiBkb2NzU2VsZWN0aW9uRmFjYWRlLFxuICAgICAgICBzZXR0aW5nczogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8RG9jc1NldHRpbmdzRmFjYWRlPihcbiAgICAgICAgICAnc2V0dGluZ3MnLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIHNlYXJjaDogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8RG9jc1NlYXJjaEZhY2FkZT4oJ3NlYXJjaCcsIHt9KSxcbiAgICAgICAgb3V0bGluZTogZG9jc091dGxpbmVGYWNhZGUsXG4gICAgICAgIHNpZGViYXI6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTaWRlYmFyRmFjYWRlPihcbiAgICAgICAgICAnc2lkZWJhcicsXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgICAgdGFibGVzOiBkb2NzVGFibGVzRmFjYWRlLFxuICAgICAgICBiYXRjaENoYW5nZXM6IGJhdGNoQ2hhbmdlc0ZhY2FkZSxcbiAgICAgICAgcHJpbnQ6IHByaW50RmFjYWRlXG4gICAgICB9XG4gICAgY2FzZSBGaWxlVHlwZS5TcHJlYWRzaGVldDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhpc3Rvcnk6IGhpc3RvcnlGYWNhZGUsXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50c0ZhY2FkZSxcbiAgICAgICAgbG9ja3M6IGxvY2tzRmFjYWRlLFxuICAgICAgICBtZW50aW9uOiBtZW50aW9uRmFjYWRlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50RmFjYWRlLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uRmFjYWRlLFxuICAgICAgICBwcmVzZW50YXRpb246IHByZXNlbnRhdGlvbkZhY2FkZSxcbiAgICAgICAgd29ya2Jvb2s6IHNoZWV0V29ya2Jvb2tGYWNhZGUsXG4gICAgICAgIGFjdGl2ZVNoZWV0OiBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCB7IGFjdGl2ZTogdHJ1ZSB9KSxcbiAgICAgICAgY2hhcnRzOiBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxTaGVldENoYXJ0c0ZhY2FkZT4oJ2NoYXJ0cycsIHt9KSxcbiAgICAgICAgc2VsZWN0aW9uczogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8U2hlZXRTZWxlY3Rpb25zRmFjYWRlPihcbiAgICAgICAgICAnc2VsZWN0aW9ucycsXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgICAgYmF0Y2hDaGFuZ2VzOiBiYXRjaENoYW5nZXNGYWNhZGUsXG4gICAgICAgIHByaW50OiBwcmludEZhY2FkZSxcbiAgICAgICAgZXhwb3J0OiBleHBvcnRGYWNhZGUsXG4gICAgICAgIHNldEZvY3VzOiBzZXRGb2N1c0ZhY2FkZVxuICAgICAgfVxuICAgIGNhc2UgRmlsZVR5cGUuUHJlc2VudGF0aW9uOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaGlzdG9yeTogaGlzdG9yeUZhY2FkZSxcbiAgICAgICAgY29tbWVudHM6IGNvbW1lbnRzRmFjYWRlLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uRmFjYWRlLFxuICAgICAgICBwcmVzZW50YXRpb246IHByZXNlbnRhdGlvbkZhY2FkZSxcbiAgICAgICAgc2xpZGVzOiBwcmVzZW50YXRpb25TbGlkZXNGYWNhZGUsXG4gICAgICAgIHNlbGVjdGlvbjogcHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlLFxuICAgICAgICB0ZXh0OiBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxQcmVzZW50YXRpb25UZXh0RmFjYWRlPigndGV4dCcsIHt9KSxcbiAgICAgICAgem9vbTogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8UHJlc2VudGF0aW9uWm9vbUZhY2FkZT4oJ3pvb20nLCB7fSksXG4gICAgICAgIGV2ZW50U3Vic2NyaXB0aW9uOiBwcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZSxcbiAgICAgICAgYmF0Y2hDaGFuZ2VzOiBiYXRjaENoYW5nZXNGYWNhZGUsXG4gICAgICAgIHByaW50OiBwcmludEZhY2FkZSxcbiAgICAgICAgZXhwb3J0OiBleHBvcnRGYWNhZGVcbiAgICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHt9XG4gIH1cbn1cbiIsImltcG9ydCB0eXBlIHsgRG9jdW1lbnRFcnJvck1lc3NhZ2UsIEV4dGVybmFsQXBwUGFyYW1zIH0gZnJvbSAnLi90eXBlcy9Eb2N1bWVudCdcblxuZXhwb3J0IGludGVyZmFjZSBUaXRsZUZhY2FkZSB7XG4gIGFkZENoYW5nZWRMaXN0ZW5lcjogKGxpc3RlbmVyOiAodGl0bGU6IHN0cmluZykgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZFxuICBzZXRUaXRsZTogKHRpdGxlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50c0ZhY2FkZSB7XG4gIHNob3c6ICh0eXBlPzogJ2xpc3QnIHwgJ2NhcmQnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICh0eXBlPzogJ2xpc3QnIHwgJ2NhcmQnKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlzdG9yeUZhY2FkZSB7XG4gIHNob3c6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc2N1c3Npb25GYWNhZGUge1xuICBzaG93OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2xsYWJvcmF0b3JGYWNhZGUge1xuICBzaG93OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbEFwcEZhY2FkZSB7XG4gIGluc2VydDogKFxuICAgIHVybDogc3RyaW5nLFxuICAgIHBhcmFtcz86IEV4dGVybmFsQXBwUGFyYW1zXG4gICkgPT4gUHJvbWlzZTxudWxsIHwgRG9jdW1lbnRFcnJvck1lc3NhZ2U+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1JhbmdlQm91bmRpbmcge1xuICB0b3A6IG51bWJlclxuICByaWdodDogbnVtYmVyXG4gIGJvdHRvbTogbnVtYmVyXG4gIGxlZnQ6IG51bWJlclxuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1JhbmdlVmFsdWUge1xuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1JlcGxhY2VQYXJhbXMge1xuICB2YWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1JlcGxhY2VSZXN1bHQge1xuICBpZDogc3RyaW5nXG4gIG9sZFZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRG9jc1NlYXJjaERpcmVjdGlvbiA9ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCdcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VhcmNoUGFyYW1zIHtcbiAgY29udGVudDogc3RyaW5nXG4gIGhpZ2hsaWdodD86IGJvb2xlYW5cbiAgY2FzZVNlbnNpdGl2ZT86IGJvb2xlYW5cbiAgd2hvbGVXb3JkPzogYm9vbGVhblxuICB1c2VSZWdleD86IGJvb2xlYW5cbiAgc2VhcmNoRGlyZWN0aW9uPzogRG9jc1NlYXJjaERpcmVjdGlvblxuICByYW5nZT86IERvY3NSYW5nZVZhbHVlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NlYXJjaFJlc3VsdCB7XG4gIGtleXdvcmQ6IHN0cmluZ1xuICBpZDogc3RyaW5nXG4gIHJhbmdlOiBEb2NzUmFuZ2VWYWx1ZVxuICBpc1Byb3RlY3RlZD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jc0NvbnRpbnVlV3JpdGluZ1R5cGUgPSAndGV4dCcgfCAnaHRtbCcgfCAnbWFya2Rvd24nXG5leHBvcnQgdHlwZSBEb2NzQnVsbGV0TGlzdFN0eWxlID0gJ2Rpc2MnIHwgJ2NpcmNsZScgfCAnc3F1YXJlJ1xuZXhwb3J0IHR5cGUgRG9jc09yZGVyZWRMaXN0U3R5bGUgPSAnZGVjaW1hbCcgfCAnbG93ZXItYWxwaGEnIHwgJ2xvd2VyLXJvbWFuJ1xuZXhwb3J0IHR5cGUgRG9jc0xpc3RTdHlsZSA9XG4gIHwgeyB0eXBlOiAnbm9uZScgfVxuICB8IHsgdHlwZTogJ29yZGVyZWQnOyBzdHlsZT86IERvY3NPcmRlcmVkTGlzdFN0eWxlIH1cbiAgfCB7IHR5cGU6ICdidWxsZXQnOyBzdHlsZT86IERvY3NCdWxsZXRMaXN0U3R5bGUgfVxuICB8IHsgdHlwZTogJ3Rhc2snIH1cbmV4cG9ydCB0eXBlIERvY3NQYWdlV2lkdGggPSAnc3RhbmRhcmQnIHwgJ3dpZGUnIHwgJ2Z1bGwnXG5leHBvcnQgdHlwZSBEb2NzUGFyYWdyYXBoVHlwZSA9XG4gIHwgJ3BhcmFncmFwaCdcbiAgfCAndGl0bGUnXG4gIHwgJ3N1YnRpdGxlJ1xuICB8ICdoMSdcbiAgfCAnaDInXG4gIHwgJ2gzJ1xuICB8ICdoNCdcbiAgfCAnaDUnXG4gIHwgJ2g2J1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUZXh0U3R5bGUge1xuICBib2xkPzogYm9vbGVhblxuICBpdGFsaWM/OiBib29sZWFuXG4gIHVuZGVybGluZT86IGJvb2xlYW5cbiAgc3RyaWtldGhyb3VnaD86IGJvb2xlYW5cbiAgY29sb3I/OiBzdHJpbmdcbiAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmdcbiAgZm9udFNpemU/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUGFyYWdyYXBoU3R5bGUge1xuICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyB8ICdqdXN0aWZ5J1xuICB2ZXJ0aWNhbD86ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJ1xufVxuXG5leHBvcnQgdHlwZSBEb2NzVGFibGVDZWxsU3R5bGUgPSBEb2NzVGV4dFN0eWxlICYgRG9jc1BhcmFncmFwaFN0eWxlXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0RlZmF1bHRTdHlsZSB7XG4gIGNvbG9yOiBzdHJpbmdcbiAgZm9udFNpemU6IHN0cmluZ1xuICBmb250RmFtaWx5OiBzdHJpbmdcbiAgbGluZVNwYWNpbmc6IHN0cmluZ1xuICBmb250OiBzdHJpbmdcbiAgc2l6ZTogc3RyaW5nXG4gIGxpbmVzcGFjaW5nOiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRG9jc0tub3duQ29kZUJsb2NrTGFuZ3VhZ2UgPVxuICB8ICdwbGFpbnRleHQnXG4gIHwgJ2FyZHVpbm8nXG4gIHwgJ2Jhc2gnXG4gIHwgJ2Jhc2ljJ1xuICB8ICdjc2hhcnAnXG4gIHwgJ2NwcCdcbiAgfCAnY3NzJ1xuICB8ICdjbG9qdXJlJ1xuICB8ICdjb2ZmZWVzY3JpcHQnXG4gIHwgJ2RhcnQnXG4gIHwgJ2RpZmYnXG4gIHwgJ2RvY2tlcidcbiAgfCAnZWxpeGlyJ1xuICB8ICdlcmxhbmcnXG4gIHwgJ2ZzaGFycCdcbiAgfCAnZm9ydHJhbidcbiAgfCAnZ2xzbCdcbiAgfCAnZ2hlcmtpbidcbiAgfCAnZ28nXG4gIHwgJ2dyb292eSdcbiAgfCAnaHRtbCdcbiAgfCAnaGFza2VsbCdcbiAgfCAnanNvbidcbiAgfCAnamF2YSdcbiAgfCAnamF2YXNjcmlwdCdcbiAgfCAnbGVzcydcbiAgfCAnbGlzcCdcbiAgfCAnbHVhJ1xuICB8ICdtYWtlZmlsZSdcbiAgfCAnbWFya2Rvd24nXG4gIHwgJ21hdGxhYidcbiAgfCAnbml4J1xuICB8ICdvY2FtbCdcbiAgfCAnb2JqZWN0aXZlYydcbiAgfCAncGhwJ1xuICB8ICdwZXJsJ1xuICB8ICdwb3dlcnNoZWxsJ1xuICB8ICdwcm9sb2cnXG4gIHwgJ3Byb3RvYnVmJ1xuICB8ICdweXRob24nXG4gIHwgJ3InXG4gIHwgJ3J1YnknXG4gIHwgJ3J1c3QnXG4gIHwgJ3Njc3MnXG4gIHwgJ3NxbCdcbiAgfCAnc2NhbGEnXG4gIHwgJ3NjaGVtZSdcbiAgfCAnc2hlbGxzZXNzaW9uJ1xuICB8ICdzd2lmdCdcbiAgfCAndHlwZXNjcmlwdCdcbiAgfCAndmJuZXQnXG4gIHwgJ3ZhbGEnXG4gIHwgJ3Zlcmlsb2cnXG4gIHwgKHN0cmluZyAmIHt9KVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NDb2RlQmxvY2tBdHRycyB7XG4gIGxhbmd1YWdlPzogRG9jc0tub3duQ29kZUJsb2NrTGFuZ3VhZ2VcbiAgd29yZFdyYXA/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIERvY3NDb2RlQmxvY2tEaXJlY3Rpb24gPSAnbHRyJyB8ICdydGwnXG5leHBvcnQgdHlwZSBEb2NzQ29kZUJsb2NrQWxpZ25tZW50ID0gJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgfCAnanVzdGlmeSdcbmV4cG9ydCB0eXBlIERvY3NDb2RlQmxvY2tJbmRlbnQgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgfCA3IHwgOFxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NDb2RlQmxvY2tUZXh0Tm9kZSB7XG4gIGVsZW1lbnQ6ICd0ZXh0J1xuICB0ZXh0OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzQ29kZUJsb2NrUGFyYWdyYXBoQXR0cnMge1xuICBkaXJlY3Rpb24/OiBEb2NzQ29kZUJsb2NrRGlyZWN0aW9uXG4gIGxpbmVIZWlnaHQ/OiBzdHJpbmdcbiAgdGV4dEluZGVudD86IHN0cmluZ1xuICBhbGlnbm1lbnQ/OiBEb2NzQ29kZUJsb2NrQWxpZ25tZW50XG4gIGluZGVudD86IERvY3NDb2RlQmxvY2tJbmRlbnRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzQ29kZUJsb2NrUGFyYWdyYXBoTm9kZSB7XG4gIGVsZW1lbnQ6ICdwYXJhZ3JhcGgnXG4gIGF0dHJzOiBEb2NzQ29kZUJsb2NrUGFyYWdyYXBoQXR0cnMgfCBudWxsXG4gIGNvbnRlbnQ6IERvY3NDb2RlQmxvY2tUZXh0Tm9kZVtdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0NvZGVCbG9ja0luc2VydE9wdGlvbnMge1xuICBhdHRycz86IERvY3NDb2RlQmxvY2tBdHRyc1xuICBjb250ZW50PzogRG9jc0NvZGVCbG9ja1BhcmFncmFwaE5vZGVbXVxufVxuXG5leHBvcnQgdHlwZSBUT0NOb2RlVHlwZSA9XG4gIHwgJ2hlYWRpbmcnXG4gIHwgJ29yZGVyZWQtbGlzdCdcbiAgfCAnYnVsbGV0LWxpc3QnXG4gIHwgJ3Rhc2snXG4gIHwgc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RPQ0l0ZW0ge1xuICBpZDogc3RyaW5nXG4gIGxldmVsOiBzdHJpbmdcbiAgdGV4dDogc3RyaW5nXG4gIHBvczogbnVtYmVyXG4gIG5vZGVUeXBlOiBUT0NOb2RlVHlwZVxuICBsZWFkaW5nU3ltYm9sOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NpZGViYXJTdGF0ZSB7XG4gIHZpc2libGU6IGJvb2xlYW5cbiAgc2VsZWN0ZWRUYWI6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUYWJsZVNlbGVjdGlvbiB7XG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgZW51bSBFZGl0b3JTYXZlU3RhdHVzIHtcbiAgTm9DaGFuZ2UgPSAwLFxuICBTdWNjZXNzID0gMSxcbiAgRmFpbCA9IDJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JTYXZlUmVzdWx0IHtcbiAgc3RhdHVzOiBFZGl0b3JTYXZlU3RhdHVzXG59XG5cbmV4cG9ydCB0eXBlIENvbnRlbnQgPSBzdHJpbmcgfCBBcnJheUJ1ZmZlciB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPiB8IG9iamVjdFxuXG5leHBvcnQgaW50ZXJmYWNlIENsaXBib2FyZFBhc3RlUGFyYW1zIHtcbiAgaHRtbDogc3RyaW5nXG4gIHRleHQ6IHN0cmluZ1xuICBiYXNlNjRGaWxlPzogc3RyaW5nXG4gIHJlbW92ZVRyYWlsaW5nRW1wdHlSb3dzPzogYm9vbGVhblxuICByZW1vdmVUcmFpbGluZ0VtcHR5Q29sdW1ucz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgU2hlZXRBcHBlbmREYXRhQXhpcyA9ICdyb3cnIHwgJ2NvbHVtbidcblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFNlbGVjdGlvbiB7XG4gIGdldFJhbmdlOiAodmFsdWU/OiBTaGVldFJhbmdlVmFsdWUpID0+IFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsXG4gIHNldFJhbmdlOiAodmFsdWU6IFNoZWV0UmFuZ2VWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGVudW0gU2hlZXRSYW5nZVR5cGUge1xuICBDZWxscyA9ICdjZWxscycsXG4gIFJvd3MgPSAncm93cycsXG4gIENvbHVtbnMgPSAnY29sdW1ucycsXG4gIFNoZWV0ID0gJ3NoZWV0J1xufVxuXG5leHBvcnQgdHlwZSBTaGVldFJhbmdlVmFsdWUgPVxuICB8IHtcbiAgICAgIHR5cGU6IGAke1NoZWV0UmFuZ2VUeXBlLkNlbGxzfWBcbiAgICAgIHJvdzogbnVtYmVyXG4gICAgICByb3dDb3VudDogbnVtYmVyXG4gICAgICBjb2x1bW46IG51bWJlclxuICAgICAgY29sdW1uQ291bnQ6IG51bWJlclxuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5Sb3dzfWBcbiAgICAgIHJvdzogbnVtYmVyXG4gICAgICByb3dDb3VudDogbnVtYmVyXG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IGAke1NoZWV0UmFuZ2VUeXBlLkNvbHVtbnN9YFxuICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogYCR7U2hlZXRSYW5nZVR5cGUuU2hlZXR9YFxuICAgIH1cblxuZXhwb3J0IHR5cGUgU2hlZXRDZWxsUmFuZ2UgPSBPbWl0PFxuICBFeHRyYWN0PFNoZWV0UmFuZ2VWYWx1ZSwgeyB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5DZWxsc31gIH0+LFxuICAndHlwZSdcbj5cblxuZXhwb3J0IHR5cGUgU2hlZXRSYW5nZVRleHQgPSBzdHJpbmcgfCBzdHJpbmdbXVtdXG5cbmV4cG9ydCB0eXBlIFNoZWV0Q2VsbFZhbHVlID1cbiAgfCB7IHR5cGU6ICdwcmltaXRpdmUnOyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiAnZGF0ZSc7IHZhbHVlOiBudW1iZXIgfVxuICB8IHsgdHlwZTogJ2NhbGNFcnJvcic7IHZhbHVlOiB7IGVycm9yOiBzdHJpbmcgfSB9XG5cbmV4cG9ydCB0eXBlIFNoZWV0V3JpdGFibGVDZWxsVmFsdWUgPSBFeGNsdWRlPFxuICBTaGVldENlbGxWYWx1ZSxcbiAgeyB0eXBlOiAnY2FsY0Vycm9yJyB9XG4+XG5cbmV4cG9ydCB0eXBlIEZvcm1hdENhdGVnb3J5ID0gc3RyaW5nXG5leHBvcnQgdHlwZSBBbGlnblZhbHVlID0gJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdjZW50ZXInIHwgJ2p1c3RpZnknXG5leHBvcnQgdHlwZSBWZXJ0aWNhbFZhbHVlID0gJ3RvcCcgfCAnbWlkZGxlJyB8ICdib3R0b20nXG5leHBvcnQgdHlwZSBXcmFwVmFsdWUgPSAnb3ZlcmZsb3cnIHwgJ3dyYXAnIHwgJ2NsaXAnXG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9yZGVyU3R5bGUge1xuICBzdHlsZT86IHN0cmluZ1xuICBjb2xvcj86IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJpY2hUZXh0SXRlbSB7XG4gIHRleHQ6IHN0cmluZ1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRXcml0YWJsZUNlbGxNZXRhIHtcbiAgZm9ybWF0Q2F0ZWdvcnk/OiBGb3JtYXRDYXRlZ29yeVxuICBjb2xvcj86IHN0cmluZ1xuICBiYWNrZ3JvdW5kPzogc3RyaW5nXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmdcbiAgZm9udFNpemU/OiBudW1iZXJcbiAgYWxpZ24/OiBBbGlnblZhbHVlXG4gIGJvbGQ/OiBib29sZWFuXG4gIGl0YWxpYz86IGJvb2xlYW5cbiAgdW5kZXJsaW5lPzogYm9vbGVhblxuICBzdHJpa2U/OiBib29sZWFuXG4gIHZlcnRpY2FsPzogVmVydGljYWxWYWx1ZVxuICB3cmFwPzogV3JhcFZhbHVlXG4gIHRleHRSb3RhdGlvbj86IG51bWJlclxuICB0ZXh0SW5kZW50PzogbnVtYmVyXG4gIGJvcmRlclRvcD86IEJvcmRlclN0eWxlXG4gIGJvcmRlclJpZ2h0PzogQm9yZGVyU3R5bGVcbiAgYm9yZGVyQm90dG9tPzogQm9yZGVyU3R5bGVcbiAgYm9yZGVyTGVmdD86IEJvcmRlclN0eWxlXG4gIGRpYWdvbmFsRG93bj86IEJvcmRlclN0eWxlXG4gIGRpYWdvbmFsVXA/OiBCb3JkZXJTdHlsZVxuICBwcmVjaXNpb24/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldENlbGxEYXRhIGV4dGVuZHMgU2hlZXRXcml0YWJsZUNlbGxNZXRhIHtcbiAgdmFsdWU6IFNoZWV0Q2VsbFZhbHVlIHwgbnVsbFxuICBmb3JtdWxhOiBzdHJpbmcgfCBudWxsXG4gIHRleHQ6IHN0cmluZ1xuICBmb3JtYXQ/OiBzdHJpbmdcbiAgc3Bhbj86IFNoZWV0Q2VsbFJhbmdlXG4gIHJpY2hUZXh0PzogUmljaFRleHRJdGVtW11cbn1cblxuZXhwb3J0IHR5cGUgU2hlZXRXcml0YWJsZUNlbGxEYXRhID1cbiAgfCAoeyB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsIH0gJiBTaGVldFdyaXRhYmxlQ2VsbE1ldGEpXG4gIHwgKHtcbiAgICAgIGZvcm11bGE6IHN0cmluZyB8IG51bGxcbiAgICAgIHF1b3RlUHJlZml4PzogYm9vbGVhblxuICAgIH0gJiBTaGVldFdyaXRhYmxlQ2VsbE1ldGEpXG4gIHwgKHtcbiAgICAgIHRleHQ6IHN0cmluZyB8IG51bGxcbiAgICAgIHJpY2hUZXh0PzogUmljaFRleHRJdGVtW11cbiAgICB9ICYgU2hlZXRXcml0YWJsZUNlbGxNZXRhKVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaE1hdGNoIHtcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgdGV4dDogc3RyaW5nXG4gIGlzTGlua0NlbGw/OiBib29sZWFuXG4gIGZvcm11bGFJbmZvPzoge1xuICAgIGZvcm11bGFUZXh0OiBzdHJpbmdcbiAgICBoYXNGb3JtdWxhOiBib29sZWFuXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVybWlzc2lvbkRpY3QgPSBSZWNvcmQ8bnVtYmVyLCBQZXJtaXNzaW9uTGV2ZWw+XG5cbmV4cG9ydCBlbnVtIFBlcm1pc3Npb25MZXZlbCB7XG4gIEVkaXRhYmxlID0gMCxcbiAgUmVhZE9ubHkgPSAxLFxuICBQcml2YXRlID0gMlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFJhbmdlTG9ja1BhcmFtcyB7XG4gIHJhbmdlcz86IFNoZWV0Q2VsbFJhbmdlW11cbiAgc2hlZXRJZD86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB1c2VyUGVybWlzc2lvbnM6IFBlcm1pc3Npb25EaWN0XG4gIGRlcGFydG1lbnRQZXJtaXNzaW9ucz86IFBlcm1pc3Npb25EaWN0XG4gIHZpc2l0b3JQZXJtaXNzaW9uPzogUGVybWlzc2lvbkxldmVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU2hlZXRMb2NrUGFyYW1zIHtcbiAgc2hlZXRJZD86IHN0cmluZ1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICB1c2VyUGVybWlzc2lvbnM6IFBlcm1pc3Npb25EaWN0XG4gIGRlcGFydG1lbnRQZXJtaXNzaW9ucz86IFBlcm1pc3Npb25EaWN0XG4gIHZpc2l0b3JQZXJtaXNzaW9uPzogUGVybWlzc2lvbkxldmVsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlUmFuZ2VMb2Nrc1BhcmFtcyB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcmFuZ2VzPzogU2hlZXRDZWxsUmFuZ2VbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVNoZWV0TG9ja1BhcmFtcyB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gTWVudGlvblR5cGVzIHtcbiAgQ29tbWVudCA9ICdjb21tZW50JyxcbiAgTWVudGlvbiA9ICdtZW50aW9uX2F0JyxcbiAgRGF0ZU1lbnRpb24gPSAnZGF0ZV9tZW50aW9uJ1xufVxuXG5leHBvcnQgdHlwZSBSZXZpc2lvbkNyZWF0ZU9wdGlvbnMgPSBzdHJpbmcgfCB7IG5hbWU6IHN0cmluZyB9XG5cbmV4cG9ydCB0eXBlIFNoZWV0Q2hhcnRGaXJzdEFzID1cbiAgfCAnYXV0bydcbiAgfCAnc2VyaWVzTGFiZWwnXG4gIHwgJ2NhdGVnb3J5TGFiZWwnXG4gIHwgJ25vbmUnXG5leHBvcnQgdHlwZSBTaGVldENoYXJ0U2VyaWVzT3JpZW50YXRpb24gPSAnYXV0bycgfCAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnXG5leHBvcnQgdHlwZSBTaGVldENoYXJ0VHlwZSA9XG4gIHwgJ3BpZSdcbiAgfCAnZG91Z2hudXQnXG4gIHwgJ2NoaW5hTWFwJ1xuICB8ICdmdW5uZWwnXG4gIHwgJ3N1bmJ1cnN0J1xuICB8ICdnYXVnZSdcbiAgfCAnZ2FudHQnXG4gIHwgJ2Fic3RyYWN0J1xuICB8ICdjb2x1bW5DbHVzdGVyZWQnXG4gIHwgJ2NvbHVtblN0YWNrZWQnXG4gIHwgJ2NvbHVtblN0YWNrZWQxMDAnXG4gIHwgJ2JhckNsdXN0ZXJlZCdcbiAgfCAnYmFyU3RhY2tlZCdcbiAgfCAnYmFyU3RhY2tlZDEwMCdcbiAgfCAnbGluZSdcbiAgfCAnbGluZVN0YWNrZWQnXG4gIHwgJ2xpbmVTdGFja2VkMTAwJ1xuICB8ICdsaW5lTWFya2VycydcbiAgfCAnbGluZU1hcmtlcnNTdGFja2VkJ1xuICB8ICdsaW5lTWFya2Vyc1N0YWNrZWQxMDAnXG4gIHwgJ2FyZWEnXG4gIHwgJ2FyZWFTdGFja2VkJ1xuICB8ICdhcmVhU3RhY2tlZDEwMCdcbiAgfCAnc3RvY2tPSExDJ1xuICB8ICd4eVNjYXR0ZXInXG4gIHwgJ2J1YmJsZSdcbiAgfCAnaGlzdG9ncmFtJ1xuICB8ICd3YXRlcmZhbGwnXG4gIHwgJ2NvbWJpbmF0aW9uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZENoYXJ0RnJvbVNlbGVjdGlvbkJ1aWx0aW5QYXJhbXMge1xuICBjaGFydFR5cGU/OiBTaGVldENoYXJ0VHlwZVxuICBzZXJpZXM/OiB7XG4gICAgb3JpZW50YXRpb24/OiBTaGVldENoYXJ0U2VyaWVzT3JpZW50YXRpb25cbiAgICB0cmltUGFkZGluZ3M/OiBib29sZWFuXG4gICAgZmlyc3RBcz86IFNoZWV0Q2hhcnRGaXJzdEFzXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFydEZyb21TZWxlY3Rpb25FeHRlcm5hbFBhcmFtc1xuICBleHRlbmRzIEFkZENoYXJ0RnJvbVNlbGVjdGlvbkJ1aWx0aW5QYXJhbXMge1xuICByZWNvbW1lbmRhdGlvbk1vZGU/OiAnYnVpbHRpbicgfCAnZXh0ZXJuYWwnXG59XG5cbmV4cG9ydCB0eXBlIEFkZENoYXJ0RnJvbVNlbGVjdGlvblBhcmFtcyA9XG4gIHwgQWRkQ2hhcnRGcm9tU2VsZWN0aW9uQnVpbHRpblBhcmFtc1xuICB8IEFkZENoYXJ0RnJvbVNlbGVjdGlvbkV4dGVybmFsUGFyYW1zXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhcnRGcm9tU2VsZWN0aW9uUmVzdWx0IHtcbiAgY2hhcnRJZDogc3RyaW5nXG4gIGNoYXJ0VHlwZTogU2hlZXRDaGFydFR5cGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JUZXh0Rm9ybWF0PENvbG9yID0gc3RyaW5nPiB7XG4gIGJvbGQ6IGJvb2xlYW5cbiAgaXRhbGljOiBib29sZWFuXG4gIHVuZGVybGluZTogYm9vbGVhblxuICBzdHJpa2U6IGJvb2xlYW5cbiAgY29sb3I6IENvbG9yXG4gIGhpZ2hsaWdodDogQ29sb3JcbiAgc2l6ZTogbnVtYmVyIHwgc3RyaW5nXG4gIGZhbWlseTogc3RyaW5nXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkhvcml6b250YWxBbGlnbiA9XG4gIHwgJ2xlZnQnXG4gIHwgJ2NlbnRlcidcbiAgfCAncmlnaHQnXG4gIHwgJ2p1c3RpZnknXG4gIHwgJ2Rpc3QnXG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblZlcnRpY2FsQWxpZ24gPVxuICB8ICd0b3AnXG4gIHwgJ21pZCdcbiAgfCAnYm90dG9tJ1xuICB8ICd3b3JkQXJ0VmVydCdcbiAgfCAnZWFWZXJ0J1xuICB8ICdtb25nb2xpYW5WZXJ0J1xuICB8ICd2ZXJ0J1xuICB8ICd2ZXJ0MjcwJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvbkluZGVudCB7XG4gIGxlZnQ/OiBudW1iZXJcbiAgcmlnaHQ/OiBudW1iZXJcbiAgZmlyc3RMaW5lPzogbnVtYmVyXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkxpbmVTcGFjZVJ1bGUgPSAnYXRMZWFzdCcgfCAnYXV0bycgfCAnZXhhY3QnXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25CdWxsZXRTdWJUeXBlID0gc3RyaW5nXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25PcmRlcmVkU3ViVHlwZSA9XG4gIHwgJ2FyYWJpY1BlcmlvZCdcbiAgfCAnYXJhYmljUGFyZW5Cb3RoJ1xuICB8ICdlYTFDaHNQZXJpb2QnXG4gIHwgJ2NoaW5lc2VOdW1iZXJQYXJlbkJvdGgnXG4gIHwgJ2FscGhhTGNQYXJlblInXG4gIHwgJ3JvbWFuTGNQZXJpb2QnXG4gIHwgJ2FscGhhVWNQZXJpb2QnXG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkxpc3RUeXBlID1cbiAgfCB7IHR5cGU6ICdub25lJyB9XG4gIHwgeyB0eXBlOiAnYnVsbGV0Jzsgc3ViVHlwZT86IFByZXNlbnRhdGlvbkJ1bGxldFN1YlR5cGU7IGNoYXI/OiBzdHJpbmcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdvcmRlcmVkJ1xuICAgICAgc3ViVHlwZT86IFByZXNlbnRhdGlvbk9yZGVyZWRTdWJUeXBlXG4gICAgICBzdGFydEF0PzogbnVtYmVyXG4gICAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblBhcmFncmFwaFNwYWNpbmcge1xuICBsaW5lPzogbnVtYmVyXG4gIGxpbmVSdWxlPzogUHJlc2VudGF0aW9uTGluZVNwYWNlUnVsZVxuICBiZWZvcmU/OiBudW1iZXJcbiAgYWZ0ZXI/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25QYXJhZ3JhcGhTdHlsZSB7XG4gIGFsaWduPzogUHJlc2VudGF0aW9uSG9yaXpvbnRhbEFsaWduXG4gIHZlcnRpY2FsPzogUHJlc2VudGF0aW9uVmVydGljYWxBbGlnblxuICBkaXJlY3Rpb24/OiAnbHRyJyB8ICdydGwnXG4gIGluZGVudD86IFByZXNlbnRhdGlvbkluZGVudFxuICBzcGFjaW5nPzogUHJlc2VudGF0aW9uUGFyYWdyYXBoU3BhY2luZ1xuICBsaXN0VHlwZT86IFByZXNlbnRhdGlvbkxpc3RUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dFN0eWxlIHtcbiAgYm9sZD86IGJvb2xlYW5cbiAgaXRhbGljPzogYm9vbGVhblxuICB1bmRlcmxpbmU/OiBib29sZWFuXG4gIHN0cmlrZXRocm91Z2g/OiBib29sZWFuXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIGZvbnRGYW1pbHk/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25QYXJhZ3JhcGgge1xuICB0ZXh0OiBzdHJpbmdcbiAgdGV4dFN0eWxlPzogUHJlc2VudGF0aW9uVGV4dFN0eWxlXG4gIHBhcmFncmFwaFN0eWxlPzogUHJlc2VudGF0aW9uUGFyYWdyYXBoU3R5bGVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25PZmZzZXQge1xuICB4OiBudW1iZXJcbiAgeTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2l6ZSB7XG4gIHdpZHRoOiBudW1iZXJcbiAgaGVpZ2h0OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUZpbGwge1xuICB0eXBlPzogJ3NvbGlkJyB8ICdub25lJ1xuICBjb2xvcj86IHN0cmluZ1xuICB0cmFuc3BhcmVuY3k/OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUxheW91dCB7XG4gIHJvdGF0aW9uPzogbnVtYmVyXG4gIGZsaXBIb3Jpem9udGFsPzogYm9vbGVhblxuICBmbGlwVmVydGljYWw/OiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblNoYXBlRGFzaFR5cGUgPVxuICB8ICdkYXNoJ1xuICB8ICdkYXNoRG90J1xuICB8ICdkb3QnXG4gIHwgJ2xnRGFzaCdcbiAgfCAnbGdEYXNoRG90J1xuICB8ICdsZ0Rhc2hEb3REb3QnXG4gIHwgJ3NvbGlkJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNoYXBlTGluZSB7XG4gIHZpc2libGU/OiBib29sZWFuXG4gIGNvbG9yPzogc3RyaW5nXG4gIHRyYW5zcGFyZW5jeT86IG51bWJlclxuICB3aWR0aD86IG51bWJlclxuICBkYXNoVHlwZT86IFByZXNlbnRhdGlvblNoYXBlRGFzaFR5cGVcbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uU2hhcGVDb250ZW50ID0gc3RyaW5nIHwgUHJlc2VudGF0aW9uUGFyYWdyYXBoW11cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkxpbmVTaGFwZVR5cGUgPVxuICB8ICdsaW5lJ1xuICB8ICdsaW5lV2l0aEFycm93J1xuICB8ICdsaW5lV2l0aFR3b0Fycm93cydcbiAgfCAnYmVudENvbm5lY3RvcjUnXG4gIHwgJ2JlbnRDb25uZWN0b3I1V2l0aEFycm93J1xuICB8ICdiZW50Q29ubmVjdG9yNVdpdGhUd29BcnJvd3MnXG4gIHwgJ2N1cnZlZENvbm5lY3RvcjMnXG4gIHwgJ2N1cnZlZENvbm5lY3RvcjNXaXRoQXJyb3cnXG4gIHwgJ2N1cnZlZENvbm5lY3RvcjNXaXRoVHdvQXJyb3dzJ1xuICB8ICdzcGxpbmUnXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25TaGFwZVR5cGUgPSBzdHJpbmdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUJhc2VPcHRpb25zIHtcbiAgb2Zmc2V0OiBQcmVzZW50YXRpb25PZmZzZXRcbiAgc2l6ZTogUHJlc2VudGF0aW9uU2l6ZVxuICBmaWxsPzogUHJlc2VudGF0aW9uU2hhcGVGaWxsXG4gIGxpbmU/OiBQcmVzZW50YXRpb25TaGFwZUxpbmVcbiAgbGF5b3V0PzogUHJlc2VudGF0aW9uU2hhcGVMYXlvdXRcbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uSW5zZXJ0U2hhcGVPcHRpb25zID1cbiAgfCAoUHJlc2VudGF0aW9uU2hhcGVCYXNlT3B0aW9ucyAmIHtcbiAgICAgIHR5cGU6IFByZXNlbnRhdGlvbkxpbmVTaGFwZVR5cGVcbiAgICAgIGNvbnRlbnQ/OiBuZXZlclxuICAgIH0pXG4gIHwgKFByZXNlbnRhdGlvblNoYXBlQmFzZU9wdGlvbnMgJiB7XG4gICAgICB0eXBlOiBQcmVzZW50YXRpb25UZXh0U2hhcGVUeXBlXG4gICAgICBjb250ZW50PzogUHJlc2VudGF0aW9uU2hhcGVDb250ZW50XG4gICAgfSlcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUJhc2Uge1xuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICB0eXBlOiBQcmVzZW50YXRpb25TaGFwZVR5cGVcbiAgc2V0RmlsbDogKGZpbGw6IFByZXNlbnRhdGlvblNoYXBlRmlsbCkgPT4gdm9pZFxuICBzZXRMaW5lOiAobGluZTogUHJlc2VudGF0aW9uU2hhcGVMaW5lKSA9PiB2b2lkXG4gIHNldExheW91dDogKGxheW91dDogUHJlc2VudGF0aW9uU2hhcGVMYXlvdXQpID0+IHZvaWRcbiAgcmVtb3ZlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblRleHRTaGFwZVR5cGUgPSBFeGNsdWRlPFxuICBQcmVzZW50YXRpb25TaGFwZVR5cGUsXG4gIFByZXNlbnRhdGlvbkxpbmVTaGFwZVR5cGVcbj5cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UZXh0U2hhcGUgZXh0ZW5kcyBQcmVzZW50YXRpb25TaGFwZUJhc2Uge1xuICB0eXBlOiBQcmVzZW50YXRpb25UZXh0U2hhcGVUeXBlXG4gIHRleHRDb250ZW50Pzogc3RyaW5nXG4gIHNldENvbnRlbnQ6IChjb250ZW50OiBQcmVzZW50YXRpb25TaGFwZUNvbnRlbnQpID0+IHZvaWRcbiAgYXBwZW5kVGV4dDogKHRleHQ6IHN0cmluZykgPT4gdm9pZFxuICBhcHBlbmRQYXJhZ3JhcGhzOiAocGFyYWdyYXBoczogUHJlc2VudGF0aW9uUGFyYWdyYXBoW10pID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uU2hhcGUgPSBQcmVzZW50YXRpb25TaGFwZUJhc2UgfCBQcmVzZW50YXRpb25UZXh0U2hhcGVcblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uUGFyYWdyYXBoTGluZVNwYWNpbmcgPVxuICB8IDAuOVxuICB8IDEuMFxuICB8IDEuMTVcbiAgfCAxLjVcbiAgfCAyLjBcbiAgfCAyLjVcbiAgfCAzLjBcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZUNlbGwge1xuICBzZXRTdHlsZTogKHN0eWxlOiBQcmVzZW50YXRpb25UYWJsZUNlbGxTdHlsZSkgPT4gdm9pZFxuICBjbGVhclN0eWxlOiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblRhYmxlQ2VsbFN0eWxlID0gUHJlc2VudGF0aW9uVGV4dFN0eWxlICZcbiAgUHJlc2VudGF0aW9uUGFyYWdyYXBoU3R5bGVcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZVNlbGVjdGlvbiB7XG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRhYmxlUmFuZ2Uge1xuICBzZXRTdHlsZTogKHN0eWxlOiBQcmVzZW50YXRpb25UYWJsZUNlbGxTdHlsZSkgPT4gdm9pZFxuICBjbGVhclN0eWxlOiAoKSA9PiB2b2lkXG4gIHNldFNwYW46ICgpID0+IHZvaWRcbiAgcmVtb3ZlU3BhbjogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRhYmxlSXRlbSB7XG4gIGlkOiBzdHJpbmdcbiAgcm93Q291bnQ6IG51bWJlclxuICBjb2x1bW5Db3VudDogbnVtYmVyXG4gIHJlbW92ZTogKCkgPT4gdm9pZFxuICBpbnNlcnRSb3dzOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIHBsYWNlbWVudD86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IHZvaWRcbiAgaW5zZXJ0Q29sdW1uczogKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBwbGFjZW1lbnQ/OiAnYmVmb3JlJyB8ICdhZnRlcidcbiAgKSA9PiB2b2lkXG4gIGRlbGV0ZVJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiB2b2lkXG4gIGRlbGV0ZUNvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiB2b2lkXG4gIHNldFJvd0hlaWdodDogKGluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB2b2lkXG4gIHNldENvbHVtbldpZHRoOiAoaW5kZXg6IG51bWJlciwgd2lkdGg6IG51bWJlcikgPT4gdm9pZFxuICBnZXRDZWxsOiAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiBQcmVzZW50YXRpb25UYWJsZUNlbGwgfCBudWxsXG4gIGdldFJhbmdlOiAocmFuZ2U6IFByZXNlbnRhdGlvblRhYmxlU2VsZWN0aW9uKSA9PiBQcmVzZW50YXRpb25UYWJsZVJhbmdlIHwgbnVsbFxuICBzZXREaXJlY3Rpb246IChkaXJlY3Rpb246ICdsdHInIHwgJ3J0bCcpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZU9wdGlvbnMge1xuICBvZmZzZXQ6IFByZXNlbnRhdGlvbk9mZnNldFxuICByb3dDb3VudDogbnVtYmVyXG4gIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgcm93SGVpZ2h0czogbnVtYmVyW11cbiAgY29sdW1uV2lkdGhzOiBudW1iZXJbXVxuICBjb250ZW50Pzogc3RyaW5nIHwgUHJlc2VudGF0aW9uUGFyYWdyYXBoW11cbn1cblxuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uVGV4dEJveERpcmVjdGlvbiA9ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UZXh0Qm94T3B0aW9uc1xuICBleHRlbmRzIFByZXNlbnRhdGlvblNoYXBlQmFzZU9wdGlvbnMge1xuICBjb250ZW50PzogUHJlc2VudGF0aW9uU2hhcGVDb250ZW50XG4gIGRpcmVjdGlvbj86IFByZXNlbnRhdGlvblRleHRCb3hEaXJlY3Rpb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSB7XG4gIHN0YXJ0OiBzdHJpbmdcbiAgZW5kOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2Nrc0ZhY2FkZSB7XG4gIHNob3c6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSYW5nZUxvY2s6IChvcHRpb25zOiBBZGRSYW5nZUxvY2tQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkU2hlZXRMb2NrOiAob3B0aW9uczogQWRkU2hlZXRMb2NrUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbW92ZVJhbmdlTG9ja3NJblJhbmdlczogKG9wdGlvbnM6IFJlbW92ZVJhbmdlTG9ja3NQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlU2hlZXRMb2NrOiAob3B0aW9uczogUmVtb3ZlU2hlZXRMb2NrUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVudGlvbkZhY2FkZSB7XG4gIGxvY2F0ZUNlbGxCeUd1aWQ6IChcbiAgICBndWlkOiBzdHJpbmcsXG4gICAgbm90aWZpY2F0aW9uVHlwZT86IE1lbnRpb25UeXBlc1xuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50RmFjYWRlIHtcbiAgc2V0Q29udGVudDogKGNvbnRlbnQ6IENvbnRlbnQpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uRmFjYWRlIHtcbiAgc2hvdz86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZT86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY3JlYXRlUmV2aXNpb246IChcbiAgICBvcHRpb25zPzogUmV2aXNpb25DcmVhdGVPcHRpb25zXG4gICkgPT4gUHJvbWlzZTx1bmRlZmluZWQgfCBudWxsIHwgRG9jdW1lbnRFcnJvck1lc3NhZ2U+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uRmFjYWRlIHtcbiAgc3RhcnQ6IChpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBxdWl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHN0YXJ0RnJvbUN1cnJlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc3RhcnRSZW1vdGVMaXZlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHN0YXJ0U3BlYWtlclZpZXc6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkQ2hhbmdlTGlzdGVuZXI6IChsaXN0ZW5lcjogKHBheWxvYWQ6IHVua25vd24pID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmFuZ2VGYWNhZGUge1xuICBzdGFydDogbnVtYmVyXG4gIGVuZDogbnVtYmVyXG4gIGlzQ2FyZXQ6IGJvb2xlYW5cbiAgZ2V0VGV4dDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG4gIGdldEh0bWw6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRUZXh0OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEh0bWw6IChodG1sOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Qm91bmRpbmc6ICgpID0+IFByb21pc2U8RG9jc1JhbmdlQm91bmRpbmcgfCBudWxsPlxuICBzZXRTdHlsZTogKHN0eWxlOiBEb2NzVGV4dFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNvbnRpbnVlV3JpdGluZzogKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICB0eXBlOiBEb2NzQ29udGludWVXcml0aW5nVHlwZSxcbiAgICBhYm9ydD86ICgpID0+IHZvaWRcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHNldExpc3RTdHlsZTogKHN0eWxlOiBEb2NzTGlzdFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydExpbms6IChcbiAgICBocmVmOiBzdHJpbmcsXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHZpZXdUeXBlOiAnbGluaycgfCAnY2FyZCcgfCAncHJldmlldydcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEltYWdlOiAoZGF0YTogRmlsZSB8IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50OiAoXG4gICAgZGF0YTogRmlsZSxcbiAgICB2aWV3VHlwZTogJ2xpbmsnIHwgJ2NhcmQnIHwgJ3ByZXZpZXcnXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQYXJhZ3JhcGhUeXBlOiAodHlwZTogRG9jc1BhcmFncmFwaFR5cGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckNvbnRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJBbGw6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0SG9yaXpvbnRhbFJ1bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0UXVvdGU6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VsZWN0aW9uRmFjYWRlIHtcbiAgZ2V0UmFuZ2U6ICh2YWx1ZT86IERvY3NSYW5nZVZhbHVlKSA9PiBQcm9taXNlPERvY3NSYW5nZUZhY2FkZSB8IG51bGw+XG4gIHNldFJhbmdlOiAodmFsdWU6IERvY3NSYW5nZVZhbHVlIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZTogRG9jc1JhbmdlVmFsdWUgfCBudWxsKSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICBnZXRXaG9sZVJhbmdlOiAoKSA9PiBQcm9taXNlPERvY3NSYW5nZUZhY2FkZSB8IG51bGw+XG4gIGluc2VydFRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8RG9jc1JhbmdlVmFsdWU+XG4gIGluc2VydEh0bWw6IChodG1sOiBzdHJpbmcpID0+IFByb21pc2U8RG9jc1JhbmdlVmFsdWU+XG4gIGluc2VydFRhYmxlOiAoXG4gICAgcm93Q291bnQ6IG51bWJlcixcbiAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTx7IHRhYmxlSWQ6IHN0cmluZyB9PlxuICBpbnNlcnRDb2RlQmxvY2s6IChvcHRpb25zPzogRG9jc0NvZGVCbG9ja0luc2VydE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VhcmNoRmFjYWRlIHtcbiAgZmluZE9uZTogKHBhcmFtczogRG9jc1NlYXJjaFBhcmFtcykgPT4gUHJvbWlzZTxEb2NzU2VhcmNoUmVzdWx0IHwgbnVsbD5cbiAgZmluZEFsbDogKHBhcmFtczogRG9jc1NlYXJjaFBhcmFtcykgPT4gUHJvbWlzZTxEb2NzU2VhcmNoUmVzdWx0W10gfCBudWxsPlxuICByZXBsYWNlT25lOiAoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwYXJhbXM6IERvY3NSZXBsYWNlUGFyYW1zXG4gICkgPT4gUHJvbWlzZTxEb2NzUmVwbGFjZVJlc3VsdCB8IG51bGw+XG4gIHJlcGxhY2VBbGw6IChwYXJhbXM6IERvY3NSZXBsYWNlUGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc091dGxpbmVGYWNhZGUge1xuICBzaG93OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0T3BlbjogKCkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBzZXRPcGVuOiAoaXNPcGVuOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEFsbDogKCkgPT4gUHJvbWlzZTxEb2NzVE9DSXRlbVtdPlxuICBnZXRPbmU6IChpZDogc3RyaW5nKSA9PiBQcm9taXNlPERvY3NUT0NJdGVtIHwgbnVsbD5cbiAgZGVsZXRlQWxsOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIGRlbGV0ZU9uZTogKGlkOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgYWRkOiAoaXRlbTogT21pdDxEb2NzVE9DSXRlbSwgJ2lkJz4pID0+IFByb21pc2U8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2lkZWJhckZhY2FkZSB7XG4gIHNob3c6ICh0YWI/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgY2xvc2U6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0U3RhdGU6ICgpID0+IFByb21pc2U8RG9jc1NpZGViYXJTdGF0ZT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVGFibGVDZWxsRmFjYWRlIHtcbiAgdGFibGVJZDogc3RyaW5nXG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHNldEZvcm11bGE6IChcbiAgICBmb3JtdWxhOiAnc3VtJyB8ICdhdmVyYWdlJyxcbiAgICByYW5nZXM6IERvY3NUYWJsZVNlbGVjdGlvbltdXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVGb3JtdWxhOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFN0eWxlOiAoc3R5bGU6IERvY3NUYWJsZUNlbGxTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhclN0eWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlUmFuZ2VGYWNhZGUge1xuICB0YWJsZUlkOiBzdHJpbmdcbiAgc2VsZWN0aW9uOiBEb2NzVGFibGVTZWxlY3Rpb25cbiAgc2V0U3R5bGU6IChzdHlsZTogRG9jc1RhYmxlQ2VsbFN0eWxlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0U3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlRmFjYWRlIHtcbiAgdGFibGVJZDogc3RyaW5nXG4gIGluc2VydFJvd3M6IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGNvdW50OiBudW1iZXIsXG4gICAgcGxhY2VtZW50PzogJ2JlZm9yZScgfCAnYWZ0ZXInXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRDb2x1bW5zOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIHBsYWNlbWVudD86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlUm93czogKGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgZGVsZXRlQ29sdW1uczogKGluZGV4OiBudW1iZXIsIGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Um93SGVpZ2h0OiAoaW5kZXg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q29sdW1uV2lkdGg6IChpbmRleDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZ1bGxzY3JlZW46IChzdGF0dXM6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Q2VsbDogKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4gUHJvbWlzZTxEb2NzVGFibGVDZWxsRmFjYWRlIHwgbnVsbD5cbiAgZ2V0UmFuZ2U6IChcbiAgICBzZWxlY3Rpb246IERvY3NUYWJsZVNlbGVjdGlvblxuICApID0+IFByb21pc2U8RG9jc1RhYmxlUmFuZ2VGYWNhZGUgfCBudWxsPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUYWJsZXNGYWNhZGUge1xuICBnZXRBbGw6ICgpID0+IFByb21pc2U8RG9jc1RhYmxlRmFjYWRlW10+XG4gIGdldE9uZTogKHRhYmxlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxEb2NzVGFibGVGYWNhZGUgfCBudWxsPlxuICBkZWxldGVPbmU6ICh0YWJsZUlkOiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2V0dGluZ3NGYWNhZGUge1xuICBnZXRQYWdlV2lkdGg6ICgpID0+IFByb21pc2U8RG9jc1BhZ2VXaWR0aD5cbiAgc2V0UGFnZVdpZHRoOiAod2lkdGg6IERvY3NQYWdlV2lkdGgpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0RGVmYXVsdFN0eWxlOiAoKSA9PiBQcm9taXNlPERvY3NEZWZhdWx0U3R5bGU+XG4gIHNldERlZmF1bHRTdHlsZTogKHN0eWxlOiBQYXJ0aWFsPERvY3NEZWZhdWx0U3R5bGU+KSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRSYW5nZUZhY2FkZSB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgcm93Q291bnQ6IG51bWJlclxuICBjb2x1bW5Db3VudDogbnVtYmVyXG4gIGdldFRleHQ6IChmb3JtYXQ/OiAncGxhaW4nIHwgJ21hdHJpeCcpID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW11bXT5cbiAgc2V0VGV4dDogKHRleHQ6IFNoZWV0UmFuZ2VUZXh0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEh0bWw6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRIdG1sOiAoaHRtbDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFZhbHVlOiAoKSA9PiBQcm9taXNlPChTaGVldENlbGxWYWx1ZSB8IG51bGwpW11bXT5cbiAgc2V0VmFsdWU6ICh2YWx1ZXM6IChTaGVldFdyaXRhYmxlQ2VsbFZhbHVlIHwgbnVsbClbXVtdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldERhdGE6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsRGF0YVtdW10+XG4gIGdldEZvcm11bGE6ICgpID0+IFByb21pc2U8KHN0cmluZyB8IG51bGwpW11bXT5cbiAgc2V0Rm9ybXVsYTogKGZvcm11bGE6IChzdHJpbmcgfCBudWxsKVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0RGF0YTogKGRhdGE6IFNoZWV0V3JpdGFibGVDZWxsRGF0YVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0U3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFNwYW5zOiAoKSA9PiBQcm9taXNlPFNoZWV0Q2VsbFJhbmdlW10gfCBudWxsPlxuICBjbGVhckNvbnRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckFsbDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q2VsbEZhY2FkZSB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgZ2V0Q2VsbFRleHQ6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRDZWxsVGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRDZWxsVmFsdWU6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsVmFsdWUgfCBudWxsPlxuICBnZXRDZWxsRGF0YTogKCkgPT4gUHJvbWlzZTxTaGVldENlbGxEYXRhPlxuICBnZXRDZWxsRm9ybXVsYTogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPlxuICBzZXRDZWxsRm9ybXVsYTogKGZvcm11bGE6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDZWxsVmFsdWU6ICh2YWx1ZTogU2hlZXRXcml0YWJsZUNlbGxWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2VsbERhdGE6IChkYXRhOiBTaGVldFdyaXRhYmxlQ2VsbERhdGEpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2hlY2tib3g6IChjaGVja2VkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFNjb3JlOiAoc2NvcmU6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQcm9ncmVzczogKHByb2dyZXNzOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0SW1hZ2U6IChkYXRhOiBGaWxlIHwgc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydE1lbnRpb246ICh1c2VySWQ6IG51bWJlciwgdXNlck5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50TGluazogKGRhdGE6IEZpbGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJBbGw6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFdvcmtzaGVldEZhY2FkZSB7XG4gIGlkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2V0U2VsZWN0aW9uczogKCkgPT4gUHJvbWlzZTxTaGVldFNlbGVjdGlvbltdIHwgbnVsbD5cbiAgZ2V0UmFuZ2U6ICh2YWx1ZTogU2hlZXRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZToge1xuICAgICAgc2hlZXQ6IHN0cmluZ1xuICAgICAgcmFuZ2VzOiBTaGVldFJhbmdlVmFsdWVbXSB8IG51bGxcbiAgICB9KSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICBnZXRCb3VuZGluZzogKHJhbmdlOiBTaGVldFJhbmdlVmFsdWUpID0+IFByb21pc2U8e1xuICAgIGxlZnQ6IG51bWJlclxuICAgIHRvcDogbnVtYmVyXG4gICAgd2lkdGg6IG51bWJlclxuICAgIGhlaWdodDogbnVtYmVyXG4gIH0gfCBudWxsPlxuICBsb2NhdGVDZWxsOiAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldENlbGw6IChyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpID0+IFByb21pc2U8U2hlZXRDZWxsRmFjYWRlIHwgbnVsbD5cbiAgZ2V0QWN0aXZlQ2VsbDogKCkgPT4gUHJvbWlzZTxTaGVldENlbGxGYWNhZGUgfCBudWxsPlxuICBzZXRBY3RpdmVDZWxsOiAob3B0aW9uczogeyByb3c6IG51bWJlcjsgY29sdW1uOiBudW1iZXIgfSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZWFyY2g6IChcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgcmFuZ2U/OiBTaGVldFJhbmdlVmFsdWUgfCBTaGVldFJhbmdlVmFsdWVbXVxuICApID0+IFByb21pc2U8dm9pZD5cbiAgY2FuY2VsU2VhcmNoOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHBhc3RlOiAocGFyYW1zOiBDbGlwYm9hcmRQYXN0ZVBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRWaWV3cG9ydFNpemU6ICgpID0+IFByb21pc2U8eyB3aWR0aDogbnVtYmVyOyBoZWlnaHQ6IG51bWJlciB9PlxuICBlbmRFZGl0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZENvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUNvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFwcGVuZERhdGE6IChcbiAgICBkYXRhOiBTaGVldFdyaXRhYmxlQ2VsbERhdGFbXVtdLFxuICAgIGF4aXM/OiBTaGVldEFwcGVuZERhdGFBeGlzXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRSb3dzSGVpZ2h0OiAoZGF0YTogQXJyYXk8eyByb3c6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT4pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q29sdW1uc1dpZHRoOiAoXG4gICAgZGF0YTogQXJyYXk8eyBjb2x1bW46IG51bWJlcjsgd2lkdGg6IG51bWJlciB9PlxuICApID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Um93c1Zpc2libGU6IChyb3dzOiBudW1iZXJbXSwgdmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDb2x1bW5zVmlzaWJsZTogKGNvbHVtbnM6IG51bWJlcltdLCB2aXNpYmxlOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZyb3plblJvd0NvdW50OiAoY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRGcm96ZW5Db2x1bW5Db3VudDogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0VGFiQ29sb3I6IChjb2xvcjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbmFtZTogKG5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRWaXNpYmxlOiAodmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0V29ya2Jvb2tGYWNhZGUge1xuICBnZXRXb3Jrc2hlZXRzOiAoKSA9PiBQcm9taXNlPFNoZWV0V29ya3NoZWV0RmFjYWRlW10+XG4gIGdldFdvcmtzaGVldEJ5SWQ6IChzaGVldElkOiBzdHJpbmcpID0+IFByb21pc2U8U2hlZXRXb3Jrc2hlZXRGYWNhZGUgfCBudWxsPlxuICBnZXRBY3RpdmVXb3Jrc2hlZXQ6ICgpID0+IFByb21pc2U8U2hlZXRXb3Jrc2hlZXRGYWNhZGU+XG4gIHNldEFjdGl2ZVdvcmtzaGVldDogKHNoZWV0SWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzYXZlOiAoKSA9PiBQcm9taXNlPEVkaXRvclNhdmVSZXN1bHQ+XG4gIGFkZFdvcmtzaGVldDogKG5hbWU/OiBzdHJpbmcsIGluZGV4PzogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVdvcmtzaGVldDogKHNoZWV0SWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBtb3ZlV29ya3NoZWV0OiAoc2hlZXRJZDogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRDaGFydHNGYWNhZGUge1xuICBhZGRDaGFydEZyb21TZWxlY3Rpb246IChcbiAgICBwYXJhbXM/OiBBZGRDaGFydEZyb21TZWxlY3Rpb25QYXJhbXNcbiAgKSA9PiBQcm9taXNlPEFkZENoYXJ0RnJvbVNlbGVjdGlvblJlc3VsdCB8IHVuZGVmaW5lZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFNlbGVjdGlvbnNGYWNhZGUge1xuICBnZXRBbGw6ICgpID0+IFByb21pc2U8U2hlZXRSYW5nZVZhbHVlW10+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUge1xuICBpZDogc3RyaW5nXG4gIGdldEluZGV4OiAoKSA9PiBQcm9taXNlPG51bWJlcj5cbiAgZ2V0U2hhcGVzOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlW10+XG4gIGdldFRhYmxlczogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25UYWJsZUl0ZW1bXT5cbiAgaW5zZXJ0U2hhcGU6IHtcbiAgICAoXG4gICAgICBvcHRpb25zOiBFeHRyYWN0PFxuICAgICAgICBQcmVzZW50YXRpb25JbnNlcnRTaGFwZU9wdGlvbnMsXG4gICAgICAgIHsgdHlwZTogUHJlc2VudGF0aW9uTGluZVNoYXBlVHlwZSB9XG4gICAgICA+XG4gICAgKTogUHJvbWlzZTxQcmVzZW50YXRpb25TaGFwZUJhc2U+XG4gICAgKFxuICAgICAgb3B0aW9uczogRXh0cmFjdDxcbiAgICAgICAgUHJlc2VudGF0aW9uSW5zZXJ0U2hhcGVPcHRpb25zLFxuICAgICAgICB7IHR5cGU6IFByZXNlbnRhdGlvblRleHRTaGFwZVR5cGUgfVxuICAgICAgPlxuICAgICk6IFByb21pc2U8UHJlc2VudGF0aW9uVGV4dFNoYXBlPlxuICB9XG4gIGluc2VydFRleHRCb3g6IChcbiAgICBvcHRpb25zOiBQcmVzZW50YXRpb25UZXh0Qm94T3B0aW9uc1xuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGV4dFNoYXBlPlxuICBpbnNlcnRUYWJsZTogKFxuICAgIG9wdGlvbnM6IFByZXNlbnRhdGlvblRhYmxlT3B0aW9uc1xuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGFibGVJdGVtPlxuICBpbnNlcnRJbWFnZTogKFxuICAgIGltYWdlOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldFxuICApID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0QXVkaW86IChcbiAgICBkYXRhOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldCxcbiAgICBuYW1lPzogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRWaWRlbzogKFxuICAgIGRhdGE6IEZpbGUsXG4gICAgc2l6ZT86IFByZXNlbnRhdGlvblNpemUsXG4gICAgb2Zmc2V0PzogUHJlc2VudGF0aW9uT2Zmc2V0LFxuICAgIG5hbWU/OiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEF0dGFjaG1lbnQ6IChcbiAgICBmaWxlOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldCxcbiAgICBuYW1lPzogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSB7XG4gIGdldEN1cnJlbnRTbGlkZTogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT5cbiAgc2V0Q3VycmVudFNsaWRlSW5kZXg6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0U2xpZGVJbmRleDogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxudW1iZXI+XG4gIGdldFNsaWRlc0NvdW50OiAoKSA9PiBQcm9taXNlPG51bWJlcj5cbiAgZ2V0U2xpZGVzOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlW10+XG4gIGdldFNsaWRlQnlJZDogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZSB8IG51bGw+XG4gIGdldFNlbGVjdGVkU2xpZGVzOiAoaWRzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGVbXT5cbiAgc2V0U2VsZWN0ZWRTbGlkZXM6IChpZHM6IHN0cmluZ1tdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFNsaWRlOiAoKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlPlxuICBkdXBsaWNhdGVTbGlkZTogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT5cbiAgZGVsZXRlU2xpZGU6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZVNsaWRlOiAoc2xpZGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIHtcbiAgc3RhcnQ6IHN0cmluZ1xuICBlbmQ6IHN0cmluZ1xuICBnZXRUZXh0OiAoKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgc2V0VGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRIdG1sOiAoKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgc2V0SHRtbDogKGh0bWw6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRCb3VuZGluZzogKCkgPT4gUHJvbWlzZTx7XG4gICAgbGVmdDogbnVtYmVyXG4gICAgdG9wOiBudW1iZXJcbiAgICB3aWR0aDogbnVtYmVyXG4gICAgaGVpZ2h0OiBudW1iZXJcbiAgfSB8IG51bGw+XG4gIHNldFN0eWxlOiAoc3R5bGU6IFByZXNlbnRhdGlvblRleHRTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRWZXJ0aWNhbEFsaWduOiAodmVydGljYWw6IFByZXNlbnRhdGlvblZlcnRpY2FsQWxpZ24pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0SG9yaXpvbnRhbEFsaWduOiAoYWxpZ246IFByZXNlbnRhdGlvbkhvcml6b250YWxBbGlnbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRMaXN0U3R5bGU6IChzdHlsZTogUHJlc2VudGF0aW9uTGlzdFR5cGUpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0TGluZVNwYWNpbmc6IChzcGFjaW5nOiBQcmVzZW50YXRpb25QYXJhZ3JhcGhMaW5lU3BhY2luZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbmNyZWFzZUluZGVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWNyZWFzZUluZGVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRUZXh0RGlyZWN0aW9uOiAoZGlyZWN0aW9uOiAnbHRyJyB8ICdydGwnKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyQWxsOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydExpbms6ICh1cmw6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlIHtcbiAgZ2V0VGV4dFJhbmdlOiAoXG4gICAgdmFsdWU/OiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZVxuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIHwgbnVsbD5cbiAgc2V0VGV4dFJhbmdlOiAodmFsdWU6IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRTZWxlY3RlZFNoYXBlczogKGlkcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNoYXBlW10gfCBudWxsPlxuICBzZXRTZWxlY3RlZFNoYXBlczogKGlkczogc3RyaW5nW10gfCBudWxsKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJhbmdlTGlzdGVuZXI6IChcbiAgICBsaXN0ZW5lcjogKHZhbHVlOiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSB8IG51bGwpID0+IHZvaWRcbiAgKSA9PiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dEZhY2FkZSB7XG4gIGdldDogKFxuICAgIHJhbmdlPzogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWVcbiAgKSA9PiBQcm9taXNlPFBhcnRpYWw8RWRpdG9yVGV4dEZvcm1hdD4+XG4gIGFwcGx5OiAoXG4gICAgZm9ybWF0OiBQYXJ0aWFsPEVkaXRvclRleHRGb3JtYXQ+LFxuICAgIHJhbmdlPzogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWVcbiAgKSA9PiBQcm9taXNlPFBhcnRpYWw8RWRpdG9yVGV4dEZvcm1hdD4+XG4gIGNsZWFyOiAocmFuZ2U6IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uWm9vbUZhY2FkZSB7XG4gIGdldFBlcmNlbnRhZ2U6ICgpID0+IFByb21pc2U8bnVtYmVyPlxuICBzZXRQZXJjZW50YWdlOiAocGVyY2VudGFnZTogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZpdE1vZGU6IChtb2RlOiAnbm9uZScgfCAnd2luZG93JykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRGaXRNb2RlOiAoKSA9PiBQcm9taXNlPCdub25lJyB8ICd3aW5kb3cnPlxuICB6b29tSW46ICgpID0+IFByb21pc2U8dm9pZD5cbiAgem9vbU91dDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlIHtcbiAgYWRkRXJyb3JMaXN0ZW5lcjogKFxuICAgIGxpc3RlbmVyOiAoZXJyb3I6IHsgY29kZTogbnVtYmVyIHwgc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH0pID0+IHZvaWRcbiAgKSA9PiAoKSA9PiB2b2lkXG4gIGFkZExvYWRlZExpc3RlbmVyOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPZmZpY2VTREtSb290RmFjYWRlU3RhdGUge1xuICB0aXRsZT86IFRpdGxlRmFjYWRlXG4gIGhpc3Rvcnk/OiBIaXN0b3J5RmFjYWRlXG4gIGNvbW1lbnRzPzogQ29tbWVudHNGYWNhZGVcbiAgZGlzY3Vzc2lvbj86IERpc2N1c3Npb25GYWNhZGVcbiAgY29sbGFib3JhdG9yPzogQ29sbGFib3JhdG9yRmFjYWRlXG4gIGV4dGVybmFsQXBwPzogRXh0ZXJuYWxBcHBGYWNhZGVcbiAgbG9ja3M/OiBMb2Nrc0ZhY2FkZVxuICBtZW50aW9uPzogTWVudGlvbkZhY2FkZVxuICBjb250ZW50PzogQ29udGVudEZhY2FkZVxuICB2ZXJzaW9uPzogVmVyc2lvbkZhY2FkZVxuICBwcmVzZW50YXRpb24/OiBQcmVzZW50YXRpb25GYWNhZGVcbiAgc2VsZWN0aW9uPzogRG9jc1NlbGVjdGlvbkZhY2FkZSB8IFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZVxuICBzZWFyY2g/OiBEb2NzU2VhcmNoRmFjYWRlXG4gIG91dGxpbmU/OiBEb2NzT3V0bGluZUZhY2FkZVxuICBzaWRlYmFyPzogRG9jc1NpZGViYXJGYWNhZGVcbiAgdGFibGVzPzogRG9jc1RhYmxlc0ZhY2FkZVxuICBzZXR0aW5ncz86IERvY3NTZXR0aW5nc0ZhY2FkZVxuICB3b3JrYm9vaz86IFNoZWV0V29ya2Jvb2tGYWNhZGVcbiAgYWN0aXZlU2hlZXQ/OiBTaGVldFdvcmtzaGVldEZhY2FkZVxuICBjaGFydHM/OiBTaGVldENoYXJ0c0ZhY2FkZVxuICBzZWxlY3Rpb25zPzogU2hlZXRTZWxlY3Rpb25zRmFjYWRlXG4gIHNsaWRlcz86IFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZVxuICB0ZXh0PzogUHJlc2VudGF0aW9uVGV4dEZhY2FkZVxuICB6b29tPzogUHJlc2VudGF0aW9uWm9vbUZhY2FkZVxuICBldmVudFN1YnNjcmlwdGlvbj86IFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlXG4gIGJhdGNoQ2hhbmdlcz86IDxUPihjYWxsYmFjazogKCkgPT4gVCB8IFByb21pc2U8VD4pID0+IFByb21pc2U8QXdhaXRlZDxUPj5cbiAgZXhwb3J0PzogKHR5cGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBwcmludD86ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Rm9jdXM/OiAoaXNGb2N1czogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxufVxuIiwiaW1wb3J0IHsgSW52b2tlTWV0aG9kIH0gZnJvbSAnd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQnXG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQkFSU19NRVRIT0QgPSB7XG4gIGdldFZpc2libGU6ICdoZWFkZXJCYXJzLmdldFZpc2libGUnLFxuICBzZXRWaXNpYmxlOiAnaGVhZGVyQmFycy5zZXRWaXNpYmxlJyxcbiAgYWRkQ29tbWFuZDogJ2hlYWRlckJhcnMuYWRkQ29tbWFuZCcsXG4gIGdldENvbW1hbmQ6ICdoZWFkZXJCYXJzLmdldENvbW1hbmQnLFxuICBzZXRDb21tYW5kVmlzaWJsZTogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZFZpc2libGUnLFxuICBzZXRDb21tYW5kRGlzYWJsZWQ6ICdoZWFkZXJCYXJzLnNldENvbW1hbmREaXNhYmxlZCcsXG4gIHNldENvbW1hbmRBY3RpdmU6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRBY3RpdmUnLFxuICBzZXRDb21tYW5kU3JjOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kU3JjJyxcbiAgc2V0Q29tbWFuZExhYmVsOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kTGFiZWwnLFxuICBzZXRDb21tYW5kRWRpdGFibGU6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRFZGl0YWJsZScsXG4gIHNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQ6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQnLFxuICBsaXN0Vmlld0NvbW1hbmRzOiAnaGVhZGVyQmFycy5saXN0Vmlld0NvbW1hbmRzJyxcbiAgaGFuZGxlQ29tbWFuZENsaWNrOiAnaGVhZGVyQmFycy5oYW5kbGVDb21tYW5kQ2xpY2snXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQkFSU19DSEFOR0VEX0VWRU5UID0gJ2hlYWRlckJhcnM6Y2hhbmdlZCdcblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZERlZmluaXRpb24ge1xuICBpZDogc3RyaW5nXG4gIHNlY3Rpb24/OiBzdHJpbmdcbiAgb3JkZXI/OiBudW1iZXJcbiAgbGFiZWw/OiBzdHJpbmdcbiAgdmlzaWJsZT86IGJvb2xlYW5cbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIGFjdGl2ZT86IGJvb2xlYW5cbiAgZWRpdGFibGU/OiBib29sZWFuXG4gIHR5cGU/OiAnYWN0aW9uJyB8ICdzdHJ1Y3R1cmFsJ1xuICByZW5kZXJUeXBlPzogc3RyaW5nXG4gIHNyYz86IHN0cmluZ1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlIGV4dGVuZHMgSGVhZGVyQmFyc0NvbW1hbmREZWZpbml0aW9uIHtcbiAgdHlwZTogJ2FjdGlvbicgfCAnc3RydWN0dXJhbCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ29tbWFuZFJlZiB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmdcbiAgdmlzaWJsZTogYm9vbGVhblxuICBkaXNhYmxlZDogYm9vbGVhblxuICBhY3RpdmU6IGJvb2xlYW5cbiAgc3JjPzogc3RyaW5nXG4gIGxhYmVsPzogc3RyaW5nXG4gIGVkaXRhYmxlPzogYm9vbGVhblxuICBvbkNvbW1hbmRDbGljaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG4gIGdldFN0YXRlOiAoKSA9PiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCB0eXBlIEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgPSAoXG4gIHRpdGxlOiBzdHJpbmdcbikgPT4gdm9pZCB8IFByb21pc2U8dm9pZD5cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzRmFjYWRlIHtcbiAgdmlzaWJsZTogYm9vbGVhblxuICBvblRpdGxlQ2hhbmdlPzogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlclxuICBnZXRWaXNpYmxlOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIHNldFZpc2libGU6ICh2aXNpYmxlOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZENvbW1hbmQ6IChcbiAgICBjb21tYW5kOiBIZWFkZXJCYXJzQ29tbWFuZERlZmluaXRpb24sXG4gICAgcG9zQ29tbWFuZDogc3RyaW5nLFxuICAgIHBvcz86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgZ2V0Q29tbWFuZDogKGlkOiBzdHJpbmcpID0+IEhlYWRlckJhcnNDb21tYW5kUmVmXG4gIGxpc3RWaWV3Q29tbWFuZHM6ICgpID0+IFByb21pc2U8SGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZCB7XG4gIHJlYXNvbj86IHN0cmluZ1xuICBjb21tYW5kSWQ/OiBzdHJpbmdcbiAgdmVyc2lvbj86IG51bWJlclxuICBzbmFwc2hvdD86IHtcbiAgICB2aXNpYmxlOiBib29sZWFuXG4gICAgY29tbWFuZHM6IEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXVxuICB9XG59XG5cbmludGVyZmFjZSBIZWFkZXJCYXJzSG9zdCB7XG4gIGdldFZpc2libGVTdGF0ZSgpOiBib29sZWFuXG4gIHNldFZpc2libGVTdGF0ZSh2aXNpYmxlOiBib29sZWFuKTogdm9pZFxuICBnZXRDb21tYW5kc01hcCgpOiBNYXA8c3RyaW5nLCBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlPlxuICBnZXRPdmVycmlkZXNNYXAoKTogTWFwPHN0cmluZywgKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IHVuZGVmaW5lZD5cbiAgZ2V0UmVmc01hcCgpOiBNYXA8c3RyaW5nLCBIZWFkZXJCYXJzQ29tbWFuZFJlZj5cbiAgZ2V0VGl0bGVIYW5kbGVyKCk6IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgfCB1bmRlZmluZWRcbiAgc2V0VGl0bGVIYW5kbGVyKGhhbmRsZXI6IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgfCB1bmRlZmluZWQpOiB2b2lkXG4gIGlzVGl0bGVTdWJzY3JpYmVkKCk6IGJvb2xlYW5cbiAgc2V0VGl0bGVTdWJzY3JpYmVkKHN1YnNjcmliZWQ6IGJvb2xlYW4pOiB2b2lkXG4gIGludm9rZUhlYWRlckJhcnM8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IFByb21pc2U8VD5cbiAgZW1pdEhlYWRlckJhcnNFcnJvcihtZXNzYWdlOiBzdHJpbmcsIGVycjogdW5rbm93bik6IHZvaWRcbiAgb25JbnRlcm5hbFRpdGxlQ2hhbmdlKGxpc3RlbmVyOiAodGl0bGU6IHVua25vd24pID0+IHZvaWQpOiB2b2lkXG4gIHN1YnNjcmliZUVkaXRvclRpdGxlQ2hhbmdlKCk6IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRIZWFkZXJCYXJzRmFjYWRlKGhvc3Q6IEhlYWRlckJhcnNIb3N0KTogSGVhZGVyQmFyc0ZhY2FkZSB7XG4gIGNvbnN0IGZhY2FkZTogSGVhZGVyQmFyc0ZhY2FkZSA9IHtcbiAgICB2aXNpYmxlOiBmYWxzZSxcbiAgICBvblRpdGxlQ2hhbmdlOiB1bmRlZmluZWQsXG4gICAgZ2V0VmlzaWJsZTogYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IHN5bmNIZWFkZXJCYXJzVmlzaWJsZShob3N0KVxuICAgIH0sXG4gICAgc2V0VmlzaWJsZTogYXN5bmMgKHZpc2libGU6IGJvb2xlYW4pID0+IHtcbiAgICAgIGF3YWl0IHNldEhlYWRlckJhcnNWaXNpYmxlKGhvc3QsIHZpc2libGUpXG4gICAgfSxcbiAgICBhZGRDb21tYW5kOiBhc3luYyAoXG4gICAgICBjb21tYW5kOiBIZWFkZXJCYXJzQ29tbWFuZERlZmluaXRpb24sXG4gICAgICBwb3NDb21tYW5kOiBzdHJpbmcsXG4gICAgICBwb3M6ICdiZWZvcmUnIHwgJ2FmdGVyJyA9ICdhZnRlcidcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHsgb25DbGljaywgLi4uY29tbWFuZFBheWxvYWQgfSA9IGNvbW1hbmRcbiAgICAgIGNvbnN0IGFkZGVkID0gYXdhaXQgaG9zdC5pbnZva2VIZWFkZXJCYXJzPGJvb2xlYW4+KFxuICAgICAgICBIRUFERVJfQkFSU19NRVRIT0QuYWRkQ29tbWFuZCxcbiAgICAgICAgeyBjb21tYW5kOiBjb21tYW5kUGF5bG9hZCwgcG9zQ29tbWFuZCwgcG9zIH1cbiAgICAgIClcbiAgICAgIGNvbnN0IGNsaWNrSGFuZGxlciA9IG9uQ2xpY2tcbiAgICAgIGlmIChhZGRlZCAmJiB0eXBlb2YgY2xpY2tIYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGhvc3QuZ2V0T3ZlcnJpZGVzTWFwKCkuc2V0KGNvbW1hbmQuaWQsIGNsaWNrSGFuZGxlcilcbiAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oXG4gICAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGNvbW1hbmQuaWQsXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9XG4gICAgICByZXR1cm4gYWRkZWRcbiAgICB9LFxuICAgIGdldENvbW1hbmQ6IChpZDogc3RyaW5nKSA9PiBnZXRIZWFkZXJCYXJzQ29tbWFuZFJlZihob3N0LCBpZCksXG4gICAgbGlzdFZpZXdDb21tYW5kczogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29tbWFuZHMgPSBhd2FpdCBob3N0Lmludm9rZUhlYWRlckJhcnM8SGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdPihcbiAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELmxpc3RWaWV3Q29tbWFuZHNcbiAgICAgIClcbiAgICAgIHN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoaG9zdCwgY29tbWFuZHMpXG4gICAgICByZXR1cm4gY29tbWFuZHNcbiAgICB9XG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZmFjYWRlLCAndmlzaWJsZScsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6ICgpID0+IGhvc3QuZ2V0VmlzaWJsZVN0YXRlKCksXG4gICAgc2V0OiAobmV4dDogYm9vbGVhbikgPT4ge1xuICAgICAgc2V0SGVhZGVyQmFyc1Zpc2libGUoaG9zdCwgbmV4dCkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoJ3NldCBoZWFkZXJCYXJzLnZpc2libGUgZmFpbGVkJywgZXJyKVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZhY2FkZSwgJ29uVGl0bGVDaGFuZ2UnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiAoKSA9PiBob3N0LmdldFRpdGxlSGFuZGxlcigpLFxuICAgIHNldDogKGhhbmRsZXI6IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGhvc3Quc2V0VGl0bGVIYW5kbGVyKGhhbmRsZXIpXG4gICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24oaG9zdCkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoJ3N1YnNjcmliZSBoZWFkZXJCYXJzIHRpdGxlQ2hhbmdlIGZhaWxlZCcsIGVycilcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBmYWNhZGVcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbihcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3Rcbik6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoaG9zdC5pc1RpdGxlU3Vic2NyaWJlZCgpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaG9zdC5zZXRUaXRsZVN1YnNjcmliZWQodHJ1ZSlcbiAgaG9zdC5vbkludGVybmFsVGl0bGVDaGFuZ2UoKHRpdGxlOiB1bmtub3duKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB0aXRsZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBob3N0LmdldFRpdGxlSGFuZGxlcigpPy4odGl0bGUpXG4gIH0pXG4gIHRyeSB7XG4gICAgYXdhaXQgaG9zdC5zdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZSgpXG4gIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgaG9zdC5zZXRUaXRsZVN1YnNjcmliZWQoZmFsc2UpXG4gICAgdGhyb3cgZXJyb3JcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3luY0hlYWRlckJhcnNDb21tYW5kcyhcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3QsXG4gIGNvbW1hbmRzOiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW11cbikge1xuICBjb25zdCBjb21tYW5kTWFwID0gaG9zdC5nZXRDb21tYW5kc01hcCgpXG4gIGNvbW1hbmRNYXAuY2xlYXIoKVxuICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgY29tbWFuZHMpIHtcbiAgICBjb21tYW5kTWFwLnNldChjb21tYW5kLmlkLCBjb21tYW5kKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseUhlYWRlckJhcnNDaGFuZ2VkKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdCxcbiAgcGF5bG9hZD86IEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZFxuKSB7XG4gIGNvbnN0IHNuYXBzaG90ID0gcGF5bG9hZD8uc25hcHNob3RcbiAgaWYgKCFzbmFwc2hvdCkge1xuICAgIHJldHVyblxuICB9XG4gIGhvc3Quc2V0VmlzaWJsZVN0YXRlKHNuYXBzaG90LnZpc2libGUpXG4gIHN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoaG9zdCwgc25hcHNob3QuY29tbWFuZHMpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzeW5jSGVhZGVyQmFyc1Zpc2libGUoXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0XG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IGhvc3QuaW52b2tlSGVhZGVyQmFyczx7IHZpc2libGU6IGJvb2xlYW4gfT4oXG4gICAgSEVBREVSX0JBUlNfTUVUSE9ELmdldFZpc2libGVcbiAgKVxuICBob3N0LnNldFZpc2libGVTdGF0ZShwYXlsb2FkLnZpc2libGUpXG4gIHJldHVybiBob3N0LmdldFZpc2libGVTdGF0ZSgpXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRIZWFkZXJCYXJzVmlzaWJsZShcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3QsXG4gIHZpc2libGU6IGJvb2xlYW5cbikge1xuICBob3N0LnNldFZpc2libGVTdGF0ZSh2aXNpYmxlKVxuICBhd2FpdCBob3N0Lmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0VmlzaWJsZSwge1xuICAgIHZpc2libGVcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlckJhcnNDb21tYW5kUmVmKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdCxcbiAgaWQ6IHN0cmluZ1xuKTogSGVhZGVyQmFyc0NvbW1hbmRSZWYge1xuICBjb25zdCByZWZzID0gaG9zdC5nZXRSZWZzTWFwKClcbiAgY29uc3QgZXhpc3RpbmcgPSByZWZzLmdldChpZClcbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nXG4gIH1cblxuICBjb25zdCBjb21tYW5kcyA9IGhvc3QuZ2V0Q29tbWFuZHNNYXAoKVxuICBpZiAoIWNvbW1hbmRzLmhhcyhpZCkpIHtcbiAgICBob3N0XG4gICAgICAuaW52b2tlSGVhZGVyQmFyczx7IGNvbW1hbmQ6IEhlYWRlckJhcnNDb21tYW5kU3RhdGUgfCBudWxsIH0+KFxuICAgICAgICBIRUFERVJfQkFSU19NRVRIT0QuZ2V0Q29tbWFuZCxcbiAgICAgICAgeyBpZCB9XG4gICAgICApXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5jb21tYW5kKSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCBwYXlsb2FkLmNvbW1hbmQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoJ2ZldGNoIGhlYWRlckJhcnMgY29tbWFuZCBmYWlsZWQnLCBlcnIpXG4gICAgICB9KVxuICB9XG5cbiAgY29uc3QgcmVmOiBIZWFkZXJCYXJzQ29tbWFuZFJlZiA9IHtcbiAgICBpZCxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBhY3RpdmU6IGZhbHNlLFxuICAgIHNyYzogdW5kZWZpbmVkLFxuICAgIGxhYmVsOiB1bmRlZmluZWQsXG4gICAgZWRpdGFibGU6IHVuZGVmaW5lZCxcbiAgICBvbkNvbW1hbmRDbGljazogdW5kZWZpbmVkLFxuICAgIGdldFN0YXRlOiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpXG4gIH1cblxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZWYsIHtcbiAgICB2aXNpYmxlOiB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpPy52aXNpYmxlICE9PSBmYWxzZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgdmlzaWJsZTogbmV4dCB9KVxuICAgICAgICB9XG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kVmlzaWJsZSwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCB2aXNpYmxlIGZhaWxlZCcsXG4gICAgICAgICAgICAgIGVyclxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8uZGlzYWJsZWQgPT09IHRydWUsXG4gICAgICBzZXQ6IChuZXh0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIGRpc2FibGVkOiBuZXh0IH0pXG4gICAgICAgIH1cbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmREaXNhYmxlZCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBkaXNhYmxlZDogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcihcbiAgICAgICAgICAgICAgJ3NldCBoZWFkZXJCYXJzIGNvbW1hbmQgZGlzYWJsZWQgZmFpbGVkJyxcbiAgICAgICAgICAgICAgZXJyXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIGFjdGl2ZToge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8uYWN0aXZlID09PSB0cnVlLFxuICAgICAgc2V0OiAobmV4dDogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY29tbWFuZHMuZ2V0KGlkKVxuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBhY3RpdmU6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZEFjdGl2ZSwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBhY3RpdmU6IG5leHRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoXG4gICAgICAgICAgICAgICdzZXQgaGVhZGVyQmFycyBjb21tYW5kIGFjdGl2ZSBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgc3JjOiB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpPy5zcmMsXG4gICAgICBzZXQ6IChuZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBuZXh0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIHNyYzogbmV4dCB9KVxuICAgICAgICB9XG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kU3JjLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHNyYzogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgY3VycmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignc2V0IGhlYWRlckJhcnMgY29tbWFuZCBzcmMgZmFpbGVkJywgZXJyKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBsYWJlbDoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8ubGFiZWwsXG4gICAgICBzZXQ6IChuZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGVvZiBuZXh0ICE9PSAnc3RyaW5nJyB8fFxuICAgICAgICAgIGlkID09PSAndGl0bGUnIHx8XG4gICAgICAgICAgaWQgPT09ICdzYXZlLXN0YXR1cydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgbGFiZWw6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZExhYmVsLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGxhYmVsOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKCdzZXQgaGVhZGVyQmFycyBjb21tYW5kIGxhYmVsIGZhaWxlZCcsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgZWRpdGFibGU6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGNvbW1hbmRzLmdldChpZCk/LmVkaXRhYmxlLFxuICAgICAgc2V0OiAobmV4dDogYm9vbGVhbiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBpZiAoaWQgIT09ICd0aXRsZScpIHtcbiAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoXG4gICAgICAgICAgICAnaGVhZGVyQmFycyBjb21tYW5kIGVkaXRhYmxlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0aXRsZScsXG4gICAgICAgICAgICBuZXcgRXJyb3IoJ2hlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdGl0bGUnKVxuICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50ID0gY29tbWFuZHMuZ2V0KGlkKVxuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBlZGl0YWJsZTogbmV4dCB9KVxuICAgICAgICB9XG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kRWRpdGFibGUsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgZWRpdGFibGU6IG5leHRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoXG4gICAgICAgICAgICAgICdzZXQgaGVhZGVyQmFycyBjb21tYW5kIGVkaXRhYmxlIGZhaWxlZCcsXG4gICAgICAgICAgICAgIGVyclxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBvbkNvbW1hbmRDbGljazoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gaG9zdC5nZXRPdmVycmlkZXNNYXAoKS5nZXQoaWQpLFxuICAgICAgc2V0OiAoaGFuZGxlcjogKCgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICBob3N0LmdldE92ZXJyaWRlc01hcCgpLnNldChpZCwgaGFuZGxlcilcbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oXG4gICAgICAgICAgICBIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZENhbGxiYWNrRW5hYmxlZCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIGVuYWJsZWQ6IHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoXG4gICAgICAgICAgICAgICdzZXQgaGVhZGVyQmFycyBjb21tYW5kIGNhbGxiYWNrIGZhaWxlZCcsXG4gICAgICAgICAgICAgIGVyclxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9KVxuXG4gIHJlZnMuc2V0KGlkLCByZWYpXG4gIHJldHVybiByZWZcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN1YnNjcmliZUhlYWRlckJhcnNUaXRsZUNoYW5nZShcbiAgaW52b2tlOiA8VD4obWV0aG9kOiBzdHJpbmcsIGFyZ3M6IHVua25vd25bXSkgPT4gUHJvbWlzZTxUPlxuKSB7XG4gIGF3YWl0IGludm9rZShJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsIFsndGl0bGVDaGFuZ2UnXSlcbn1cbiIsImltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9wcm9taXNlJ1xuaW1wb3J0ICdjb3JlLWpzL2ZlYXR1cmVzL3VybCdcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9hcnJheS9pbmNsdWRlcydcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy9vYmplY3QvYXNzaWduJ1xuaW1wb3J0ICdwcm94eS1wb2x5ZmlsbCdcbmltcG9ydCB7XG4gIE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwsXG4gIE9mZmljZVNES01lc3NhZ2VFdmVudCxcbiAgaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlLFxuICBPZmZpY2VTREtFdmVudExpa2Vcbn0gZnJvbSAnb2ZmaWNlc2RrLWJyb2FkY2FzdC1jaGFubmVsJ1xuaW1wb3J0IHsgU3RhcnRQYXJhbXMgfSBmcm9tICd3ZWJvZmZpY2Utc3RhcnRwYXJhbXMnXG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IFRpbnlFbWl0dGVyIH0gZnJvbSAndGlueS1lbWl0dGVyJ1xuaW1wb3J0IGdldEdsb2JhbCBmcm9tICdnbG9iYWx0aGlzL3BvbHlmaWxsJ1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyTWV0aG9kLFxuICBDb250YWluZXJSZWN0LFxuICBEaXNhYmxlTWVudGlvbkNhcmRzLFxuICBGaWxlVHlwZSxcbiAgSW52b2tlTWV0aG9kLFxuICBNb3VzZU1vdmVQYXlsb2FkLFxuICBSZWFkeVN0YXRlLFxuICBQZXJmb3JtYW5jZUVudHJ5LFxuICBEZXZpY2VNb2RlLFxuICBHZW5lcmF0ZVVybEhhbmRsZXIsXG4gIEdlbmVyYXRlVXJsSW5mbyxcbiAgQVBJQWRhcHRvcixcbiAgUmVxdWVzdENvbnRleHQsXG4gIFNES0V2ZW50LFxuICBTaG93VG9hc3RPcHRpb25zLFxuICBDcmVkZW50aWFsc1xufSBmcm9tICd3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZCdcbmltcG9ydCBFeHBpcmVTZXQgZnJvbSAnZXhwaXJlLXNldCdcblxuaW1wb3J0IHtcbiAgRG9jdW1lbnQsXG4gIERvY3VtZW50UHJvLFxuICBQcmVzZW50YXRpb24sXG4gIFNwcmVhZHNoZWV0LFxuICBUYWJsZSxcbiAgRm9ybSxcbiAgRmxvd2NoYXJ0XG59IGZyb20gJy4nXG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICcuL2Fzc2VydCdcbmltcG9ydCB7XG4gIEVtcHR5UGFnZU9wdGlvbnMsXG4gIE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zLFxuICBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zXG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuaW1wb3J0IHtcbiAgQmFzZUVkaXRvcixcbiAgQ29sbGFib3JhdG9yLFxuICBDb2xsYWJvcmF0b3JzQ2hhbmdlZFBheWxvYWRcbn0gZnJvbSAnLi90eXBlcy9CYXNlRWRpdG9yJ1xuaW1wb3J0IHtcbiAgU2xhc2hNZW51QnV0dG9uLFxuICBTbGFzaE1lbnVFbnRyeSxcbiAgU2xhc2hNZW51T3B0aW9uc1xufSBmcm9tICcuL3R5cGVzL1NsYXNoTWVudSdcbmltcG9ydCB7XG4gIGFwcGx5SGVhZGVyQmFyc0NoYW5nZWQsXG4gIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbixcbiAgZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYsXG4gIEhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQsXG4gIEhFQURFUl9CQVJTX01FVEhPRCxcbiAgaW5pdEhlYWRlckJhcnNGYWNhZGUsXG4gIHNldEhlYWRlckJhcnNWaXNpYmxlLFxuICBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzLFxuICBzeW5jSGVhZGVyQmFyc1Zpc2libGVcbn0gZnJvbSAnLi9PZmZpY2VTREsuaGVhZGVyQmFycydcbmltcG9ydCB7XG4gIGFwcGx5QnJhbmRpbmdDaGFuZ2VkLFxuICBCUkFORElOR19DSEFOR0VEX0VWRU5ULFxuICBpbml0QnJhbmRpbmdGYWNhZGVcbn0gZnJvbSAnLi9PZmZpY2VTREsuYnJhbmRpbmcnXG5pbXBvcnQgeyBidWlsZFJvb3RGYWNhZGVTdGF0ZSB9IGZyb20gJy4vT2ZmaWNlU0RLLmZhY2FkZSdcbmltcG9ydCB0eXBlIHtcbiAgQ29sbGFib3JhdG9yRmFjYWRlLFxuICBDb21tZW50c0ZhY2FkZSxcbiAgQ29udGVudEZhY2FkZSxcbiAgRGlzY3Vzc2lvbkZhY2FkZSxcbiAgRG9jc091dGxpbmVGYWNhZGUsXG4gIERvY3NTZWFyY2hGYWNhZGUsXG4gIERvY3NTZWxlY3Rpb25GYWNhZGUsXG4gIERvY3NTZXR0aW5nc0ZhY2FkZSxcbiAgRG9jc1NpZGViYXJGYWNhZGUsXG4gIERvY3NUYWJsZXNGYWNhZGUsXG4gIEV4dGVybmFsQXBwRmFjYWRlLFxuICBIaXN0b3J5RmFjYWRlLFxuICBMb2Nrc0ZhY2FkZSxcbiAgTWVudGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25TbGlkZXNGYWNhZGUsXG4gIFByZXNlbnRhdGlvblRleHRGYWNhZGUsXG4gIFByZXNlbnRhdGlvblpvb21GYWNhZGUsXG4gIFNoZWV0Q2hhcnRzRmFjYWRlLFxuICBTaGVldFNlbGVjdGlvbnNGYWNhZGUsXG4gIFNoZWV0V29ya2Jvb2tGYWNhZGUsXG4gIFNoZWV0V29ya3NoZWV0RmFjYWRlLFxuICBUaXRsZUZhY2FkZSxcbiAgVmVyc2lvbkZhY2FkZVxufSBmcm9tICcuL09mZmljZVNESy5mYWNhZGUudHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZCxcbiAgSGVhZGVyQmFyc0NvbW1hbmRSZWYsXG4gIEhlYWRlckJhcnNDb21tYW5kU3RhdGUsXG4gIEhlYWRlckJhcnNGYWNhZGUsXG4gIEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXJcbn0gZnJvbSAnLi9PZmZpY2VTREsuaGVhZGVyQmFycydcbmltcG9ydCB0eXBlIHtcbiAgQnJhbmRpbmdDaGFuZ2VkUGF5bG9hZCxcbiAgQnJhbmRpbmdGYWNhZGUsXG4gIFNES0JyYW5kQ29uZmlnXG59IGZyb20gJy4vT2ZmaWNlU0RLLmJyYW5kaW5nJ1xuXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESy5mYWNhZGUudHlwZXMnXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESy5oZWFkZXJCYXJzJ1xuZXhwb3J0ICogZnJvbSAnLi9PZmZpY2VTREsuYnJhbmRpbmcnXG5cbmNvbnN0IGdsb2JhbFRoaXMgPSBnZXRHbG9iYWwoKVxuY29uc3QgQVVEID0gJ3NtanNzZGsnXG5jb25zdCBTTV9QQVJBTVNfS0VZID0gJ3NtUGFyYW1zJ1xuY29uc3QgTE9BRElOR19PUFRJT05TX0tFWSA9ICdsb2FkaW5nT3B0aW9ucydcbmNvbnN0IExFR0FDWV9MQU5HVUFHRV9NQVAgPSB7XG4gIGVuOiAnZW4tVVMnLFxuICBqYTogJ2phLUpQJ1xufSBhcyBjb25zdFxuY29uc3QgU1VQUE9SVEVEX0xBTkdVQUdFUyA9IFtcbiAgJ3poLUNOJyxcbiAgJ3poLVRXJyxcbiAgJ2VuLVVTJyxcbiAgJ2phLUpQJyxcbiAgJ2tvLUtSJyxcbiAgJ2VzLUVTJyxcbiAgJ3B0LVBUJyxcbiAgJ2RlLURFJyxcbiAgJ2ZyLUZSJyxcbiAgJ2l0LUlUJyxcbiAgJ3J1LVJVJyxcbiAgJ2lkLUlEJyxcbiAgJ3ZpLVZOJyxcbiAgJ3RoLVRIJyxcbiAgJ21zLU1ZJyxcbiAgJ2FyLVNBJ1xuXSBhcyBjb25zdFxudHlwZSBTdXBwb3J0ZWRMYW5ndWFnZSA9ICh0eXBlb2YgU1VQUE9SVEVEX0xBTkdVQUdFUylbbnVtYmVyXVxudHlwZSBMZWdhY3lMYW5ndWFnZSA9IGtleW9mIHR5cGVvZiBMRUdBQ1lfTEFOR1VBR0VfTUFQXG5jb25zdCBFRElUT1JfRkFDQURFX0NBTExCQUNLX01FVEhPRCA9ICdlZGl0b3JGYWNhZGUuaGFuZGxlQ2FsbGJhY2snXG5jb25zdCBTTEFTSF9NRU5VX01FVEhPRCA9IHtcbiAgaGFuZGxlQnV0dG9uQ2xpY2s6ICdzbGFzaE1lbnUuaGFuZGxlQnV0dG9uQ2xpY2snXG59IGFzIGNvbnN0XG5jb25zdCBQUkVMT0FEX01FU1NBR0VfVFlQRSA9IHtcbiAgUkVBRFk6ICdTREtfUFJFTE9BRF9SRUFEWScsXG4gIElOSVQ6ICdTREtfUFJFTE9BRF9JTklUJyxcbiAgQUNLOiAnU0RLX1BSRUxPQURfQUNLJyxcbiAgRE9ORTogJ1NES19QUkVMT0FEX0RPTkUnLFxuICBFUlJPUjogJ1NES19QUkVMT0FEX0VSUk9SJ1xufSBhcyBjb25zdFxuY29uc3QgUFJPTUlTRV9MSUtFX1BST1hZX1BST1BTID0gbmV3IFNldChbJ3RoZW4nLCAnY2F0Y2gnLCAnZmluYWxseSddKVxuXG50eXBlIEVkaXRvckZhY2FkZUNhbGxiYWNrID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj5cblxuaW50ZXJmYWNlIFNlcmlhbGl6ZWRTbGFzaE1lbnVCdXR0b24gZXh0ZW5kcyBPbWl0PFNsYXNoTWVudUJ1dHRvbiwgJ2NhbGxiYWNrJz4ge1xuICBjYWxsYmFja0lkPzogc3RyaW5nXG59XG5cbmludGVyZmFjZSBTZXJpYWxpemVkU2xhc2hNZW51RW50cnkgZXh0ZW5kcyBPbWl0PFNsYXNoTWVudUVudHJ5LCAnY2hpbGRyZW4nPiB7XG4gIGNoaWxkcmVuPzogU2VyaWFsaXplZFNsYXNoTWVudUl0ZW1bXVxufVxuXG50eXBlIFNlcmlhbGl6ZWRTbGFzaE1lbnVJdGVtID1cbiAgfCBTZXJpYWxpemVkU2xhc2hNZW51QnV0dG9uXG4gIHwgU2VyaWFsaXplZFNsYXNoTWVudUVudHJ5XG5cbmludGVyZmFjZSBTZXJpYWxpemVkU2xhc2hNZW51T3B0aW9ucyB7XG4gIGVudHJpZXM6IFNlcmlhbGl6ZWRTbGFzaE1lbnVJdGVtW11cbn1cblxuLyoqXG4gKiDlhbzlrrnml6fniYjor63oqIDnvKnlhpnvvIzlubbnu5/kuIDmmKDlsITkuLrmoIflh4bor63oqIDku6PnoIHjgIJcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogU3VwcG9ydGVkTGFuZ3VhZ2UgfCB1bmRlZmluZWQge1xuICBjb25zdCBub3JtYWxpemVkID0gTEVHQUNZX0xBTkdVQUdFX01BUFtsYW5nIGFzIExlZ2FjeUxhbmd1YWdlXSA/PyBsYW5nXG5cbiAgaWYgKChTVVBQT1JURURfTEFOR1VBR0VTIGFzIHJlYWRvbmx5IHN0cmluZ1tdKS5pbmNsdWRlcyhub3JtYWxpemVkKSkge1xuICAgIHJldHVybiBub3JtYWxpemVkIGFzIFN1cHBvcnRlZExhbmd1YWdlXG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzU2xhc2hNZW51RW50cnkoXG4gIGl0ZW06IFNsYXNoTWVudUVudHJ5IHwgU2xhc2hNZW51QnV0dG9uXG4pOiBpdGVtIGlzIFNsYXNoTWVudUVudHJ5IHtcbiAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJ2VudHJ5J1xufVxuXG5mdW5jdGlvbiBzaG91bGRTa2lwRmFjYWRlUHJveHlQcm9wKHByb3A6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gUFJPTUlTRV9MSUtFX1BST1hZX1BST1BTLmhhcyhwcm9wKVxufVxuXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50ID0gSW52b2tlTWV0aG9kXG5cbmV4cG9ydCBjbGFzcyBPZmZpY2VTREsgZXh0ZW5kcyBUaW55RW1pdHRlciB7XG4gIC8qKlxuICAgKiDnvJbovpHlmajpobXpnaLlr7nlupTnmoQgaWZyYW1lIOWFg+e0oOOAgumcgOimgeazqOaEj+iwg+aVtOeItuWFg+e0oOWkp+Wwj+adpeaOp+WItiBpZnJhbWUg5aSn5bCP44CCXG4gICAqL1xuICBlbGVtZW50OiBIVE1MSUZyYW1lRWxlbWVudFxuICByZWFkb25seSB1dWlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgdXNlclV1aWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICog5Lyg57uf5paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnRQcm8/OiBEb2N1bWVudFByby5FZGl0b3JcblxuICAvKipcbiAgICog6L275paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnQ/OiBEb2N1bWVudC5FZGl0b3JcblxuICAvKipcbiAgICog6KGo5qC857yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgc3ByZWFkc2hlZXQ/OiBTcHJlYWRzaGVldC5FZGl0b3JcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5qCH6aKY6IO95Yqb44CCXG4gICAqL1xuICB0aXRsZT86IFRpdGxlRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWOhuWPsuiDveWKm+OAglxuICAgKi9cbiAgaGlzdG9yeT86IEhpc3RvcnlGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6K+E6K666IO95Yqb44CCXG4gICAqL1xuICBjb21tZW50cz86IENvbW1lbnRzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOiuqOiuuuiDveWKm+OAglxuICAgKi9cbiAgZGlzY3Vzc2lvbj86IERpc2N1c3Npb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE57yW5YaZ6ICF5L6n6L655qCP6IO95Yqb44CCXG4gICAqL1xuICBjb2xsYWJvcmF0b3I/OiBDb2xsYWJvcmF0b3JGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE56ys5LiJ5pa55bqU55So5o+S5YWl6IO95Yqb44CCXG4gICAqL1xuICBleHRlcm5hbEFwcD86IEV4dGVybmFsQXBwRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOmUgeWumuiDveWKm+OAglxuICAgKi9cbiAgbG9ja3M/OiBMb2Nrc0ZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmj5Dlj4rlrprkvY3og73lipvjgIJcbiAgICovXG4gIG1lbnRpb24/OiBNZW50aW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWGheWuueWGmeWFpeiDveWKm+OAglxuICAgKi9cbiAgY29udGVudD86IENvbnRlbnRGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE54mI5pys6IO95Yqb44CCXG4gICAqL1xuICB2ZXJzaW9uPzogVmVyc2lvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmvJTnpLrog73lipvjgIJcbiAgICovXG4gIHByZXNlbnRhdGlvbj86IFByZXNlbnRhdGlvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTpgInljLrog73lipvjgIJcbiAgICovXG4gIHNlbGVjdGlvbj86IERvY3NTZWxlY3Rpb25GYWNhZGUgfCBQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5pCc57Si6IO95Yqb44CCXG4gICAqL1xuICBzZWFyY2g/OiBEb2NzU2VhcmNoRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOebruW9leiDveWKm+OAglxuICAgKi9cbiAgb3V0bGluZT86IERvY3NPdXRsaW5lRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOS+p+i+ueagj+iDveWKm+OAglxuICAgKi9cbiAgc2lkZWJhcj86IERvY3NTaWRlYmFyRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOihqOagvOmbhuWQiOiDveWKm+OAglxuICAgKi9cbiAgdGFibGVzPzogRG9jc1RhYmxlc0ZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTorr7nva7og73lipvjgIJcbiAgICovXG4gIHNldHRpbmdzPzogRG9jc1NldHRpbmdzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOW3peS9nOewv+iDveWKm+OAglxuICAgKi9cbiAgd29ya2Jvb2s/OiBTaGVldFdvcmtib29rRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOW9k+WJjeW3peS9nOihqOiDveWKm+OAglxuICAgKi9cbiAgYWN0aXZlU2hlZXQ/OiBTaGVldFdvcmtzaGVldEZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTlm77ooajog73lipvjgIJcbiAgICovXG4gIGNoYXJ0cz86IFNoZWV0Q2hhcnRzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWkmumAieWMuuiDveWKm+OAglxuICAgKi9cbiAgc2VsZWN0aW9ucz86IFNoZWV0U2VsZWN0aW9uc0ZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTlubvnga/niYfpm4blkIjog73lipvjgIJcbiAgICovXG4gIHNsaWRlcz86IFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmlofmnKzog73lipvjgIJcbiAgICovXG4gIHRleHQ/OiBQcmVzZW50YXRpb25UZXh0RmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOe8qeaUvuiDveWKm+OAglxuICAgKi9cbiAgem9vbT86IFByZXNlbnRhdGlvblpvb21GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5LqL5Lu26K6i6ZiF6IO95Yqb44CCXG4gICAqL1xuICBldmVudFN1YnNjcmlwdGlvbj86IFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOaJuemHj+WPmOabtOiDveWKm+OAglxuICAgKi9cbiAgYmF0Y2hDaGFuZ2VzPzogPFQ+KGNhbGxiYWNrOiAoKSA9PiBUIHwgUHJvbWlzZTxUPikgPT4gUHJvbWlzZTxBd2FpdGVkPFQ+PlxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTlr7zlh7rog73lipvjgIJcbiAgICovXG4gIGV4cG9ydD86ICh0eXBlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5omT5Y2w6IO95Yqb44CCXG4gICAqL1xuICBwcmludD86ICgpID0+IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6IGa54Sm6IO95Yqb44CCXG4gICAqL1xuICBzZXRGb2N1cz86IChpc0ZvY3VzOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG5cbiAgLyoqXG4gICAqIOW6lOeUqOihqOagvOe8lui+keWZqOWunuS+i1xuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLmdldEVkaXRvcjxUPigpYCDmm7/ku6NcbiAgICovXG4gIHRhYmxlPzogVGFibGUuRWRpdG9yXG5cbiAgLyoqXG4gICAqIOihqOWNlee8lui+keWZqOWunuS+i1xuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLmdldEVkaXRvcjxUPigpYCDmm7/ku6NcbiAgICovXG4gIGZvcm0/OiBGb3JtLkVkaXRvclxuXG4gIC8qKlxuICAgKiDlm77osLHnvJbovpHlmajlrp7kvotcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5nZXRFZGl0b3I8VD4oKWAg5pu/5LujXG4gICAqL1xuICBmbG93Y2hhcnQ/OiBGbG93Y2hhcnQuRWRpdG9yXG4gIHJlYWRvbmx5IGhlYWRlckJhcnM6IEhlYWRlckJhcnNGYWNhZGVcbiAgcmVhZG9ubHkgYnJhbmRpbmc6IEJyYW5kaW5nRmFjYWRlXG5cbiAgcHJpdmF0ZSBfZmlsZVR5cGU6IEZpbGVUeXBlID0gRmlsZVR5cGUuVW5rbm93blxuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VIYW5kbGVyOiAoZXZ0OiBnbG9iYWxUaGlzLk1lc3NhZ2VFdmVudCkgPT4gdm9pZCA9XG4gICAgKCkgPT4gdW5kZWZpbmVkXG5cbiAgLyoqXG4gICAqIOWGhemDqCBldmVudCBlbWl0dGVy77yM5q+U5aaC55So5p2l5Lit6L2sIGVkaXRvciDkuovku7ZcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZW1pdHRlcjogVGlueUVtaXR0ZXIgPSBuZXcgVGlueUVtaXR0ZXIoKVxuXG4gIHByaXZhdGUgY2hhbm5lbDogT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbFxuICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3RPcHRpb25zOiBPZmZpY2VTREtPcHRpb25zXG4gIHByaXZhdGUgX3JlYWR5U3RhdGU6IFJlYWR5U3RhdGUgPSBSZWFkeVN0YXRlLkxvYWRpbmdcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueVxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0UGFyYW1zOiBTdGFydFBhcmFtc1xuICBwcml2YXRlIGNvbGxhYm9yYXRvcnM6IENvbGxhYm9yYXRvcltdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yQ29udGV4dDogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlZE1lc3NhZ2VDYWNoZTogRXhwaXJlU2V0PHN0cmluZz5cbiAgLyoqXG4gICAqIOa2iOaBr+i/h+acn+aXtumXtO+8jOWNleS9jeavq+enku+8jOm7mOiupCA1IOWIhumSn1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlRXhwaXJlczogbnVtYmVyXG4gIC8qKlxuICAgKiBTREsg5pyN5Yqh5Zmo55qE5Zyw5Z2AXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50OiBVUkxcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1lT3JpZ2luOiBib29sZWFuXG4gIHByaXZhdGUgaGVhZGVyQmFyc1Zpc2libGUgPSB0cnVlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJCYXJzQ29tbWFuZHMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2xhc2hNZW51Q2FsbGJhY2tzID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IHZvaWQ+KClcbiAgcHJpdmF0ZSByZWFkb25seSBlZGl0b3JGYWNhZGVDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBFZGl0b3JGYWNhZGVDYWxsYmFja1xuICA+KClcblxuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlckJhcnNDb21tYW5kUmVmcyA9IG5ldyBNYXA8XG4gICAgc3RyaW5nLFxuICAgIEhlYWRlckJhcnNDb21tYW5kUmVmXG4gID4oKVxuXG4gIHByaXZhdGUgaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlcj86IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXJcbiAgcHJpdmF0ZSBoZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkID0gZmFsc2VcbiAgcHJpdmF0ZSBlZGl0b3JGb290ZXJMb2dvPzogU0RLQnJhbmRDb25maWdcblxuICBwcml2YXRlIHJlYWRvbmx5IG9uVmlld3BvcnRSZXNpemU6ICgpID0+IHZvaWRcblxuICAvKipcbiAgICog5b2S5LiA5YyW5ZCO55qE57y655yB6aG16YWN572u77yM5p6E6YCg5pe25LiA5qyh566X5a6M77yM5ZCO57ut5LuF6K+75Y+W44CCXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG5vcm1hbGl6ZWRFbXB0eVBhZ2U6IE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZEFja1RpbWVvdXRNcyA9IDIwMDBcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkRG9uZVRpbWVvdXRNcyA9IDgwMDBcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkUmVhZHlUaW1lb3V0TXMgPSAzMDAwXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT2ZmaWNlU0RLT3B0aW9ucykge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuY29ubmVjdE9wdGlvbnMgPSBvcHRpb25zXG4gICAgdGhpcy51dWlkID0gdXVpZCgpXG4gICAgdGhpcy51c2VyVXVpZCA9IG9wdGlvbnMudXNlclV1aWRcbiAgICB0aGlzLm5vcm1hbGl6ZWRFbXB0eVBhZ2UgPSBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zKG9wdGlvbnMuZW1wdHlQYWdlKVxuXG4gICAgYXNzZXJ0PEhUTUxFbGVtZW50PihcbiAgICAgIG9wdGlvbnMuY29udGFpbmVyLFxuICAgICAgKGlucHV0KSA9PiBpbnB1dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LFxuICAgICAgYGNvbnRhaW5lciBpcyBub3QgYW4gSFRNTEVsZW1lbnQ6IFwiJHtTdHJpbmcob3B0aW9ucy5jb250YWluZXIpfVwiYFxuICAgIClcbiAgICBhc3NlcnQ8SFRNTEVsZW1lbnQ+KFxuICAgICAgb3B0aW9ucy5jb250YWluZXIsXG4gICAgICAoaW5wdXQ6IEhUTUxFbGVtZW50KSA9PlxuICAgICAgICAhWydpZnJhbWUnLCAnZnJhbWUnLCAnZW1iZWQnLCAnb2JqZWN0J10uaW5jbHVkZXMoXG4gICAgICAgICAgaW5wdXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICksXG4gICAgICBgaW52YWxpZCBjb250YWluZXIgZWxlbWVudCB0eXBlOiBcIiR7b3B0aW9ucy5jb250YWluZXIudGFnTmFtZX1cIu+8jERJViBhcmUgcmVjb21tZW5kZWQuYFxuICAgIClcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmVuZHBvaW50ID0gbmV3IFVSTChvcHRpb25zLmVuZHBvaW50KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBlbmRwb2ludDogXCIke29wdGlvbnMuZW5kcG9pbnR9XCJgKVxuICAgIH1cbiAgICB0aGlzLnNhbWVPcmlnaW4gPSB0aGlzLmVuZHBvaW50Lm9yaWdpbiA9PT0gZ2xvYmFsVGhpcy5sb2NhdGlvbi5vcmlnaW5cblxuICAgIGlmICgvXFwvc2RrXFwvdjJcXC8qL2kudGVzdCh0aGlzLmVuZHBvaW50LnBhdGhuYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEdlbmVyYWxseSB0aGUgZW5kcG9pbnQgc2hvdWxkIGVuZCB3aXRoIFwiL3Nkay92MlwiLCBwbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGNvcnJlY3Q6IFwiJHt0aGlzLmVuZHBvaW50LnRvU3RyaW5nKCl9XCJgXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5hcGlBZGFwdG9yID0gb3B0aW9ucy5hcGlBZGFwdG9yID8gb3B0aW9ucy5hcGlBZGFwdG9yLnRvU3RyaW5nKCkgOiAnJ1xuICAgIHRoaXMuYXBpQWRhcHRvckNvbnRleHQgPSBvcHRpb25zLmFwaUFkYXB0b3JDb250ZXh0XG4gICAgICA/IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuYXBpQWRhcHRvckNvbnRleHQpXG4gICAgICA6ICcnXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGFydFBhcmFtcyA9IG5ldyBTdGFydFBhcmFtcyhcbiAgICAgICAgb3B0aW9ucy5zbVBhcmFtcyA/P1xuICAgICAgICAgIG5ldyBVUkxTZWFyY2hQYXJhbXMoZ2xvYmFsVGhpcy5sb2NhdGlvbj8uc2VhcmNoKS5nZXQoU01fUEFSQU1TX0tFWSkgPz9cbiAgICAgICAgICAnJ1xuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhcnRQYXJhbXMgPSBuZXcgU3RhcnRQYXJhbXMoKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZWJ1ZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zLmRlYnVnID0gdGhpcy5jb25uZWN0T3B0aW9ucy5kZWJ1Z1xuICAgIH1cblxuICAgIHRoaXMub25WaWV3cG9ydFJlc2l6ZSA9ICgpID0+IHtcbiAgICAgIDsoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGV2ZW50OiBTREtFdmVudC5WaWV3cG9ydFJlc2l6ZSxcbiAgICAgICAgICBwYXlsb2FkOiB0aGlzLmdldENvbnRhaW5lclJlY3QoKVxuICAgICAgICB9KVxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIG5ldyBFcnJvcihgRmFpbGVkIHRvIGVtaXQgcmVzaXplIGV2ZW50OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q2hhbm5lbCgpXG4gICAgdGhpcy5oZWFkZXJCYXJzID0gdGhpcy5pbml0SGVhZGVyQmFyc0ZhY2FkZSgpXG4gICAgdGhpcy5icmFuZGluZyA9IHRoaXMuaW5pdEJyYW5kaW5nRmFjYWRlKClcblxuICAgIGxldCBtZXNzYWdlRXhwaXJlcyA9IG9wdGlvbnMubWVzc2FnZUV4cGlyZXNcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2VFeHBpcmVzICE9PSAnbnVtYmVyJykge1xuICAgICAgbWVzc2FnZUV4cGlyZXMgPSA2MCAqIDUgKiAxMDAwXG4gICAgfVxuICAgIHRoaXMubWVzc2FnZUV4cGlyZXMgPSBhc3NlcnQoXG4gICAgICBtZXNzYWdlRXhwaXJlcyxcbiAgICAgIChpbnB1dCkgPT4gIWlzTmFOKGlucHV0KSAmJiBpbnB1dCA+IDAsXG4gICAgICBgXCJtZXNzYWdlRXhwaXJlc1wiIGlzIG5vdCBhbiB2YWxpZCBudW1iZXI6IFwiJHttZXNzYWdlRXhwaXJlc31cImBcbiAgICApXG4gICAgdGhpcy5oYW5kbGVkTWVzc2FnZUNhY2hlID0gbmV3IEV4cGlyZVNldDxzdHJpbmc+KG1lc3NhZ2VFeHBpcmVzKVxuXG4gICAgaWYgKCF0aGlzLnNhbWVPcmlnaW4pIHtcbiAgICAgIC8vIOazqOWGjOWPr+S7peWPjeazqOWGjOeahOWHveaVsFxuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IChldnQ6IGdsb2JhbFRoaXMuTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgIC8vIOWwhua2iOaBr+i9rOWFpSBPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsIOWkhOeQhlxuICAgICAgICBjb25zdCBkYXRhID0gZXZ0LmRhdGFcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZShkYXRhKSAmJlxuICAgICAgICAgIHRoaXMuc2hvdWxkSGFuZGxlTWVzc2FnZShkYXRhKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUuYWRkKGRhdGEuaWQpXG4gICAgICAgICAgdGhpcy5jaGFubmVsXG4gICAgICAgICAgICAuZGlzdHJpYnV0ZU1lc3NhZ2UoZXZ0LmRhdGEgYXMgT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KVxuICAgICAgICAgICAgLmNhdGNoKChlcnI6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpbGVUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWxlVHlwZVxuICB9XG5cbiAgZ2V0IHJlYWR5U3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWR5U3RhdGVcbiAgfVxuXG4gIC8qKlxuICAgKiDliKTmlq3lvZPliY3lrp7kvovmmK/lkKblupTor6XlkJEgaWZyYW1lIOaatOmcsiBzbGFzaE1lbnXjgIJcbiAgICog6L6T5YWl77ya5peg77yM6K+75Y+W5b2T5YmN5paH5Lu257G75Z6L5LiOIHN0YXJ0UGFyYW1zLnR5cGUg5o+Q56S644CCXG4gICAqIOi+k+WHuu+8muS7heWcqOaYjuehruaYryBkb2Nz77yM5oiW5bCa5pyq5ou/5Yiw5paH5Lu257G75Z6L5LiU5rKh5pyJ5piO56Gu6Z2eIGRvY3Mg5o+Q56S65pe26L+U5ZueIHRydWXjgIJcbiAgICovXG4gIHByaXZhdGUgc2hvdWxkRXhwb3NlU2xhc2hNZW51KCkge1xuICAgIGlmICghdGhpcy5jb25uZWN0T3B0aW9ucy5zbGFzaE1lbnUpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVUeXBlID09PSBGaWxlVHlwZS5Eb2N1bWVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWxlVHlwZSAhPT0gRmlsZVR5cGUuVW5rbm93bikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgY29uc3QgaGludGVkVHlwZSA9IHRoaXMuZ2V0U2xhc2hNZW51VHlwZUhpbnQoKVxuICAgIGlmICh0eXBlb2YgaGludGVkVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIFsnZG9jJywgJ2RvY3MnLCAnZG9jdW1lbnQnXS5pbmNsdWRlcyhoaW50ZWRUeXBlKVxuICB9XG5cbiAgLyoqXG4gICAqIOS7jiBzdGFydFBhcmFtcyDkuK3mj5Dlj5bmlofku7bnsbvlnovmj5DnpLrjgIJcbiAgICog6L6T5YWl77ya5peg44CCXG4gICAqIOi+k+WHuu+8muagh+WHhuWMluWQjueahCB0eXBlIOWtl+espuS4su+8m+iLpeacqumFjee9ruWImei/lOWbniB1bmRlZmluZWTjgIJcbiAgICovXG4gIHByaXZhdGUgZ2V0U2xhc2hNZW51VHlwZUhpbnQoKSB7XG4gICAgY29uc3QgdHlwZSA9ICh0aGlzLnN0YXJ0UGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS50eXBlXG4gICAgaWYgKHR5cGVvZiB0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0eXBlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gICAgcmV0dXJuIG5vcm1hbGl6ZWQgfHwgdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICog5bCG5a6/5Li75Lyg5YWl55qEIHNsYXNoTWVudSDovazmiJDlj6/ot6ggaWZyYW1lIOS8oOi+k+eahOe6r+aVsOaNrue7k+aehOOAglxuICAgKiDovpPlhaXvvJrlvZPliY3lrp7kvovkuIrnmoQgYE9mZmljZVNES09wdGlvbnMuc2xhc2hNZW51YOOAglxuICAgKiDovpPlh7rvvJrljrvpmaTnnJ/lrp7lh73mlbDjgIHpmYTluKYgY2FsbGJhY2tJZCDnmoQgc2xhc2hNZW51IOmFjee9ru+8m+S4jemAgueUqOaXtui/lOWbniB1bmRlZmluZWTjgIJcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2VyaWFsaXplZFNsYXNoTWVudSgpOiBTZXJpYWxpemVkU2xhc2hNZW51T3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gICAgdGhpcy5zbGFzaE1lbnVDYWxsYmFja3MuY2xlYXIoKVxuXG4gICAgaWYgKCF0aGlzLnNob3VsZEV4cG9zZVNsYXNoTWVudSgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgeyBzbGFzaE1lbnUgfSA9IHRoaXMuY29ubmVjdE9wdGlvbnNcbiAgICBpZiAoIXNsYXNoTWVudSB8fCAhQXJyYXkuaXNBcnJheShzbGFzaE1lbnUuZW50cmllcykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZW50cmllczogdGhpcy5zZXJpYWxpemVTbGFzaE1lbnVJdGVtcyhzbGFzaE1lbnUuZW50cmllcywgWydlbnRyaWVzJ10pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOmAkuW9kuW6j+WIl+WMliBzbGFzaE1lbnUg6I+c5Y2V6aG577yM5bm255m76K6wIGJ1dHRvbiBjYWxsYmFja+OAglxuICAgKiDovpPlhaXvvJroj5zljZXpobnmlbDnu4TkuI7lvZPliY3pgJLlvZLot6/lvoTjgIJcbiAgICog6L6T5Ye677ya5LuF5YyF5ZCr57uT5p6E5YyW5YWL6ZqG5a6J5YWo5a2X5q6155qE6I+c5Y2V6aG55pWw57uE44CCXG4gICAqL1xuICBwcml2YXRlIHNlcmlhbGl6ZVNsYXNoTWVudUl0ZW1zKFxuICAgIGl0ZW1zOiBBcnJheTxTbGFzaE1lbnVFbnRyeSB8IFNsYXNoTWVudUJ1dHRvbj4sXG4gICAgcGF0aDogc3RyaW5nW11cbiAgKTogU2VyaWFsaXplZFNsYXNoTWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRQYXRoID0gWy4uLnBhdGgsIGAke2luZGV4fWAsIGl0ZW0ubmFtZV1cbiAgICAgIGlmIChpc1NsYXNoTWVudUVudHJ5KGl0ZW0pKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBjaGlsZHJlbjogaXRlbS5jaGlsZHJlblxuICAgICAgICAgICAgPyB0aGlzLnNlcmlhbGl6ZVNsYXNoTWVudUl0ZW1zKGl0ZW0uY2hpbGRyZW4sIG5leHRQYXRoKVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjYWxsYmFja0lkID0gdGhpcy5yZWdpc3RlclNsYXNoTWVudUNhbGxiYWNrKG5leHRQYXRoLCBpdGVtLmNhbGxiYWNrKVxuICAgICAgY29uc3Qgc2VyaWFsaXplZEl0ZW06IFNlcmlhbGl6ZWRTbGFzaE1lbnVCdXR0b24gPSB7XG4gICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcbiAgICAgICAgdHlwZTogaXRlbS50eXBlLFxuICAgICAgICBkaXNhYmxlZDogaXRlbS5kaXNhYmxlZCxcbiAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXG4gICAgICAgIGljb246IGl0ZW0uaWNvblxuICAgICAgfVxuXG4gICAgICBpZiAoY2FsbGJhY2tJZCkge1xuICAgICAgICBzZXJpYWxpemVkSXRlbS5jYWxsYmFja0lkID0gY2FsbGJhY2tJZFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VyaWFsaXplZEl0ZW1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOS4uiBzbGFzaE1lbnUgYnV0dG9uIGNhbGxiYWNrIOeUn+aIkOeos+WumiBpZCDlubbms6jlhozliLDlhoXlrZjooajjgIJcbiAgICog6L6T5YWl77ya6I+c5Y2V6Lev5b6E5LiO5Y+v6YCJIGNhbGxiYWNr44CCXG4gICAqIOi+k+WHuu+8muazqOWGjOWQjueahCBjYWxsYmFja0lk77yb6Iul5pyq5o+Q5L6bIGNhbGxiYWNrIOWImei/lOWbniB1bmRlZmluZWTjgIJcbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJTbGFzaE1lbnVDYWxsYmFjayhwYXRoOiBzdHJpbmdbXSwgY2FsbGJhY2s/OiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IGNhbGxiYWNrSWQgPSBgc2xhc2gtbWVudToke3BhdGguam9pbignOicpfWBcbiAgICB0aGlzLnNsYXNoTWVudUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJZCwgY2FsbGJhY2spXG4gICAgcmV0dXJuIGNhbGxiYWNrSWRcbiAgfVxuXG4gIGdldEVkaXRvcjxcbiAgICBUIGV4dGVuZHNcbiAgICAgIHwgQmFzZUVkaXRvclxuICAgICAgfCBEb2N1bWVudC5FZGl0b3JcbiAgICAgIHwgRG9jdW1lbnRQcm8uRWRpdG9yXG4gICAgICB8IFByZXNlbnRhdGlvbi5FZGl0b3JcbiAgICAgIHwgU3ByZWFkc2hlZXQuRWRpdG9yXG4gICAgICB8IEZvcm0uRWRpdG9yXG4gICAgICB8IEZsb3djaGFydC5FZGl0b3JcbiAgICAgIHwgVGFibGUuRWRpdG9yID0gQmFzZUVkaXRvclxuICA+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmVkaXRvciBhcyBUXG4gIH1cblxuICAvKipcbiAgICog5pu05paw6Ym05p2DIHNpZ25hdHVyZSDlkowgdG9rZW5cbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYE9mZmljZVNES09wdGlvbnMuZ2V0Q3JlZGVudGlhbHMoKWAg5pu/5LujXG4gICAqL1xuICBhc3luYyBzZXRDcmVkZW50aWFscyhwYXlsb2FkOiB7IHNpZ25hdHVyZTogc3RyaW5nOyB0b2tlbjogc3RyaW5nIH0pIHtcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKEludm9rZU1ldGhvZC5TZXRDcmVkZW50aWFscywgW3BheWxvYWRdLCB7XG4gICAgICBhdWRpZW5jZTogQVVEXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva7nn7PloqjnmoTpibTmnYMgc2lnbmF0dXJl44CC55So5LqO5a6e5pe25pu05paw6Ym05p2D5L+h5oGv77yM5LyY5YyW55So5oi35Ye6546w5Zug6ZW/5pe26Ze05pS+572u77yM6Ym05p2D5aSx6LSl6ICM5byV6LW355qE5L2T6aqM6Zeu6aKY44CCXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuc2V0Q3JlZGVudGlhbHMoKWAg5pu/5LujXG4gICAqL1xuICBhc3luYyBzZXRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKEludm9rZU1ldGhvZC5TZXRDcmVkZW50aWFscywgW3sgc2lnbmF0dXJlIH1dLCB7XG4gICAgICBhdWRpZW5jZTogQVVEXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDorr7nva7mgqjns7vnu5/nmoTpibTmnYMgdG9rZW7jgILnlKjkuo7lrp7ml7bmm7TmlrDpibTmnYPkv6Hmga/vvIzkvJjljJbnlKjmiLflh7rnjrDlm6Dplb/ml7bpl7TmlL7nva7vvIzpibTmnYPlpLHotKXogIzlvJXotbfnmoTkvZPpqozpl67popjjgIJcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5zZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKEludm9rZU1ldGhvZC5TZXRDcmVkZW50aWFscywgW3sgdG9rZW4gfV0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluaAp+iDveS/oeaBr+eJh+auteWIl+ihqO+8jOeUseS6juaAp+iDveagh+iusOaYr+WIhuauteeahOOAgeW8guatpeeahO+8jOWboOatpOavj+asoeiwg+eUqOaXtuiOt+WPlueahOWIl+ihqOacieWPr+iDveS4jeS4gOiHtFxuICAgKi9cbiAgYXN5bmMgZ2V0UGVyZm9ybWFuY2VFbnRyaWVzKCk6IFByb21pc2U8UGVyZm9ybWFuY2VFbnRyeVtdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoXG4gICAgICBJbnZva2VNZXRob2QuUmVxdWVzdFBlcmZvcm1hbmNlRW50cmllcyxcbiAgICAgIFtdLFxuICAgICAge1xuICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgZGlzY29ubmVjdCgpIHtcbiAgICB0aGlzLnNsYXNoTWVudUNhbGxiYWNrcy5jbGVhcigpXG4gICAgdGhpcy5lZGl0b3JGYWNhZGVDYWxsYmFja3MuY2xlYXIoKVxuICAgIGlmICh0aGlzLmVsZW1lbnQ/LnBhcmVudEVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KVxuICAgIH1cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUhhbmRsZXIpXG4gICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkge1xuICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yid5aeL5YyWIFNES++8jOi/lOWbniBQcm9taXNl77yM5b2TIFJlYWRTdGF0ZSDlj5jkuLogUmVhZHkg5oiWIEZhaWxlZCDml7bvvIxQcm9taXNlIOWwhuiiqyByZXNvbHZl44CCXG4gICAqIFByb21pc2UgcmVzb3ZsZWQg5LiN5Luj6KGo57yW6L6R5Zmo5bey57uP5a6M5pW05Yqg6L295a6M5q+V77yM5Y+q5Luj6KGoIFNESyDlt7Lnu4/lh4blpIflpb3kuobjgIJcbiAgICog5ZCM5pe2IFByb21pc2Ug5LiA55u0IHBlbmRpbmcg5Lmf5LiN5Luj6KGo57yW6L6R5Zmo5Yqg6L295aSx6LSl77yM5Y+q5Luj6KGo5peg5rOV6YCa6L+HIFNESyDlkoznvJbovpHlmajkuqTkupLjgIJcbiAgICog5q+U5aaC5Y+X5rWP6KeI5Zmo6ZmQ5Yi25peg5rOV5Y+R5Ye6IHBvc3RNZXNzYWdlKCkg5pe277yMUHJvbWlzZSDlsIbkvJrkuIDnm7QgcGVuZGluZ+OAglxuICAgKi9cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZHlTdGF0ZSAhPT0gUmVhZHlTdGF0ZS5Mb2FkaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZS5Mb2FkaW5nRWRpdG9yXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm1lc3NhZ2VIYW5kbGVyKVxuICAgIH1cblxuICAgIHRoaXMuZWxlbWVudCA9IGF3YWl0IHRoaXMuaW5pdElmcmFtZSgpXG5cbiAgICB0aGlzLmNvbm5lY3RPcHRpb25zLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQpXG4gICAgYXdhaXQgdGhpcy5ydW5QcmVsb2FkSGFuZHNoYWtlKClcblxuICAgIHRoaXMuZWRpdG9yID0gdGhpcy5pbml0RWRpdG9yKClcblxuICAgIC8qKlxuICAgICAqIOetieW+hee8lui+keWZqCBSZWFkeVN0YXRlIOWPmOWMluWbnuiwg1xuICAgICAqL1xuICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGxldCBkb25lID0gZmFsc2VcbiAgICAgIGNvbnN0IHJlYWR5U3RhdGVIYW5kbGVyID0gKHBheWxvYWQ6IFJlYWR5U3RhdGVFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlLCBlcnJvciwgZmlsZVR5cGUgfSA9IHBheWxvYWRcblxuICAgICAgICB0aGlzLl9yZWFkeVN0YXRlID0gc3RhdGVcblxuICAgICAgICBpZiAoZmlsZVR5cGUgJiYgdGhpcy5fZmlsZVR5cGUgPT09IEZpbGVUeXBlLlVua25vd24pIHtcbiAgICAgICAgICB0aGlzLl9maWxlVHlwZSA9IGZpbGVUeXBlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICAgIHJlamVjdCh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gbmV3IEVycm9yKGVycm9yKSA6IGVycm9yKVxuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSBSZWFkeVN0YXRlLlJlYWR5KSB7XG4gICAgICAgICAgZG9uZSA9IHRydWVcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgdGhpcy5vZmYoRXZlbnQuUmVhZHlTdGF0ZSwgcmVhZHlTdGF0ZUhhbmRsZXIpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5vbihFdmVudC5SZWFkeVN0YXRlLCByZWFkeVN0YXRlSGFuZGxlcilcbiAgICB9KVxuXG4gICAgc3dpdGNoICh0aGlzLmZpbGVUeXBlKSB7XG4gICAgICBjYXNlIEZpbGVUeXBlLkRvY3VtZW50OlxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5lZGl0b3IgYXMgRG9jdW1lbnQuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkRvY3VtZW50UHJvOlxuICAgICAgICB0aGlzLmRvY3VtZW50UHJvID0gdGhpcy5lZGl0b3IgYXMgRG9jdW1lbnRQcm8uRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLlNwcmVhZHNoZWV0OlxuICAgICAgICB0aGlzLnNwcmVhZHNoZWV0ID0gdGhpcy5lZGl0b3IgYXMgU3ByZWFkc2hlZXQuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLlRhYmxlOlxuICAgICAgICB0aGlzLnRhYmxlID0gdGhpcy5lZGl0b3IgYXMgVGFibGUuRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkZvcm06XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZWRpdG9yIGFzIEZvcm0uRWRpdG9yXG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIEZpbGVUeXBlLkZsb3djaGFydDpcbiAgICAgICAgdGhpcy5mbG93Y2hhcnQgPSB0aGlzLmVkaXRvciBhcyBGbG93Y2hhcnQuRWRpdG9yXG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YWxsUm9vdEZhY2FkZSgpXG4gIH1cblxuICAvKipcbiAgICog562J5b6FIFNESyDov5vlhaUgUmVhZHkg54q25oCB44CC6Iul5beyIHJlYWR577yM5YiZ55u05o6l6L+U5Zue44CCXG4gICAqL1xuICBhc3luYyByZWFkeSgpIHtcbiAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09PSBSZWFkeVN0YXRlLlJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXdhaXQgdGhpcy5pbml0KClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdElmcmFtZSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb25uZWN0T3B0aW9uc1xuXG4gICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJylcbiAgICBpZnJhbWUuc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gICAgaWZyYW1lLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcbiAgICBpZnJhbWUuc3R5bGUud2lkdGggPSAnMTAwJSdcbiAgICBpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnXG4gICAgLy8g6Kej5Yaz6aG16Z2i5Ye6546w5rua5Yqo5p2hICYg6aG26YOo6KKr5oiq5pat55qE6Zeu6aKYXG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG5cbiAgICBpZiAoJ2FsbG93JyBpbiBpZnJhbWUpIHtcbiAgICAgIGlmcmFtZS5hbGxvdyA9XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuYWxsb3dQb2xpY3kgPz9cbiAgICAgICAgJ2Z1bGxzY3JlZW4gKjtjbGlwYm9hcmQtcmVhZCAqO2NsaXBib2FyZC13cml0ZSAqOydcbiAgICB9IGVsc2Uge1xuICAgICAgOyhpZnJhbWUgYXMgYW55KS5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5lbmRwb2ludFxuICAgIHVybC5wYXRobmFtZSA9IGAke3VybC5wYXRobmFtZX0vYXBpLyR7YXNzZXJ0PHN0cmluZz4oXG4gICAgICBvcHRpb25zLmZpbGVJZCxcbiAgICAgIG5vdEVtcHR5U3RyaW5nLFxuICAgICAgYFwiZmlsZUlkXCIgaXMgbWlzc2luZyBvciBlbXB0eTogJHtvcHRpb25zLmZpbGVJZH1gXG4gICAgKX0vcHJlbG9hZGAucmVwbGFjZSgvXFwvKy9nLCAnLycpXG5cbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtc1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KGtleSwgcGFyYW1zW2tleV0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXZpY2VNb2RlID09PSAnc3RyaW5nJykge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2RldmljZU1vZGUnLCBvcHRpb25zLmRldmljZU1vZGUudHJpbSgpKVxuICAgIH1cblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFNNX1BBUkFNU19LRVksIHRoaXMuc3RhcnRQYXJhbXMudG9TdHJpbmcoKSlcblxuICAgIGlmIChvcHRpb25zLnNob3dMb2FkaW5nRWZmZWN0IHx8IG9wdGlvbnMuc2hvd0xvYWRpbmcpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdsb2FkaW5nRWZmZWN0JywgJ3RydWUnKVxuICAgICAgaWYgKG9wdGlvbnMubG9hZGluZ09wdGlvbnMpIHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgICAgTE9BRElOR19PUFRJT05TX0tFWSxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcHRpb25zLmxvYWRpbmdPcHRpb25zKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6K6+572u5b2T5YmN57yW6L6R5Zmo6K+t6KiAXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmxhbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkTGFuZyA9IG5vcm1hbGl6ZUxhbmd1YWdlKG9wdGlvbnMubGFuZylcbiAgICAgIGlmIChub3JtYWxpemVkTGFuZykge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbGFuZycsIG5vcm1hbGl6ZWRMYW5nKVxuICAgICAgfVxuICAgIH1cblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdqc3ZlcicsIHByb2Nlc3MuZW52LlZFUlNJT04gPz8gJycpXG5cbiAgICBhc3NlcnQ8c3RyaW5nPihcbiAgICAgIG9wdGlvbnMudG9rZW4sXG4gICAgICBub3RFbXB0eVN0cmluZyxcbiAgICAgIGBcInRva2VuXCIgaXMgbWlzc2luZyBvciBlbXB0eTogXCIke29wdGlvbnMudG9rZW59XCJgXG4gICAgKVxuXG4gICAgYXNzZXJ0PHN0cmluZz4oXG4gICAgICBvcHRpb25zLnNpZ25hdHVyZSxcbiAgICAgIG5vdEVtcHR5U3RyaW5nLFxuICAgICAgYFwic2lnbmF0dXJlXCIgaXMgbWlzc2luZyBvciBlbXB0eTogXCIke29wdGlvbnMuc2lnbmF0dXJlfVwiYFxuICAgIClcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndXVpZCcsIHRoaXMudXVpZClcbiAgICB0aGlzLnVzZXJVdWlkICYmIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd1c2VyVXVpZCcsIHRoaXMudXNlclV1aWQpXG5cbiAgICBpZnJhbWUuc3JjID0gdXJsLnRvU3RyaW5nKClcblxuICAgIHJldHVybiBpZnJhbWVcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuUHJlbG9hZEhhbmRzaGFrZSgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29ubmVjdE9wdGlvbnMudG9rZW5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmNvbm5lY3RPcHRpb25zLnNpZ25hdHVyZVxuICAgIGNvbnN0IGZpbGVHdWlkID0gdGhpcy5jb25uZWN0T3B0aW9ucy5maWxlSWRcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB1dWlkKClcblxuICAgIHR5cGUgUHJlbG9hZE1lc3NhZ2UgPSB7XG4gICAgICB0eXBlPzogc3RyaW5nXG4gICAgICByZXF1ZXN0SWQ/OiBzdHJpbmdcbiAgICAgIHBheWxvYWQ/OiB7XG4gICAgICAgIHRva2VuPzogc3RyaW5nXG4gICAgICAgIHNpZ25hdHVyZT86IHN0cmluZ1xuICAgICAgICBmaWxlR3VpZD86IHN0cmluZ1xuICAgICAgICBtb2RlPzogJ2VkaXQnIHwgJ3ByZXZpZXcnXG4gICAgICB9XG4gICAgICBlcnJvcj86IHtcbiAgICAgICAgY29kZT86IHN0cmluZ1xuICAgICAgICBtZXNzYWdlPzogc3RyaW5nXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJlYWR5UmVzb2x2ZWQgPSBmYWxzZVxuICAgIGxldCBhY2tSZXNvbHZlZCA9IGZhbHNlXG4gICAgbGV0IGRvbmVSZXNvbHZlZCA9IGZhbHNlXG4gICAgbGV0IGFja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG4gICAgbGV0IGRvbmVUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbFxuXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgY2xlYW51cCA9ICgpID0+IHtcbiAgICAgICAgaWYgKGFja1RpbWVyKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGFja1RpbWVyKVxuICAgICAgICAgIGFja1RpbWVyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIGlmIChkb25lVGltZXIpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoZG9uZVRpbWVyKVxuICAgICAgICAgIGRvbmVUaW1lciA9IG51bGxcbiAgICAgICAgfVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZU1lc3NhZ2UpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNlbmRJbml0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmVsZW1lbnQ/LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IFBSRUxPQURfTUVTU0FHRV9UWVBFLklOSVQsXG4gICAgICAgICAgICByZXF1ZXN0SWQsXG4gICAgICAgICAgICB0czogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgIHNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgZmlsZUd1aWQsXG4gICAgICAgICAgICAgIG1vZGU6IHRoaXMuY29ubmVjdE9wdGlvbnMubW9kZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJyonXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGFuZGxlTWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhIGFzIFByZWxvYWRNZXNzYWdlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAhZGF0YSB8fFxuICAgICAgICAgIHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JyB8fFxuICAgICAgICAgIHR5cGVvZiBkYXRhLnR5cGUgIT09ICdzdHJpbmcnXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuUkVBRFkgJiYgIXJlYWR5UmVzb2x2ZWQpIHtcbiAgICAgICAgICByZWFkeVJlc29sdmVkID0gdHJ1ZVxuICAgICAgICAgIHNlbmRJbml0KClcbiAgICAgICAgICBhY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2VuZEluaXQoKVxuICAgICAgICAgICAgZG9uZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdwcmVsb2FkIGluaXQgdGltZW91dCcpKVxuICAgICAgICAgICAgfSwgdGhpcy5wcmVsb2FkRG9uZVRpbWVvdXRNcylcbiAgICAgICAgICB9LCB0aGlzLnByZWxvYWRBY2tUaW1lb3V0TXMpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS5yZXF1ZXN0SWQgIT09IHJlcXVlc3RJZCkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuQUNLKSB7XG4gICAgICAgICAgYWNrUmVzb2x2ZWQgPSB0cnVlXG4gICAgICAgICAgaWYgKGFja1RpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoYWNrVGltZXIpXG4gICAgICAgICAgICBhY2tUaW1lciA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFkb25lVGltZXIpIHtcbiAgICAgICAgICAgIGRvbmVUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigncHJlbG9hZCBkb25lIHRpbWVvdXQnKSlcbiAgICAgICAgICAgIH0sIHRoaXMucHJlbG9hZERvbmVUaW1lb3V0TXMpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuRE9ORSkge1xuICAgICAgICAgIGRvbmVSZXNvbHZlZCA9IHRydWVcbiAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICByZXNvbHZlKClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnR5cGUgPT09IFBSRUxPQURfTUVTU0FHRV9UWVBFLkVSUk9SKSB7XG4gICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBkYXRhLmVycm9yPy5tZXNzYWdlIHx8IGRhdGEuZXJyb3I/LmNvZGUgfHwgJ3ByZWxvYWQgaW5pdCBmYWlsZWQnXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghcmVhZHlSZXNvbHZlZCAmJiAhYWNrUmVzb2x2ZWQgJiYgIWRvbmVSZXNvbHZlZCkge1xuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3ByZWxvYWQgcmVhZHkgdGltZW91dCcpKVxuICAgICAgICB9XG4gICAgICB9LCB0aGlzLnByZWxvYWRSZWFkeVRpbWVvdXRNcylcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2hhbm5lbCgpIHtcbiAgICBjb25zdCBjaGFubmVsID0gKHRoaXMuY2hhbm5lbCA9IG5ldyBPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsKHtcbiAgICAgIGNoYW5uZWxJZDogdGhpcy5zdGFydFBhcmFtcy5jaGFubmVsSWQsXG4gICAgICBkZWJ1ZzogdGhpcy5jb25uZWN0T3B0aW9ucy5kZWJ1ZyxcbiAgICAgIGF1dG9TdHJ1Y3R1cmVkQ2xvbmU6IHRydWUsXG4gICAgICBkZWJ1Z05hbWVzcGFjZTogJ1NNX1NES19DSEFOJ1xuICAgIH0pKVxuXG4gICAgaWYgKCF0aGlzLnN0YXJ0UGFyYW1zLmNoYW5uZWxJZCkge1xuICAgICAgdGhpcy5zdGFydFBhcmFtcy5jaGFubmVsSWQgPSBjaGFubmVsLmlkXG4gICAgfVxuXG4gICAgY2hhbm5lbC5vbignZXJyb3InLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9KVxuXG4gICAgY2hhbm5lbC5vbignbWVzc2FnZUVycm9yJywgKGVycjogRXJyb3IpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpXG4gICAgfSlcblxuICAgIC8qKlxuICAgICAqIOmdniBzYW1lIG9yaWdpbiDml7bvvIznlKjkuI3kuoYgYnJvYWRjYXN0IGNoYW5uZWzvvIzpnIDopoHlnKggcG9zdE1lc3NhZ2Ug5pe277yM5bCG5raI5oGv6L2s5YiwIGlmcmFtZVxuICAgICAqL1xuICAgIGlmICghdGhpcy5zYW1lT3JpZ2luKSB7XG4gICAgICBjaGFubmVsLm9uKFxuICAgICAgICAncG9zdE1lc3NhZ2UnLFxuICAgICAgICAoZXZ0OiBPZmZpY2VTREtNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICB0aGlzLmVsZW1lbnQ/LmNvbnRlbnRXaW5kb3c/LnBvc3RNZXNzYWdlKGV2dCwgJyonKVxuICAgICAgICB9LFxuICAgICAgICB7IGF1ZGllbmNlOiAnKicgfVxuICAgICAgKVxuICAgIH1cblxuICAgIGNoYW5uZWwub24oXG4gICAgICAnbWVzc2FnZScsXG4gICAgICAobXNnOiBPZmZpY2VTREtNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IG1zZy5kYXRhIGFzIGFueVxuICAgICAgICAvKipcbiAgICAgICAgICog55uR5ZCsIFJlYWR5U3RhdGUg5Y+Y5pu0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZGF0YT8uZXZlbnQgPT09IEludm9rZU1ldGhvZC5SZWFkeVN0YXRlKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KEV2ZW50LlJlYWR5U3RhdGUsIGRhdGEucGF5bG9hZClcbiAgICAgICAgfSBlbHNlIGlmIChkYXRhPy5ldmVudCA9PT0gRURJVE9SX1JFTkRFUkVEX0VWRU5UKSB7XG4gICAgICAgICAgdGhpcy5lbWl0KEV2ZW50LkVkaXRvclJlbmRlcmVkLCBkYXRhLnBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIC8qKlxuICAgICAqIOWkhOeQhumUmeivr+S6i+S7tlxuICAgICAqL1xuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIEludm9rZU1ldGhvZC5FcnJvcixcbiAgICAgIChwYXlsb2FkOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChFdmVudC5FcnJvciwgcGF5bG9hZClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIC8qKlxuICAgICAqIOWIneWni+WMlue8lui+keWZqO+8jOivt+axgumFjee9rlxuICAgICAqL1xuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIEludm9rZU1ldGhvZC5TREtJbml0LFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBvcHRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5jb25uZWN0T3B0aW9ucykuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgIGlmIChrID09PSAnc2xhc2hNZW51Jykge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLmNvbm5lY3RPcHRpb25zW2sgYXMga2V5b2YgdHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnNdXG4gICAgICAgICAgb3B0c1trXSA9IHZcbiAgICAgICAgICAvLyDlh73mlbDnlKggYm9vbGVhbiDmoIforrDmnInorr7nva7lgLxcbiAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIG9wdHNbYGhhcyR7a1swXS50b1VwcGVyQ2FzZSgpfSR7ay5zbGljZSgxKX1gXSA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2xhc2hNZW51ID0gdGhpcy5jcmVhdGVTZXJpYWxpemVkU2xhc2hNZW51KClcbiAgICAgICAgaWYgKHNsYXNoTWVudSkge1xuICAgICAgICAgIG9wdHMuc2xhc2hNZW51ID0gc2xhc2hNZW51XG4gICAgICAgIH1cblxuICAgICAgICBvcHRzLmFwaUFkYXB0b3IgPSB0aGlzLmFwaUFkYXB0b3JcbiAgICAgICAgb3B0cy5hcGlBZGFwdG9yQ29udGV4dCA9IHRoaXMuYXBpQWRhcHRvckNvbnRleHRcbiAgICAgICAgLy8g5b2S5LiA5YyW5ZCO55qE57y655yB6aG16YWN572u44CCaWZyYW1lIOS+p++8iGxpemFyZC1zZXJ2aWNlLWlmcmFtZS1zZGvvvInnm7TmjqXmtojotLnvvIxcbiAgICAgICAgLy8g5LiN6ZyA6KaB5YaNIGZhbGxiYWNrIOm7mOiupOWAvOOAguacquadpeWmgumcgOaJqeWxleWtl+aute+8jOWcqCBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zIOWGhee7n+S4gOWkhOeQhuOAglxuICAgICAgICBvcHRzLmVtcHR5UGFnZSA9IHRoaXMubm9ybWFsaXplZEVtcHR5UGFnZVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICB1dWlkOiB0aGlzLnV1aWRcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog55uR5ZCsIFNESyDnm7jlhbPnmoTkuovku7bvvIzlsIbkuovku7bovazlhaUgU0RLIOS6i+S7tuebkeWQrOWZqFxuICAgICAqL1xuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIEludm9rZU1ldGhvZC5EaXNwYXRjaFNES0V2ZW50LFxuICAgICAgYXN5bmMgKGV2ZW50OiBzdHJpbmcsIGFyZ3M6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgPT09IEhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQpIHtcbiAgICAgICAgICB0aGlzLmFwcGx5SGVhZGVyQmFyc0NoYW5nZWQoYXJnc1swXSBhcyBIZWFkZXJCYXJzQ2hhbmdlZFBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50ID09PSBCUkFORElOR19DSEFOR0VEX0VWRU5UKSB7XG4gICAgICAgICAgdGhpcy5hcHBseUJyYW5kaW5nQ2hhbmdlZChhcmdzWzBdIGFzIEJyYW5kaW5nQ2hhbmdlZFBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0KGV2ZW50LCAuLi5hcmdzKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELmhhbmRsZUNvbW1hbmRDbGljayxcbiAgICAgIGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLmhlYWRlckJhcnNDb21tYW5kT3ZlcnJpZGVzLmdldChpZClcbiAgICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgaGFuZGxlcigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBTTEFTSF9NRU5VX01FVEhPRC5oYW5kbGVCdXR0b25DbGljayxcbiAgICAgIGFzeW5jIChjYWxsYmFja0lkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuc2xhc2hNZW51Q2FsbGJhY2tzLmdldChjYWxsYmFja0lkKVxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBbc2xhc2hNZW51XSBjYWxsYmFjayBub3QgZm91bmQ6ICR7U3RyaW5nKGNhbGxiYWNrSWQpfWApXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIoKSlcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIEVESVRPUl9GQUNBREVfQ0FMTEJBQ0tfTUVUSE9ELFxuICAgICAgYXN5bmMgKGNhbGxiYWNrSWQ6IHN0cmluZywgYXJnczogdW5rbm93bltdID0gW10pID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuZWRpdG9yRmFjYWRlQ2FsbGJhY2tzLmdldChjYWxsYmFja0lkKVxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYFtlZGl0b3JGYWNhZGVdIGNhbGxiYWNrIG5vdCBmb3VuZDogJHtTdHJpbmcoY2FsbGJhY2tJZCl9YFxuICAgICAgICAgIClcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShoYW5kbGVyKC4uLmFyZ3MpKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog55uR5ZCs57yW6L6R5Zmo55u45YWz55qE5LqL5Lu277yM5bCG5LqL5Lu26L2s5YWl57yW6L6R5Zmo5LqL5Lu255uR5ZCs5ZmoXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkRpc3BhdGNoRWRpdG9yRXZlbnQsXG4gICAgICBhc3luYyAoZXZlbnQ6IHN0cmluZywgcGF5bG9hZDogdW5rbm93bikgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgPT09ICdjb2xsYWJvcmF0b3JzQ2hhbmdlZCcpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNvbGxhYm9yYXRvcnMocGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICAvLyDnvLrnnIHpobXkuovku7bmmK8gU0RLIOe6p+S6i+S7tu+8jOWNs+S9v+i1sOS6hiBlZGl0b3Ig6YCa6YGT5Lmf55u05o6l5aSW5oqb5YiwIFNESyDlrp7kvovvvIxcbiAgICAgICAgLy8g5pa55L6/5a6/5Li76YCa6L+HIGBzZGsub24oJ2VtcHR5UGFnZVNob3duJywgLi4uKWAg6K6i6ZiF44CCXG4gICAgICAgIC8vIOWQjOaXtuS7jeS/neeVmSBlbWl0dGVyLmVtaXTvvIzpgb/lhY3noLTlnY8gZWRpdG9yLm9uIOeahOiuoumYhei3r+W+hOOAglxuICAgICAgICBpZiAoaXNFbXB0eVBhZ2VFdmVudChldmVudCkpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIHBheWxvYWQpXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0dGVyLmVtaXQoZXZlbnQsIHBheWxvYWQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICB0aGlzLmJpbmRDb250YWluZXJNZXRob2RIYW5kbGVycygpXG5cbiAgICBpZiAod2luZG93LnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgICB3aW5kb3cudmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblZpZXdwb3J0UmVzaXplKVxuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vblZpZXdwb3J0UmVzaXplKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDliJ3lp4vljJblpITnkIbnvJbovpHlmajpnIDopoHlrrnlmajov5Tlm57mlbDmja7nmoTmlrnms5VcbiAgICovXG4gIHByaXZhdGUgYmluZENvbnRhaW5lck1ldGhvZEhhbmRsZXJzKCkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSB0aGlzLmNoYW5uZWxcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5HZW5lcmF0ZVVybCxcbiAgICAgIGFzeW5jIChcbiAgICAgICAgZmlsZUlkOiBzdHJpbmcsXG4gICAgICAgIGluZm8/OiBHZW5lcmF0ZVVybEluZm8sXG4gICAgICAgIHNtUGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PlxuICAgICAgKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5nZW5lcmF0ZVVybCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCIke0NvbnRhaW5lck1ldGhvZC5HZW5lcmF0ZVVybH1cIiBub3QgZm91bmRgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5nZW5lcmF0ZVVybChmaWxlSWQsIGluZm8sIHNtUGFyYW1zKVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuSGFuZGxlQ3VzdG9tVGFzayxcbiAgICAgIGFzeW5jICh0YXNrSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMuaGFuZGxlQ3VzdG9tVGFzayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCIke0NvbnRhaW5lck1ldGhvZC5IYW5kbGVDdXN0b21UYXNrfVwiIG5vdCBmb3VuZGApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLmhhbmRsZUN1c3RvbVRhc2sodGFza0lkKVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuT3BlbkxpbmssXG4gICAgICBhc3luYyAodXJsOiBzdHJpbmcsIHRhcmdldD86IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMub3BlbkxpbmsgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFwiJHtDb250YWluZXJNZXRob2QuT3Blbkxpbmt9XCIgbm90IGZvdW5kYClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLm9wZW5MaW5rKHVybCwgdGFyZ2V0KVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkdldEZpbGVJbmZvRnJvbVVybCxcbiAgICAgIGFzeW5jICh1cmw6IHN0cmluZykgPT4ge1xuICAgICAgICAvLyAyMDI0MDYwNyDpkp/nq4vlkozljaLpmLPmlLnkuoYgc2RrLWlmcmFtZS1hc3NldHMg55qEIHBhcnNlVXJsIOWHveaVsOS5i+WQju+8jGdldEZpbGVJbmZvRnJvbVVybCDnjrDlnKjlv4XpobvnlLHnlKjmiLfmj5DkvptcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLmdldEZpbGVJbmZvRnJvbVVybCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBcIiR7Q29udGFpbmVyTWV0aG9kLkdldEZpbGVJbmZvRnJvbVVybH1cIiBub3QgYSBmdW5jdGlvbmBcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29ubmVjdE9wdGlvbnMuZ2V0RmlsZUluZm9Gcm9tVXJsKHVybClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5NZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlLFxuICAgICAgYXN5bmMgKHBheWxvYWQ6IE1vdXNlTW92ZVBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUgIT09ICdmdW5jdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFwiJHtDb250YWluZXJNZXRob2QuTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZX1cIiBub3QgZm91bmRgXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAnb2JqZWN0JyAmJiBwYXlsb2FkICE9IG51bGwpIHtcbiAgICAgICAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICAgICAgcGF5bG9hZC54ICs9IHJlY3QueFxuICAgICAgICAgIHBheWxvYWQueSArPSByZWN0LnlcblxuICAgICAgICAgIGlmIChwYXlsb2FkLmlzTWVudGlvbikge1xuICAgICAgICAgICAgcGF5bG9hZC5tZW50aW9uSW5mby5sZWZ0ICs9IHJlY3QueFxuICAgICAgICAgICAgcGF5bG9hZC5tZW50aW9uSW5mby50b3AgKz0gcmVjdC55XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMubWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZShwYXlsb2FkKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkdldENvbnRhaW5lclJlY3QsXG4gICAgICBhc3luYyAoKSA9PiB0aGlzLmdldENvbnRhaW5lclJlY3QoKSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5TaG93VG9hc3QsXG4gICAgICBhc3luYyAob3B0aW9uczogU2hvd1RvYXN0T3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLnNob3dUb2FzdD8uKG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkdldENyZWRlbnRpYWxzLFxuICAgICAgYXN5bmMgKCkgPT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0T3B0aW9ucy5nZXRDcmVkZW50aWFscz8uKClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEhlYWRlckJhcnNGYWNhZGUoKTogSGVhZGVyQmFyc0ZhY2FkZSB7XG4gICAgcmV0dXJuIGluaXRIZWFkZXJCYXJzRmFjYWRlKHtcbiAgICAgIGdldFZpc2libGVTdGF0ZTogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSxcbiAgICAgIHNldFZpc2libGVTdGF0ZTogKHZpc2libGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSA9IHZpc2libGVcbiAgICAgIH0sXG4gICAgICBnZXRDb21tYW5kc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZHMsXG4gICAgICBnZXRPdmVycmlkZXNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMsXG4gICAgICBnZXRSZWZzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kUmVmcyxcbiAgICAgIGdldFRpdGxlSGFuZGxlcjogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyLFxuICAgICAgc2V0VGl0bGVIYW5kbGVyOiAoaGFuZGxlcjogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgPSBoYW5kbGVyXG4gICAgICB9LFxuICAgICAgaXNUaXRsZVN1YnNjcmliZWQ6ICgpID0+IHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaWJlZCxcbiAgICAgIHNldFRpdGxlU3Vic2NyaWJlZDogKHN1YnNjcmliZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkID0gc3Vic2NyaWJlZFxuICAgICAgfSxcbiAgICAgIGludm9rZUhlYWRlckJhcnM6IHRoaXMuaW52b2tlSGVhZGVyQmFycy5iaW5kKHRoaXMpLFxuICAgICAgZW1pdEhlYWRlckJhcnNFcnJvcjogKG1lc3NhZ2U6IHN0cmluZywgZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihgJHttZXNzYWdlfTogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25JbnRlcm5hbFRpdGxlQ2hhbmdlOiAobGlzdGVuZXI6ICh0aXRsZTogdW5rbm93bikgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXR0ZXIub24oJ3RpdGxlQ2hhbmdlJywgbGlzdGVuZXIpXG4gICAgICB9LFxuICAgICAgc3Vic2NyaWJlRWRpdG9yVGl0bGVDaGFuZ2U6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgICAgICBJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsXG4gICAgICAgICAgWyd0aXRsZUNoYW5nZSddLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0QnJhbmRpbmdGYWNhZGUoKTogQnJhbmRpbmdGYWNhZGUge1xuICAgIHJldHVybiBpbml0QnJhbmRpbmdGYWNhZGUodGhpcy5jcmVhdGVCcmFuZGluZ0hvc3QoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiDorqLpmIUgaWZyYW1lIOS+pyB0aXRsZUNoYW5nZSDkuovku7bvvIzlubblnKjlrr/kuLvorr7nva7kuoYgaGVhZGVyQmFycy5vblRpdGxlQ2hhbmdlIOaXtui9rOWPkeagh+mimOWAvOOAglxuICAgKiDovpPlhaXvvJrml6DjgIJcbiAgICog6L6T5Ye677ya55uR5ZCs5bu656uL5oiQ5Yqf5ZCO6L+U5ZueIFByb21pc2U8dm9pZD7vvJvph43lpI3osIPnlKjlj6rkvJrorqLpmIXkuIDmrKHjgIJcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZW5zdXJlSGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaXB0aW9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbih0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGludm9rZUhlYWRlckJhcnM8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgcGF5bG9hZD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGFyZ3MgPSBwYXlsb2FkID09PSB1bmRlZmluZWQgPyBbXSA6IFtwYXlsb2FkXVxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKG1ldGhvZCBhcyBhbnksIGFyZ3MsIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbnZva2VCcmFuZGluZzxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBwYXlsb2FkPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgYXJncyA9IHBheWxvYWQgPT09IHVuZGVmaW5lZCA/IFtdIDogW3BheWxvYWRdXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UobWV0aG9kIGFzIGFueSwgYXJncywge1xuICAgICAgYXVkaWVuY2U6IEFVRFxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoY29tbWFuZHM6IEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXSkge1xuICAgIHN5bmNIZWFkZXJCYXJzQ29tbWFuZHModGhpcy5jcmVhdGVIZWFkZXJCYXJzSG9zdCgpLCBjb21tYW5kcylcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFZpc2libGVTdGF0ZTogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSxcbiAgICAgIHNldFZpc2libGVTdGF0ZTogKHZpc2libGU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJCYXJzVmlzaWJsZSA9IHZpc2libGVcbiAgICAgIH0sXG4gICAgICBnZXRDb21tYW5kc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZHMsXG4gICAgICBnZXRPdmVycmlkZXNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMsXG4gICAgICBnZXRSZWZzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kUmVmcyxcbiAgICAgIGdldFRpdGxlSGFuZGxlcjogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyLFxuICAgICAgc2V0VGl0bGVIYW5kbGVyOiAoaGFuZGxlcjogSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIgPSBoYW5kbGVyXG4gICAgICB9LFxuICAgICAgaXNUaXRsZVN1YnNjcmliZWQ6ICgpID0+IHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaWJlZCxcbiAgICAgIHNldFRpdGxlU3Vic2NyaWJlZDogKHN1YnNjcmliZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkID0gc3Vic2NyaWJlZFxuICAgICAgfSxcbiAgICAgIGludm9rZUhlYWRlckJhcnM6IHRoaXMuaW52b2tlSGVhZGVyQmFycy5iaW5kKHRoaXMpLFxuICAgICAgZW1pdEhlYWRlckJhcnNFcnJvcjogKG1lc3NhZ2U6IHN0cmluZywgZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihgJHttZXNzYWdlfTogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25JbnRlcm5hbFRpdGxlQ2hhbmdlOiAobGlzdGVuZXI6ICh0aXRsZTogdW5rbm93bikgPT4gdm9pZCkgPT4ge1xuICAgICAgICB0aGlzLmVtaXR0ZXIub24oJ3RpdGxlQ2hhbmdlJywgbGlzdGVuZXIpXG4gICAgICB9LFxuICAgICAgc3Vic2NyaWJlRWRpdG9yVGl0bGVDaGFuZ2U6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgICAgICBJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsXG4gICAgICAgICAgWyd0aXRsZUNoYW5nZSddLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUJyYW5kaW5nSG9zdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0RWRpdG9yRm9vdGVyTG9nb1N0YXRlOiAoKSA9PiB0aGlzLmVkaXRvckZvb3RlckxvZ28sXG4gICAgICBzZXRFZGl0b3JGb290ZXJMb2dvU3RhdGU6IChjb25maWc6IFNES0JyYW5kQ29uZmlnIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yRm9vdGVyTG9nbyA9IGNvbmZpZ1xuICAgICAgfSxcbiAgICAgIGludm9rZUJyYW5kaW5nOiB0aGlzLmludm9rZUJyYW5kaW5nLmJpbmQodGhpcyksXG4gICAgICBlbWl0QnJhbmRpbmdFcnJvcjogKG1lc3NhZ2U6IHN0cmluZywgZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihgJHttZXNzYWdlfTogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUhlYWRlckJhcnNDaGFuZ2VkKHBheWxvYWQ/OiBIZWFkZXJCYXJzQ2hhbmdlZFBheWxvYWQpIHtcbiAgICBhcHBseUhlYWRlckJhcnNDaGFuZ2VkKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSwgcGF5bG9hZClcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlCcmFuZGluZ0NoYW5nZWQocGF5bG9hZD86IEJyYW5kaW5nQ2hhbmdlZFBheWxvYWQpIHtcbiAgICBhcHBseUJyYW5kaW5nQ2hhbmdlZCh0aGlzLmNyZWF0ZUJyYW5kaW5nSG9zdCgpLCBwYXlsb2FkKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzeW5jSGVhZGVyQmFyc1Zpc2libGUoKSB7XG4gICAgcmV0dXJuIGF3YWl0IHN5bmNIZWFkZXJCYXJzVmlzaWJsZSh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldEhlYWRlckJhcnNWaXNpYmxlKHZpc2libGU6IGJvb2xlYW4pIHtcbiAgICBhd2FpdCBzZXRIZWFkZXJCYXJzVmlzaWJsZSh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCksIHZpc2libGUpXG4gIH1cblxuICBwcml2YXRlIGdldEhlYWRlckJhcnNDb21tYW5kUmVmKGlkOiBzdHJpbmcpOiBIZWFkZXJCYXJzQ29tbWFuZFJlZiB7XG4gICAgcmV0dXJuIGdldEhlYWRlckJhcnNDb21tYW5kUmVmKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSwgaWQpXG4gIH1cblxuICAvKipcbiAgICog5rOo5YaM5LiA5Liq5Y+v5L6bIGlmcmFtZSDkvqflj43lkJHosIPnlKjnmoQgZmFjYWRlIGNhbGxiYWNr44CCXG4gICAqIOi+k+WFpe+8muWuv+S4u+S+pyBjYWxsYmFja+OAglxuICAgKiDovpPlh7rvvJrkvpvot6jnqpfljY/orq7kvb/nlKjnmoQgY2FsbGJhY2tJZOOAglxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrOiBFZGl0b3JGYWNhZGVDYWxsYmFjaykge1xuICAgIGNvbnN0IGNhbGxiYWNrSWQgPSBgZWRpdG9yLWZhY2FkZToke3V1aWQoKX1gXG4gICAgdGhpcy5lZGl0b3JGYWNhZGVDYWxsYmFja3Muc2V0KGNhbGxiYWNrSWQsIGNhbGxiYWNrKVxuICAgIHJldHVybiBjYWxsYmFja0lkXG4gIH1cblxuICAvKipcbiAgICog5rOo6ZSA5bey5rOo5YaM55qEIGZhY2FkZSBjYWxsYmFja+OAglxuICAgKiDovpPlhaXvvJpjYWxsYmFja0lk44CCXG4gICAqIOi+k+WHuu+8muaXoOOAglxuICAgKi9cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2tJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5lZGl0b3JGYWNhZGVDYWxsYmFja3MuZGVsZXRlKGNhbGxiYWNrSWQpXG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65Z+65LqOIG1ldGhvZC1wYXRoIOeahOaooeWdlyBmYWNhZGXjgIJcbiAgICog6L6T5YWl77ya5qih5Z2X5YmN57yA5LiO5bCR6YeP6Ieq5a6a5LmJ5a6e546w6KaG55uW44CCXG4gICAqIOi+k+WHuu+8muWFtuS9meaWueazleaMiSBgJHtwcmVmaXh9LiR7bWV0aG9kfWAg6Ieq5Yqo5qGl5o6l44CCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBvdmVycmlkZXM6IFBhcnRpYWw8VD5cbiAgKTogVCB7XG4gICAgcmV0dXJuIG5ldyBQcm94eShvdmVycmlkZXMgYXMgVCwge1xuICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNraXBGYWNhZGVQcm94eVByb3AocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wIGFzIGtleW9mIFRdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzeW5jICguLi5hcmdzOiB1bmtub3duW10pID0+XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2VFZGl0b3JGYWNhZGUoYCR7cHJlZml4fS4ke3Byb3B9YCwgYXJncylcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOS4uiB2YWx1ZS1iYXNlZCBsb2NhdG9yIOWIm+W7uuacrOWcsOWvueixoSBmYWNhZGXjgIJcbiAgICog6L6T5YWl77yabWV0aG9kLXBhdGgg5YmN57yA44CBbG9jYXRvciDlkozpnZnmgIHlsZ7mgKfjgIJcbiAgICog6L6T5Ye677ya5pSv5oyB57un57ut6L+c56iL6LCD55So55qE5pys5ZywIGZhY2FkZeOAglxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxUIGV4dGVuZHMgb2JqZWN0PihcbiAgICBwcmVmaXg6IHN0cmluZyxcbiAgICBsb2NhdG9yOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBzdGF0aWNGaWVsZHM6IFBhcnRpYWw8VD5cbiAgKTogVCB7XG4gICAgcmV0dXJuIG5ldyBQcm94eShzdGF0aWNGaWVsZHMgYXMgVCwge1xuICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3VsZFNraXBGYWNhZGVQcm94eVByb3AocHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIHByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldFtwcm9wIGFzIGtleW9mIFRdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzeW5jICguLi5hcmdzOiB1bmtub3duW10pID0+XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2VFZGl0b3JGYWNhZGUoYCR7cHJlZml4fS4ke3Byb3B9YCwgW2xvY2F0b3IsIC4uLmFyZ3NdKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog5rOo5YaM5LiA5Liq5Z+65LqOIGNhbGxiYWNrIOWNj+iurueahCBsaXN0ZW5lcuOAglxuICAgKiDovpPlhaXvvJrms6jlhozmlrnms5XlkI3kuI7nm5HlkKzlmajjgIJcbiAgICog6L6T5Ye677ya5L6b5a6/5Li75L6n5Y+W5raI5rOo5YaM55qE5Ye95pWw44CCXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyRWRpdG9yRmFjYWRlTGlzdGVuZXI8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgbGlzdGVuZXI6IChwYXlsb2FkOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGNhbGxiYWNrSWQgPSB0aGlzLnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soYXN5bmMgKHBheWxvYWQ6IFQpID0+XG4gICAgICBsaXN0ZW5lcihwYXlsb2FkKVxuICAgIClcbiAgICB0aGlzLmludm9rZUVkaXRvckZhY2FkZShtZXRob2QsIFtjYWxsYmFja0lkXSkuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgdGhpcy5lbWl0KFxuICAgICAgICBFdmVudC5FcnJvcixcbiAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICA/IGVyclxuICAgICAgICAgIDogbmV3IEVycm9yKGByZWdpc3RlciBlZGl0b3IgZmFjYWRlIGxpc3RlbmVyIGZhaWxlZDogJHtTdHJpbmcoZXJyKX1gKVxuICAgICAgKVxuICAgIH0pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMudW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrSWQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnN0YWxsUm9vdEZhY2FkZSgpIHtcbiAgICB0aGlzLmNsZWFyUm9vdEZhY2FkZSgpXG4gICAgT2JqZWN0LmFzc2lnbihcbiAgICAgIHRoaXMsXG4gICAgICBidWlsZFJvb3RGYWNhZGVTdGF0ZSh7XG4gICAgICAgIGZpbGVUeXBlOiB0aGlzLmZpbGVUeXBlLFxuICAgICAgICBpbnZva2VFZGl0b3JGYWNhZGU6IHRoaXMuaW52b2tlRWRpdG9yRmFjYWRlLmJpbmQodGhpcyksXG4gICAgICAgIGxpc3RlbkVkaXRvckV2ZW50OiB0aGlzLmxpc3RlbkVkaXRvckV2ZW50LmJpbmQodGhpcyksXG4gICAgICAgIGNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTogdGhpcy5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGUuYmluZCh0aGlzKSxcbiAgICAgICAgY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU6IHRoaXMuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGUuYmluZCh0aGlzKSxcbiAgICAgICAgcmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcjpcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yRmFjYWRlTGlzdGVuZXIuYmluZCh0aGlzKSxcbiAgICAgICAgcmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjazpcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2suYmluZCh0aGlzKSxcbiAgICAgICAgdW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrOlxuICAgICAgICAgIHRoaXMudW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrLmJpbmQodGhpcylcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIOmHjee9ruaguee6p+iDveWKm+WRveWQjeepuumXtO+8jOmBv+WFjeS4jeWQjOWll+S7tumXtOWtl+auteaui+eVmeOAglxuICAgKiDovpPlhaXvvJrml6DjgIJcbiAgICog6L6T5Ye677ya5bCG5omA5pyJIGZhY2FkZSDlrZfmrrXnva7nqbrjgIJcbiAgICovXG4gIHByaXZhdGUgY2xlYXJSb290RmFjYWRlKCkge1xuICAgIHRoaXMudGl0bGUgPSB1bmRlZmluZWRcbiAgICB0aGlzLmhpc3RvcnkgPSB1bmRlZmluZWRcbiAgICB0aGlzLmNvbW1lbnRzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5sb2NrcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMubWVudGlvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMuY29udGVudCA9IHVuZGVmaW5lZFxuICAgIHRoaXMudmVyc2lvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMucHJlc2VudGF0aW9uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zZWxlY3Rpb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLnNlYXJjaCA9IHVuZGVmaW5lZFxuICAgIHRoaXMub3V0bGluZSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2lkZWJhciA9IHVuZGVmaW5lZFxuICAgIHRoaXMudGFibGVzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zZXR0aW5ncyA9IHVuZGVmaW5lZFxuICAgIHRoaXMud29ya2Jvb2sgPSB1bmRlZmluZWRcbiAgICB0aGlzLmFjdGl2ZVNoZWV0ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5jaGFydHMgPSB1bmRlZmluZWRcbiAgICB0aGlzLnNlbGVjdGlvbnMgPSB1bmRlZmluZWRcbiAgICB0aGlzLnNsaWRlcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMudGV4dCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuem9vbSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuZXZlbnRTdWJzY3JpcHRpb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLmJhdGNoQ2hhbmdlcyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuZXhwb3J0ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5wcmludCA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2V0Rm9jdXMgPSB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiDosIPnlKjmmL7lvI8gZWRpdG9yIGZhY2FkZSBtZXRob2QtcGF0aOOAglxuICAgKiDovpPlhaXvvJptZXRob2QtcGF0aCDkuI7lj4LmlbDmlbDnu4TjgIJcbiAgICog6L6T5Ye677ya6L+U5ZueIGlmcmFtZSDkvqfluo/liJfljJbnu5PmnpzjgIJcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgaW52b2tlRWRpdG9yRmFjYWRlPFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIGFyZ3M6IHVua25vd25bXSA9IFtdXG4gICk6IFByb21pc2U8VD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKFxuICAgICAgSW52b2tlTWV0aG9kLkludm9rZUVkaXRvck1ldGhvZCxcbiAgICAgIFttZXRob2QsIGFyZ3NdLFxuICAgICAge1xuICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIOS4uue7k+aehOWMliBmYWNhZGUg5bu656uLIGVkaXRvciDkuovku7bnm5HlkKzvvIzlubbov5Tlm57lj5bmtojnm5HlkKzlh73mlbDjgIJcbiAgICog6L6T5YWl77ya5LqL5Lu25ZCN5LiO55uR5ZCs5Zmo44CCXG4gICAqIOi+k+WHuu+8mui/lOWbnuS4gOS4quWPr+WPlua2iOW9k+WJjeebkeWQrOeahOWHveaVsOOAglxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5FZGl0b3JFdmVudDxUPihcbiAgICBldmVudDogc3RyaW5nLFxuICAgIGxpc3RlbmVyOiAocGF5bG9hZDogVCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIub24oZXZlbnQsIGxpc3RlbmVyIGFzIEV2ZW50Q2FsbGJhY2spXG4gICAgdGhpcy5jaGFubmVsXG4gICAgICAuaW52b2tlKEludm9rZU1ldGhvZC5MaXN0ZW5FZGl0b3JFdmVudCwgW2V2ZW50XSwge1xuICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yXG4gICAgICAgICAgICA/IGVyclxuICAgICAgICAgICAgOiBuZXcgRXJyb3IoYGxpc3RlbiBlZGl0b3IgZXZlbnQgZmFpbGVkOiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHRoaXMuZW1pdHRlci5vZmYoZXZlbnQsIGxpc3RlbmVyIGFzIEV2ZW50Q2FsbGJhY2spXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0RWRpdG9yKCkge1xuICAgIGNvbnN0IGFkanVzdEV2ZW50TmFtZSA9IChldmVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgIC8vIOWFvOWuueaXp+S6i+S7tuWQjVxuICAgICAgaWYgKGV2ZW50ID09PSAnc2F2ZVN0YXR1c0RpZENoYW5nZScpIHtcbiAgICAgICAgcmV0dXJuICdzYXZlU3RhdHVzQ2hhbmdlZCdcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudFxuICAgIH1cblxuICAgIGNvbnN0IGluc3QgPSB7XG4gICAgICBvbjogYXN5bmMgKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiBFdmVudENhbGxiYWNrKSA9PiB7XG4gICAgICAgIGV2ZW50ID0gYWRqdXN0RXZlbnROYW1lKGV2ZW50KVxuICAgICAgICB0aGlzLmVtaXR0ZXIub24oZXZlbnQsIGNhbGxiYWNrKVxuXG4gICAgICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLkxpc3RlbkVkaXRvckV2ZW50LCBbZXZlbnRdLCB7XG4gICAgICAgICAgYXVkaWVuY2U6IEFVRFxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgb2ZmOiAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50Q2FsbGJhY2spID0+IHtcbiAgICAgICAgZXZlbnQgPSBhZGp1c3RFdmVudE5hbWUoZXZlbnQpXG4gICAgICAgIHRoaXMuZW1pdHRlci5vZmYoZXZlbnQsIGNhbGxiYWNrKVxuICAgICAgfSxcblxuICAgICAgZ2V0Q29sbGFib3JhdG9yczogKCkgPT4gWy4uLnRoaXMuY29sbGFib3JhdG9yc11cbiAgICB9XG5cbiAgICAvLyDliJvlu7rltYzlpZcgUHJveHkg5Lul5pSv5oyB5aSa5bGC57qn6LCD55SoXG4gICAgY29uc3QgY3JlYXRlTmVzdGVkUHJveHkgPSAocGF0aDogc3RyaW5nW10gPSBbXSk6IGFueSA9PiB7XG4gICAgICBjb25zdCBwcm94eUZ1bmMgPSBmdW5jdGlvbiAoKSB7fVxuICAgICAgcmV0dXJuIG5ldyBQcm94eShwcm94eUZ1bmMsIHtcbiAgICAgICAgZ2V0OiAodGFyZ2V0LCBwcm9wKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBzaG91bGRTa2lwRmFjYWRlUHJveHlQcm9wKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8g5aaC5p6c5piv5qC557qn5Yir55qE6aKE5a6a5LmJ5pa55rOV77yIb24vb2Zm77yJ77yM55u05o6l6L+U5ZueXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChpbnN0LCBwcm9wKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIChpbnN0IGFzIGFueSlbcHJvcF1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDlr7nkuo7lh73mlbDnmoTlhoXnva7lsZ7mgKfvvIjlpoIgY2FsbOOAgWFwcGx544CBYmluZCDnrYnvvIlcbiAgICAgICAgICAvLyDov5Tlm57ljp/lh73mlbDnmoTlr7nlupTlsZ7mgKfvvIzov5nmoLfnvJbor5HlkI7nmoTku6PnoIHmiY3og73mraPluLjlt6XkvZxcbiAgICAgICAgICAvLyDkvovlpoLvvJplZGl0b3IudGVzdCgpIOe8luivkeWQjuWPmOaIkCBlZGl0b3IudGVzdC5jYWxsKClcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIFsnY2FsbCcsICdhcHBseScsICdiaW5kJ10uaW5jbHVkZXMocHJvcClcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAodGFyZ2V0IGFzIGFueSlbcHJvcF1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDlr7nkuo7lhbbku5blsZ7mgKfvvIzov5Tlm57mlrDnmoTltYzlpZcgUHJveHlcbiAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlTmVzdGVkUHJveHkoWy4uLnBhdGgsIHByb3BdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfSxcbiAgICAgICAgYXBwbHk6IChfdGFyZ2V0LCBfdGhpc0FyZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgLy8g5b2T5L2c5Li65Ye95pWw6LCD55So5pe277yM5bCG5a6M5pW06Lev5b6E5ZKM5Y+C5pWw5Y+R6YCB57uZ57yW6L6R5ZmoXG4gICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hhbm5lbC5pbnZva2UoXG4gICAgICAgICAgICAgIEludm9rZU1ldGhvZC5JbnZva2VFZGl0b3JNZXRob2QsXG4gICAgICAgICAgICAgIFtwYXRoLmpvaW4oJy4nKSwgYXJnc10sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3QgcCA9IGNyZWF0ZU5lc3RlZFByb3h5KClcblxuICAgIHJldHVybiBwXG4gIH1cblxuICBwcml2YXRlIHNob3VsZEhhbmRsZU1lc3NhZ2UoZXZ0OiBPZmZpY2VTREtFdmVudExpa2UpOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICAvLyDkuI3mmK/lvZPliY0gY2hhbm5lbCDnmoTmtojmga9cbiAgICAgIGV2dC5jaGFubmVsSWQgIT09IHRoaXMuY2hhbm5lbC5pZCB8fFxuICAgICAgLy8g5raI5oGv5bey57uP6L+H5pyfXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Jlc3RyaWN0LXBsdXMtb3BlcmFuZHMgKi9cbiAgICAgIGV2dC50aW1lICsgdGhpcy5tZXNzYWdlRXhwaXJlcyA8IERhdGUubm93KCkgfHxcbiAgICAgIC8vIOW3sue7j+WkhOeQhui/h1xuICAgICAgdGhpcy5oYW5kbGVkTWVzc2FnZUNhY2hlLmhhcyhldnQuY29udGV4dC5tZXNzYWdlSWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250YWluZXJSZWN0KCkge1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBwYXlsb2FkOiBDb250YWluZXJSZWN0ID0ge1xuICAgICAgdmlld3BvcnRXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICB2aWV3cG9ydEhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgdG9wOiByZWN0LnRvcCxcbiAgICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgICByaWdodDogcmVjdC5yaWdodCxcbiAgICAgIHNjcm9sbFRvcDogZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudD8uc2Nyb2xsVG9wLFxuICAgICAgdmlzdWFsVmlld3BvcnQ6IHt9XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkge1xuICAgICAgcGF5bG9hZC52aXN1YWxWaWV3cG9ydCA9IHtcbiAgICAgICAgd2lkdGg6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiB3aW5kb3cudmlzdWFsVmlld3BvcnQuaGVpZ2h0LFxuICAgICAgICBvZmZzZXRMZWZ0OiB3aW5kb3cudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCxcbiAgICAgICAgb2Zmc2V0VG9wOiB3aW5kb3cudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wLFxuICAgICAgICBwYWdlTGVmdDogd2luZG93LnZpc3VhbFZpZXdwb3J0LnBhZ2VMZWZ0LFxuICAgICAgICBwYWdlVG9wOiB3aW5kb3cudmlzdWFsVmlld3BvcnQucGFnZVRvcCxcbiAgICAgICAgc2NhbGU6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5zY2FsZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXlsb2FkXG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbGxhYm9yYXRvcnMocGF5bG9hZDogdW5rbm93bikge1xuICAgIGlmIChcbiAgICAgIHBheWxvYWQgJiZcbiAgICAgIHR5cGVvZiBwYXlsb2FkID09PSAnb2JqZWN0JyAmJlxuICAgICAgQXJyYXkuaXNBcnJheShcbiAgICAgICAgKHBheWxvYWQgYXMgUGFydGlhbDxDb2xsYWJvcmF0b3JzQ2hhbmdlZFBheWxvYWQ+KS5jb2xsYWJvcmF0b3JzXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb25zdCBkYXRhID0gcGF5bG9hZCBhcyBDb2xsYWJvcmF0b3JzQ2hhbmdlZFBheWxvYWRcbiAgICAgIHRoaXMuY29sbGFib3JhdG9ycyA9IFsuLi5kYXRhLmNvbGxhYm9yYXRvcnNdXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG5vdEVtcHR5U3RyaW5nKGlucHV0Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnICYmIGlucHV0LnRyaW0oKS5sZW5ndGggPiAwXG59XG5cbmNvbnN0IEVNUFRZX1BBR0VfRVZFTlRTID0gbmV3IFNldDxzdHJpbmc+KFtcbiAgJ2VtcHR5UGFnZVNob3duJyxcbiAgJ2VtcHR5UGFnZUFjdGlvbicsXG4gICdlbXB0eVBhZ2VIaWRkZW4nXG5dKVxuXG5mdW5jdGlvbiBpc0VtcHR5UGFnZUV2ZW50KGV2ZW50OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEVNUFRZX1BBR0VfRVZFTlRTLmhhcyhldmVudClcbn1cblxuLyoqXG4gKiDpnIDopoHlrrnlmajmj5Dkvpvnu5nnvJbovpHlmajkvb/nlKjnmoTmlrnms5VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJNZXRob2RzIHtcbiAgLyoqXG4gICAqIOiOt+WPluWuueWZqOWwuuWvuOetieS/oeaBr1xuICAgKi9cbiAgW0NvbnRhaW5lck1ldGhvZC5HZXRDb250YWluZXJSZWN0XT86ICgpID0+IENvbnRhaW5lclJlY3RcblxuICAvKipcbiAgICog5aSE55CG55+z5aKo5paH5qGj5YaF54K55Ye76ZO+5o6l5LqL5Lu2XG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLk9wZW5MaW5rXT86IChcbiAgICAvKipcbiAgICAgKiDnm67moIfpk77mjqVcbiAgICAgKi9cbiAgICB1cmw6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIOaEj+S5ieWSjCB3aW5kb3cub3BlbiDnmoTnrKzkuozkuKrlj4LmlbDkuIDmoLfvvIzlsZ7kuo7nn7Ploqjlu7rorq7nmoTlgLzvvIzlhbfkvZPmmK/lkKbpnIDopoHkvb/nlKjor7fmjqXlhaXmlrnoh6rooYzliKTmlq3jgIJcbiAgICAgKi9cbiAgICB0YXJnZXQ/OiBzdHJpbmdcbiAgKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIOeUn+aIkOaPkuWFpeWIsOefs+WiqOaWh+aho+S4reeahOmTvuaOpe+8jOeUqOS6juWkhOeQhiBAIOaWh+S7tuetieWKn+iDvemcgOimgeaPkuWFpeeahOmTvuaOpVxuICAgKi9cbiAgW0NvbnRhaW5lck1ldGhvZC5HZW5lcmF0ZVVybF0/OiBHZW5lcmF0ZVVybEhhbmRsZXJcblxuICAvKipcbiAgICog55So5LqO56e75Yqo56uv5aSE55CGIEAg54K55Ye75LqL5Lu2XG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLk1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGVdPzogKFxuICAgIHBheWxvYWQ6IE1vdXNlTW92ZVBheWxvYWRcbiAgKSA9PiB2b2lkXG5cbiAgLyoqXG4gICAqIOeUqOS6juS7juWuouaIt+S4muWKoSBVUkwg5Lit6I635Y+W5a+55bqU55qE5paH5Lu2IElE77yM5L6b57yW6L6R5Zmo5L2/55So44CCXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkdldEZpbGVJbmZvRnJvbVVybF0/OiAodXJsOiBzdHJpbmcpID0+IFByb21pc2U8XG4gICAgfCB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDmlofku7YgSURcbiAgICAgICAgICovXG4gICAgICAgIGZpbGVJZDogc3RyaW5nXG4gICAgICB9XG4gICAgfCB1bmRlZmluZWRcbiAgPlxuXG4gIC8qKlxuICAgKiDnlKjkuo7mmL7npLrlrqLmiLfoh6rlrprkuYl0b2FzdOOAglxuICAgKi9cbiAgW0NvbnRhaW5lck1ldGhvZC5TaG93VG9hc3RdPzogKG9wdGlvbnM6IFNob3dUb2FzdE9wdGlvbnMpID0+IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICog6YCa55+l55So5oi35omn6KGM6Ieq5a6a5LmJ5pON5L2c77yM5pON5L2c55Sx55So5oi36Ieq5a6a5LmJ5oyJ6ZKu6Kem5Y+RXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkhhbmRsZUN1c3RvbVRhc2tdPzogKHRhc2tJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIC8qKlxuICAgKiDor7fmsYLlrrnlmajojrflj5bpibTmnYPkv6Hmga9cbiAgICogQHJldHVybnMge0NyZWRlbnRpYWxzfSDpibTmnYPkv6Hmga9cbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuR2V0Q3JlZGVudGlhbHNdOiAoKSA9PiBQcm9taXNlPENyZWRlbnRpYWxzPlxufVxuXG5leHBvcnQgZW51bSBFdmVudCB7XG4gIC8qKlxuICAgKiBTREsg5Yid5aeL5YyW5LqL5Lu277yM55So5LqO5YaF6YOo6YC76L6RXG4gICAqL1xuICBTREtJbml0ID0gJ1NES0luaXQnLFxuXG4gIC8qKlxuICAgKiDplJnor6/kuovku7bvvIzljIXlkKvnvJbovpHlmajmipvlh7rnmoTplJnor69cbiAgICovXG4gIEVycm9yID0gJ2Vycm9yJyxcblxuICAvKipcbiAgICogT2ZmaWNlU0RLIOeKtuaAgeWPmOWMluS6i+S7tlxuICAgKi9cbiAgUmVhZHlTdGF0ZSA9ICdyZWFkeVN0YXRlJyxcblxuICAvKipcbiAgICog57yW6L6R5Zmo55yf5q2j5a6M5oiQXCLpppblsY/muLLmn5NcIueahOS/oeWPt+OAglxuICAgKlxuICAgKiDnlLEgaWZyYW1lIOWGhee8lui+keWZqOWcqOiHqui6q+a4suafk+eos+WumuWQjumAmui/hyBjaGFubmVsIOWPkemAge+8jFNESyDkvqfovazlj5HkuLrmnKzkuovku7bjgIJcbiAgICog5a6/5Li75Y+v5oyJ6ZyA55uR5ZCs5a6D5p2l5Yy65YiGIFNESyBSZWFkeSDkuI7nvJbovpHlmajop4bop4npppblsY/lrozmiJDjgIJcbiAgICovXG4gIEVkaXRvclJlbmRlcmVkID0gJ2VkaXRvclJlbmRlcmVkJyxcblxuICAvKipcbiAgICog57yW6L6R5Zmo5LqL5Lu2XG4gICAqL1xuICBFZGl0b3JFdmVudCA9ICdlZGl0b3JFdmVudCdcbn1cblxuLyoqXG4gKiBpZnJhbWUg5YaF5L6n55So5p2l5LiK5oqlXCLnvJbovpHlmajlt7LlrozmiJDpppblsY/muLLmn5NcIueahCBjaGFubmVsIOS6i+S7tuWQjeOAglxuICpcbiAqIOS4jiBgSW52b2tlTWV0aG9kLlJlYWR5U3RhdGVgIOeahOaemuS4vuWAvOS/neaMgeWcqOWQjOS4gOWRveWQjeepuumXtO+8jOS9huS4jeWFpSBzaGFyZWQg5YyF77yMXG4gKiDku6XlhY3ot6jnq6/niYjmnKzogKblkIjjgIJpZnJhbWUg5L6n57qm5a6a5YaZ5a2X56ym5Liy5Y2z5Y+v44CCXG4gKi9cbmV4cG9ydCBjb25zdCBFRElUT1JfUkVOREVSRURfRVZFTlQgPSAnZWRpdG9yUmVuZGVyZWQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZSB7XG4gIHV1aWQ/OiBzdHJpbmdcbiAgZXZlbnQ6IHN0cmluZ1xuICBib2R5OiBhbnlcbiAgZXJyb3I/OiBFcnJvclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2VFdmVudFBheWxvYWQge1xuICBldmVudDogSW52b2tlTWV0aG9kXG4gIGRhdGE6IHVua25vd25bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lck1ldGhvZFBheWxvYWQge1xuICBtZXRob2Q6IENvbnRhaW5lck1ldGhvZFxuICBhcmdzOiB1bmtub3duW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkeVN0YXRlRXZlbnQge1xuICBzdGF0ZTogUmVhZHlTdGF0ZVxuICBmaWxlVHlwZTogRmlsZVR5cGVcbiAgZXJyb3I/OiBFcnJvciB8IHN0cmluZ1xufVxuXG4vKipcbiAqIOS6i+S7tuWbnuiwg+WHveaVsFxuICovXG5leHBvcnQgdHlwZSBFdmVudENhbGxiYWNrID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcblxuLyoqXG4gKiBTREsgdG9hc3Qg5paH5qGI6YWN572u77yM5YC85LuF5YWB6K645a2X56ym5Liy5oiW5bWM5aWX5a+56LGh44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU0RLVG9hc3RPcHRpb25zIHtcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgU0RLVG9hc3RPcHRpb25zIHwgdW5kZWZpbmVkXG59XG5cbi8qKlxuICog6YCP5Lyg57uZIGlmcmFtZSDnvJbovpHlmajnmoTkuLvpopjphY3nva7jgIJcbiAqIOW9k+WJjSBzaGltby1qcy1zZGsg5LuF6LSf6LSj6LeoIGlmcmFtZSDkvKDovpPvvIzkuI3lnKjlrr/kuLvkvqfnuqbmnZ/lrZfmrrXnu4boioLjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25UaGVtZUNvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd25cbn1cblxuLyoqXG4gKiBpZnJhbWUg5YaF572u5Yqg6L296aG16YWN572u77yM5Y+q5pSv5oyB5Y+v5bqP5YiX5YyW5a2X5q6144CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ09wdGlvbnMge1xuICAvKipcbiAgICog6Ieq5a6a5LmJ5Yqg6L296aG1IExvZ2/jgILkvKDlrZfnrKbkuLLml7bkvZzkuLrlm77niYcgVVJMIC8gZGF0YVVSTCDkvb/nlKjvvJtcbiAgICog5LygIGZhbHNlIOaXtumakOiXjyBMb2dv77yb5LiN5Lyg5pe25L2/55SoIGlmcmFtZSDlhoXpu5jorqTnn7PloqggTG9nb+OAglxuICAgKi9cbiAgbG9nbz86IHN0cmluZyB8IGZhbHNlXG4gIC8qKlxuICAgKiDoh6rlrprkuYnliqDovb3pobXmj5DnpLrmlofmoYjjgILkuI3kvKDml7bkvb/nlKggaWZyYW1lIOWGhem7mOiupOaWh+ahiOOAglxuICAgKi9cbiAgdGlwPzogc3RyaW5nXG59XG5cbi8qKlxuICogT2ZmaWNlU0RLIOWIneWni+WMluWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mZmljZVNES09wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PENvbnRhaW5lck1ldGhvZHMsICdnZXRDb250YWluZXJSZWN0Jz4ge1xuICAvKipcbiAgICog55+z5aKoIFNESyDmnI3liqHlmajlnLDlnYBcbiAgICovXG4gIGVuZHBvaW50OiBzdHJpbmdcblxuICAvKipcbiAgICog5oKo6KaB5omT5byA55qE5paH5qGjIElEXG4gICAqL1xuICBmaWxlSWQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiDnlKjkuo7nn7PloqggU0RLIOmJtOadg+eUqOeahOetvuWQjVxuICAgKi9cbiAgc2lnbmF0dXJlOiBzdHJpbmdcblxuICAvKipcbiAgICogaWZyYW1lIOaMgui9veeahOebruagh+WuueWZqFxuICAgKi9cbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudFxuXG4gIC8qKlxuICAgKiDnlKjkuo7mgqjns7vnu5/pibTmnYPkvb/nlKjnmoQgdG9rZW5cbiAgICovXG4gIHRva2VuOiBzdHJpbmdcblxuICAvKipcbiAgICog5Yi35paw6Ym05p2D5L+h5oGv55qE6Ze06ZqU5pe26Ze077yM5Y2V5L2N5Li65q+r56eSXG4gICAqL1xuICByZWZyZXNoQ3JlZGVudGlhbHNJbnRlcnZhbDogbnVtYmVyXG5cbiAgLyoqXG4gICAqIOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqFxuICAgKi9cbiAgcGFyYW1zPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIOW9k+WJjeaJk+W8gOaooeW8j+OAgmBwcmV2aWV3YCDnlKjkuo7pooTop4jmgIHvvIzlhbbkvZnlnLrmma/pu5jorqTmjIkgYGVkaXRgIOWkhOeQhuOAglxuICAgKi9cbiAgbW9kZT86ICdlZGl0JyB8ICdwcmV2aWV3J1xuXG4gIC8qKlxuICAgKiDnn7PloqggU0RLIFVSTCDlj4LmlbAgdXJsP3NtUGFyYW1zPXtwYXJhbXN977yM55So5LqO5Lyg6YCS55+z5aKoIFNESyDlhoXpg6jpnIDopoHnmoTlj4LmlbDjgIJcbiAgICovXG4gIHNtUGFyYW1zPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IEFycmF5PHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuXG4gIC8qKlxuICAgKiDmjIflrprnn7PloqggU0RLIOe8lui+keWZqOeVjOmdouivreiogO+8jOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqOOAglxuICAgKiDoi6XmnKrmjIflrprvvIzliJkgaWZyYW1lIOS9v+eUqOacjeWKoeWZqOiuvue9rueahOm7mOiupOivreiogOOAglxuICAgKlxuICAgKiDnm67liY3mlK/mjIHnmoTmoIflh4bor63oqIDlj5blgLzvvJpcbiAgICogMS4gemgtQ07vvIjnroDkvZPkuK3mlofvvIlcbiAgICogMi4gemgtVFfvvIjnuYHkvZPkuK3mlofvvIlcbiAgICogMy4gZW4tVVPvvIjoi7HmlofvvIlcbiAgICogNC4gamEtSlDvvIjml6XmlofvvIlcbiAgICogNS4ga28tS1LvvIjpn6nmlofvvIlcbiAgICogNi4gZXMtRVPvvIjopb/nj63niZnor63vvIlcbiAgICogNy4gcHQtUFTvvIjokaHokITniZnor63vvIlcbiAgICogOC4gZGUtREXvvIjlvrfor63vvIlcbiAgICogOS4gZnItRlLvvIjms5Xor63vvIlcbiAgICogMTAuIGl0LUlU77yI5oSP5aSn5Yip6K+t77yJXG4gICAqIDExLiBydS1SVe+8iOS/hOivre+8iVxuICAgKiAxMi4gaWQtSUTvvIjljbDlsLzor63vvIlcbiAgICogMTMuIHZpLVZO77yI6LaK5Y2X6K+t77yJXG4gICAqIDE0LiB0aC1USO+8iOazsOivre+8iVxuICAgKiAxNS4gbXMtTVnvvIjpqazmnaXor63vvIlcbiAgICogMTYuIGFyLVNB77yI6Zi/5ouJ5Lyv6K+t77yJXG4gICAqXG4gICAqIOS4uuWFvOWuueaXp+eJiOWGmeazle+8jOS7jeaOpeWPlyBlbuOAgWph77yM5Lyg5YWl5ZCO5Lya6Ieq5Yqo5pig5bCE5Li6IGVuLVVT44CBamEtSlDjgIJcbiAgICovXG4gIGxhbmc/OlxuICAgIHwgJ3poLUNOJ1xuICAgIHwgJ3poLVRXJ1xuICAgIHwgJ2VuLVVTJ1xuICAgIHwgJ2phLUpQJ1xuICAgIHwgJ2tvLUtSJ1xuICAgIHwgJ2VzLUVTJ1xuICAgIHwgJ3B0LVBUJ1xuICAgIHwgJ2RlLURFJ1xuICAgIHwgJ2ZyLUZSJ1xuICAgIHwgJ2l0LUlUJ1xuICAgIHwgJ3J1LVJVJ1xuICAgIHwgJ2lkLUlEJ1xuICAgIHwgJ3ZpLVZOJ1xuICAgIHwgJ3RoLVRIJ1xuICAgIHwgJ21zLU1ZJ1xuICAgIHwgJ2FyLVNBJ1xuICAgIHwgJ2VuJ1xuICAgIHwgJ2phJ1xuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjmj5Dlj4rnmoTmta7liqjljaHniYfnu4Tku7ZcbiAgICovXG4gIGRpc2FibGVNZW50aW9uQ2FyZHM/OiBEaXNhYmxlTWVudGlvbkNhcmRzXG5cbiAgLyoqXG4gICAqIOeUqOS6juimhueblue8lui+keWZqOWGhemDqOWIhiB0b2FzdCDmlofmoYjjgIJcbiAgICog5pSv5oyB5aWX5Lu257G75Z6L77yaZm9ybeOAgWRvY3VtZW50UHJv44CBcHJlc2VudGF0aW9u44CBc3ByZWFkc2hlZXTjgIF0YWJsZe+8iOS7heWvueaUr+aMgSB1aSDphY3nva7nmoTlpZfku7bnlJ/mlYjvvInjgIJcbiAgICog5b2T5YmN5bey5paH5qGj5YyW5pSv5oyB5a2X5q6177yadWkudG9hc3QudGlwcy5lZGl0Lm5vUGVybWlzc2lvbuOAglxuICAgKiDlhbbku5blrZfmrrXmmoLkuI3kvZzkuLrnqLPlrprlhazlhbEgQVBJIOaJv+ivuuOAglxuICAgKi9cbiAgdWk/OiB7XG4gICAgdG9hc3Q/OiBTREtUb2FzdE9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiDnlKjkuo7mjqfliLYgaWZyYW1lIGZlYXR1cmUgcG9saWN5IChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvRmVhdHVyZS1Qb2xpY3kpIOOAglxuICAgKiDkvJropobnm5bpu5jorqTnmoQgcG9saWN577yM5Zug5q2k5L2/55So5pe26ZyA6KaB5rOo5oSP5oqK6ZyA6KaB55qEIHBvbGljeSDlhpnlrozmlbTjgIJcbiAgICovXG4gIGFsbG93UG9saWN5Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIOaYr+WQpuW8gOWQr+iwg+ivleaooeW8j++8jHRydWUg5Lya6YCa6L+HIGNvbnNvbGUg5omT5Y2w5LiA5Lqb5L+h5oGvXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW5cblxuICAvKipcbiAgICog57yW6L6R5Zmo5o+S5Lu26YWN572u77yM5LiN5piv5omA5pyJ57G75Z6L55qE5aWX5Lu26YO95pSv5oyB77yM5Lul5aWX5Lu25piv5ZCm5o+Q5L6bIFBsdWdpbk9wdGlvbnMg5Li65YeGXG4gICAqL1xuICBwbHVnaW5zPzogU3ByZWFkc2hlZXQuUGx1Z2luT3B0aW9ucyB8IFRhYmxlLlBsdWdpbk9wdGlvbnNcblxuICAvKipcbiAgICogaWZyYW1lIHBvc3RNZXNzYWdlIOeahOebruaghyBvcmlnaW7vvIzpu5jorqTmmK/lvZPliY3pobXpnaLnmoQgbG9jYXRpb24ub3JpZ2lu44CCXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICB0YXJnZXRPcmlnaW4/OiBzdHJpbmdcblxuICAvKipcbiAgICog5L2/55So5LuA5LmI6K6+5aSH57G75Z6L5qih5byP77yM5Lya55u05o6l5b2x5ZON5Yqf6IO95ZKM5qC35byP77yM5LiN5Lyg5YC85oiW56m65a2X56ym5Liy5YiZ6buY6K6k55SoIHVzZXItYWdlbnQg6Ieq5Yqo5Yik5pat44CC5Y+X54mI5pys6ZmQ5Yi277yM5LiN5piv5omA5pyJ57G75Z6L6YO95pSv5oyB44CCXG4gICAqL1xuICBkZXZpY2VNb2RlPzogRGV2aWNlTW9kZVxuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjpu5jorqTnmoTnrb7lkI3nu4Tku7bvvIzku6XmlK/mjIHoh6rlrprkuYnnrb7lkI3nu4Tku7bjgILlj5fniYjmnKzpmZDliLbvvIzpg6jliIbniYjmnKznmoTnibnlrprnsbvlnovmlofmoaPmiY3mlK/mjIHjgIJcbiAgICovXG4gIGRpc2FibGVTaWduYXR1cmVDb21wb25lbnQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOaOp+WItiBoZWFkZXJiYXIg57uE5Lu25piv5ZCm5bGV56S677yMZmFsc2Ug6KGo56S66ZqQ6JeP44CCXG4gICAqL1xuICBoZWFkZXJCYXJzVmlzaWJsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICog5piv5ZCm6ZqQ6JePIGlmcmFtZSDlhoUgQUkg5YWl5Y+j44CCXG4gICAqIOWvueW6lCBpZnJhbWUg5YaFIFNoaW1vU0RLIOeahOeOsOaciSBBSSDlhaXlj6PlvIDlhbPog73lipvjgIJcbiAgICovXG4gIGRpc2FibGVBaUVudHJ5PzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiDnvJbovpHlmajkuLvpopjphY3nva7jgIJcbiAgICog6K+l5Y+C5pWw5Lya6YCP5Lyg5YiwIGlmcmFtZSDlhoXlkITlpZfku7bliJ3lp4vljJbpk77ot6/vvJvmnKrkvKDml7bkv53mjIEgaWZyYW1lIOm7mOiupOS4u+mimOOAglxuICAgKi9cbiAgdGhlbWU/OiBDb21tb25UaGVtZUNvbmZpZ1xuXG4gIC8qKlxuICAgKiBkb2NzIOaWnOadoOiPnOWNlemFjee9ruOAglxuICAgKiDku4UgZG9jcyDmlofku7bnsbvlnovnlJ/mlYjvvJtgYnV0dG9uLmNhbGxiYWNrYCDlrp7pmYXov5DooYzlnKjlrr/kuLvpobXvvIxcbiAgICog5Lya5ZyoIGlmcmFtZSDlhoXngrnlh7voj5zljZXmjInpkq7lkI7pgJrov4cgcG9zdE1lc3NhZ2UvY2hhbm5lbCDlm57osIPop6blj5HjgIJcbiAgICovXG4gIHNsYXNoTWVudT86IFNsYXNoTWVudU9wdGlvbnNcblxuICAvKipcbiAgICog5piv5ZCm5pi+56S65YaF572u55qE5Yqg6L295Yqo55S777yM5Y+q5Zyo6Z2Z5oCB6LWE5rqQ5Yqg6L295Yiw57yW6L6R5Zmo5riy5p+T6L+Z5Liq6Zi25q615pi+56S6XG4gICAqL1xuICBzaG93TG9hZGluZ0VmZmVjdD86IGJvb2xlYW5cblxuICAvKipcbiAgICog5piv5ZCm5ZCv55SoIGlmcmFtZSDlhoXnva7pu5jorqTliqDovb3pobXvvIzpu5jorqQgZmFsc2XjgIJcbiAgICog6ZqQ6JeP5ZCO5o6l5YWl5pa55Y+v6Ieq5a6a5LmJ5aSW6YOoIGxvYWRpbmfjgIJcbiAgICovXG4gIHNob3dMb2FkaW5nPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBpZnJhbWUg5YaF572u5Yqg6L296aG16YWN572u44CC5LuF5ZyoIGBzaG93TG9hZGluZyA9PT0gdHJ1ZWBcbiAgICog5oiWIGBzaG93TG9hZGluZ0VmZmVjdCA9PT0gdHJ1ZWAg5pe26YCP5Lyg57uZIGlmcmFtZeOAglxuICAgKi9cbiAgbG9hZGluZ09wdGlvbnM/OiBMb2FkaW5nT3B0aW9uc1xuXG4gIC8qKlxuICAgKiDnlKjkuo7lnKjnvJbovpHlmajlj5HotbcgQVBJIOivt+axguaXtu+8jOWvueivt+axguWPguaVsOi/m+ihjOS/ruaUueeahOWHveaVsOOAguivpue7hueUqOazleingeaWh+aho+OAglxuICAgKi9cbiAgYXBpQWRhcHRvcj86IEFQSUFkYXB0b3JcblxuICAvKipcbiAgICog55So5LqO5Zyo57yW6L6R5Zmo5Y+R6LW3IEFQSSDor7fmsYLml7bvvIzlr7nor7fmsYLlj4LmlbDov5vooYzkv67mlLnnmoTlh73mlbDml7bkvKDlhaXnmoTkuIrkuIvmlofmlbDmja7jgIJcbiAgICovXG4gIGFwaUFkYXB0b3JDb250ZXh0PzogUmVxdWVzdENvbnRleHRcblxuICAvKipcbiAgICog55So5LqO5Yik5pat6YCa5L+h5raI5oGv6L+H5pyf5pe26Ze077yM6L+H5pyf5ZCO55qE5raI5oGv5Lya6KKr5oqb5byD77yM6buY6K6kIDUg5YiG6ZKf44CCXG4gICAqL1xuICBtZXNzYWdlRXhwaXJlcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiDliqDlr4blkI7nmoTnlKjmiLdpZFxuICAgKi9cbiAgdXNlclV1aWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICog57y655yB6aG177yIRW1wdHkgUGFnZe+8iemFjee9ruOAglxuICAgKiAtIOS4jeS8oOaIluS8oCBgdHJ1ZWDvvJrlkK/nlKjpu5jorqTnvLrnnIHpobXog73lipvvvIjmnInlhoXnva7lm77niYfkuI7pu5jorqTmlofmoYjvvIwqKuaXoOaMiemSrioq77yJXG4gICAqIC0g5LygIGBmYWxzZWDvvJrlrozlhajlhbPpl61cbiAgICogLSDkvKDlr7nosaHvvJrnsr7nu4bmjqfliLblkK/nlKjnmoQgc2NlbmXjgIF0b2tlbiDov4fmnJ/nrZbnlaXvvIzku6Xlj4rmr4/kuKogc2NlbmUg55qEXG4gICAqICAg5paH5qGIL+aMiemSruiHquWumuS5ie+8iGBvdmVycmlkZXNg77yJ44CC6buY6K6k5LiN5riy5p+T5Lu75L2V5oyJ6ZKu77yM5a6/5Li76ZyA6KaB5oyJ6ZKu5pe25b+F6aG7XG4gICAqICAg5ZyoIGBvdmVycmlkZXNbc2NlbmVdLnByaW1hcnkvc2Vjb25kYXJ5YCDph4zmmL7lvI/phY3nva4gbGFiZWzvvIzngrnlh7vnu5/kuIDop6blj5FcbiAgICogICBgZW1wdHlQYWdlQWN0aW9uYCDkuovku7bnlLHlrr/kuLvlpITnkIbjgIJcbiAgICpcbiAgICog55u45YWz5LqL5Lu277yaYGVtcHR5UGFnZVNob3duYCAvIGBlbXB0eVBhZ2VBY3Rpb25gIC8gYGVtcHR5UGFnZUhpZGRlbmDjgIJcbiAgICog6K+m6KeBIGAuL3R5cGVzL0VtcHR5UGFnZS50c2DjgIJcbiAgICovXG4gIGVtcHR5UGFnZT86IGJvb2xlYW4gfCBFbXB0eVBhZ2VPcHRpb25zXG59XG4iLCJleHBvcnQgZnVuY3Rpb24gYXNzZXJ0PFQ+KFxuICBpbnB1dDogYW55LFxuICBjb25kaXRpb246IChpbnB1dDogYW55KSA9PiBib29sZWFuLFxuICBtZXNzYWdlOiBzdHJpbmdcbik6IFQge1xuICBpZiAoY29uZGl0aW9uKGlucHV0KSkge1xuICAgIHJldHVybiBpbnB1dFxuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpXG59XG4iLCJpbXBvcnQgeyBPZmZpY2VTREssIE9mZmljZVNES09wdGlvbnMgfSBmcm9tICcuL09mZmljZVNESydcblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0T3B0aW9ucyBleHRlbmRzIE9mZmljZVNES09wdGlvbnMge31cblxuLyoqXG4gKiDliJ3lp4vljJYgU0RL77yM6L+U5ZueIFByb21pc2XvvIzlvZMgUmVhZFN0YXRlIOWPmOS4uiBSZWFkeSDmiJYgRmFpbGVkIOaXtu+8jFByb21pc2Ug5bCG6KKrIHJlc29sdmXjgIJcbiAqIFByb21pc2UgcmVzb3ZsZWQg5LiN5Luj6KGo57yW6L6R5Zmo5bey57uP5a6M5pW05Yqg6L295a6M5q+V77yM5Y+q5Luj6KGoIFNESyDlt7Lnu4/lh4blpIflpb3kuobjgIJcbiAqIOWQjOaXtiBQcm9taXNlIOS4gOebtCBwZW5kaW5nIOS5n+S4jeS7o+ihqOe8lui+keWZqOWKoOi9veWksei0pe+8jOWPquS7o+ihqOaXoOazlemAmui/hyBTREsg5ZKM57yW6L6R5Zmo5Lqk5LqS44CCXG4gKiDmr5TlpoLlj5fmtY/op4jlmajpmZDliLbml6Dms5Xlj5Hlh7ogcG9zdE1lc3NhZ2UoKSDml7bvvIxQcm9taXNlIOWwhuS8muS4gOebtCBwZW5kaW5n44CCXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb25uZWN0KG9wdGlvbnM6IENvbm5lY3RPcHRpb25zKTogUHJvbWlzZTxPZmZpY2VTREs+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzZGsgPSBuZXcgT2ZmaWNlU0RLKG9wdGlvbnMpXG4gICAgYXdhaXQgc2RrLmluaXQoKVxuICAgIHJldHVybiBzZGtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKCdGYWlsZWQgdG8gaW5pdCBPZmZpY2VTREsnLCB7XG4gICAgICBlcnJvcjogZSxcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuICAgIHRocm93IGVcbiAgfVxufVxuIiwiaW1wb3J0ICogYXMgRG9jdW1lbnRQcm8gZnJvbSAnLi90eXBlcy9Eb2N1bWVudFBybydcbmltcG9ydCAqIGFzIERvY3VtZW50IGZyb20gJy4vdHlwZXMvRG9jdW1lbnQnXG5pbXBvcnQgKiBhcyBTcHJlYWRzaGVldCBmcm9tICcuL3R5cGVzL1NwcmVhZHNoZWV0J1xuaW1wb3J0ICogYXMgUHJlc2VudGF0aW9uIGZyb20gJy4vdHlwZXMvUHJlc2VudGF0aW9uJ1xuaW1wb3J0ICogYXMgVGFibGUgZnJvbSAnLi90eXBlcy9UYWJsZSdcbmltcG9ydCAqIGFzIEZvcm0gZnJvbSAnLi90eXBlcy9Gb3JtJ1xuaW1wb3J0ICogYXMgRmxvd2NoYXJ0IGZyb20gJy4vdHlwZXMvRmxvd0NoYXJ0J1xuaW1wb3J0IHsgRXZlbnRNYXAgYXMgQmFzZUV2ZW50TWFwLCBCYXNlRWRpdG9yIH0gZnJvbSAnLi90eXBlcy9CYXNlRWRpdG9yJ1xuXG5leHBvcnQgKiBmcm9tICd3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZCdcblxuZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0J1xuXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESydcblxuZXhwb3J0IHR5cGUge1xuICBFbXB0eVBhZ2VTY2VuZSxcbiAgRW1wdHlQYWdlT3B0aW9ucyxcbiAgRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUsXG4gIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSxcbiAgTm9ybWFsaXplZEVtcHR5UGFnZU9wdGlvbnMsXG4gIEVtcHR5UGFnZVNob3duUGF5bG9hZCxcbiAgRW1wdHlQYWdlQWN0aW9uUGF5bG9hZCxcbiAgRW1wdHlQYWdlSGlkZGVuUGF5bG9hZCxcbiAgRmlsZU9wZW5GYWlsZWRSZWFzb24sXG4gIFRva2VuRXhwaXJlZFN0cmF0ZWd5XG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuZXhwb3J0IHR5cGUge1xuICBTbGFzaE1lbnVCdXR0b24sXG4gIFNsYXNoTWVudUVudHJ5LFxuICBTbGFzaE1lbnVPcHRpb25zXG59IGZyb20gJy4vdHlwZXMvU2xhc2hNZW51J1xuZXhwb3J0IHtcbiAgQUxMX0VNUFRZX1BBR0VfU0NFTkVTLFxuICBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zXG59IGZyb20gJy4vdHlwZXMvRW1wdHlQYWdlJ1xuXG5leHBvcnQge1xuICBCYXNlRWRpdG9yLFxuICBEb2N1bWVudFBybyxcbiAgRG9jdW1lbnQsXG4gIFNwcmVhZHNoZWV0LFxuICBQcmVzZW50YXRpb24sXG4gIFRhYmxlLFxuICBGb3JtLFxuICBGbG93Y2hhcnQsXG4gIEJhc2VFdmVudE1hcFxufVxuXG5leHBvcnQgY29uc3QgU1RBUlRfUEFSQU1TX0ZJRUxEID0gJ3NtUGFyYW1zJ1xuIiwiLyoqXG4gKiDnvLrnnIHpobXog73lipvnmoTlr7nlpJblpZHnuqbnsbvlnovjgIJcbiAqXG4gKiDlhbPkuo4gc2NlbmUg5p6a5Li+5b2S5bGe77yI5bey56Gu5a6a77yJ77yaXG4gKiAgIFAxflA0IOWunuaWveacn++8jOS4pOS+p++8iHNoaW1vLWpzLXNkayDkuI4gbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka++8ieWcqOacrOWcsCB0eXBlc1xuICogICDmlofku7bph4zmiYvlt6Xkv53mjIHlrZfpnaLph4/kuIDoh7TvvJvogZTosIPnqLPlrprlkI7msonmt4DliLAgYHNoaW1vLWpzLXNkay1zaGFyZWRgIOeahOW4uOmHj+S4reOAglxuICovXG5cbi8qKlxuICog57y655yB6aG15Zy65pmv5p6a5Li+77yM5b+F6aG75LiOIGBsaXphcmQtc2VydmljZS1pZnJhbWUtc2RrYCDkvqflrozlhajkuIDoh7TjgIJcbiAqL1xuZXhwb3J0IHR5cGUgRW1wdHlQYWdlU2NlbmUgPVxuICB8ICdmaWxlLW9wZW4tZmFpbGVkJ1xuICB8ICduby1wZXJtaXNzaW9uJ1xuICB8ICduZXR3b3JrLWVycm9yJ1xuICB8ICd0b2tlbi1leHBpcmVkJ1xuXG4vKipcbiAqIGBmaWxlLW9wZW4tZmFpbGVkYCDkuIvlj6/nu4bliIbnmoTlrZDljp/lm6DvvIzmib/ovb0gSFRUUCDljY/orq7nuqflt67lvILvvJtcbiAqIOS/neaMgSBzY2VuZSDmnprkuL7nspLluqbnqLPlrprvvIznu4boioLpgJrov4cgcmVhc29uIOS4i+mSu+OAglxuICovXG5leHBvcnQgdHlwZSBGaWxlT3BlbkZhaWxlZFJlYXNvbiA9XG4gIHwgJ2ZpbGUtbm90LWZvdW5kJ1xuICB8ICdmaWxlLWRlbGV0ZWQnXG4gIHwgJ2ZpbGUtbG9hZC1mYWlsZWQnXG4gIHwgJ3Vua25vd24nXG5cbmV4cG9ydCB0eXBlIFRva2VuRXhwaXJlZFN0cmF0ZWd5ID0gJ3JlZnJlc2gtZmlyc3QnIHwgJ3Nob3ctaW1tZWRpYXRlbHknXG5cbi8qKlxuICog5Y2V5Liq5oyJ6ZKu55qE6Ieq5a6a5LmJ44CC54K55Ye75ZCO57uf5LiA6Kem5Y+RIGBlbXB0eVBhZ2VBY3Rpb25gIOS6i+S7tu+8jFxuICog5a6/5Li755uR5ZCs5LqL5Lu25ZCO6Ieq6KGM5Yaz5a6a5ZCO57ut6KGM5Li677yI6YeN55m7IC8g6YeN6K+VIC8g6ZqQ6JeP562J77yJ44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUge1xuICAvKiog5oyJ6ZKu5paH5qGI44CC5b+F5aGr44CCICovXG4gIGxhYmVsOiBzdHJpbmdcbn1cblxuLyoqXG4gKiDljZXkuKogc2NlbmUg55qE5paH5qGIL+aMiemSruiHquWumuS5ieOAguacquaPkOS+m+eahOWtl+autei1sOWGhee9rum7mOiupO+8iOaWh+ahiOi1sOm7mOiupO+8jOaMiemSruS4jea4suafk++8ieOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSB7XG4gIC8qKiDopobnm5bmoIfpopjjgIIgKi9cbiAgdGl0bGU/OiBzdHJpbmdcbiAgLyoqIOimhuebluaPj+i/sOOAgiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAvKiog5Li75oyJ6ZKu44CC5LiN5Lyg5YiZ5LiN5riy5p+T5Li75oyJ6ZKu44CCICovXG4gIHByaW1hcnk/OiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZVxuICAvKiog5qyh5oyJ6ZKu44CC5LiN5Lyg5YiZ5LiN5riy5p+T5qyh5oyJ6ZKu44CCICovXG4gIHNlY29uZGFyeT86IEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlXG59XG5cbi8qKlxuICog5a6/5Li76YCa6L+HIGBjb25uZWN0KHsgZW1wdHlQYWdlIH0pYCDkvKDlhaXnmoTphY3nva7jgILmiYDmnInlrZfmrrXlnYflj6/pgInjgIJcbiAqXG4gKiDpu5jorqTooYzkuLrvvJpcbiAqIC0g5Zu+54mHIC8g5paH5qGI77yIdGl0bGUgLyBkZXNjcmlwdGlvbu+8ieWdh+WGhee9ru+8jOWuv+S4u+aXoOmcgOS8oFxuICogLSAqKum7mOiupOS4jea4suafk+S7u+S9leaMiemSrioq44CC5aaC6ZyA5oyJ6ZKu77yM5b+F6aG75ZyoIGBvdmVycmlkZXNbc2NlbmVdLnByaW1hcnkvc2Vjb25kYXJ5YFxuICogICDph4zmmL7lvI/phY3nva4gbGFiZWzjgILmjInpkq7ngrnlh7vnu5/kuIDop6blj5EgYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu244CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiDmgLvlvIDlhbPvvIzpu5jorqQgdHJ1ZeOAglxuICAgKi9cbiAgZW5hYmxlZD86IGJvb2xlYW5cblxuICAvKipcbiAgICog5ZCv55So55qE5Zy65pmv55m95ZCN5Y2V44CC5pyq5oyH5a6a5pe25YWo6YOo5ZCv55So44CCXG4gICAqL1xuICBzY2VuZXM/OiBFbXB0eVBhZ2VTY2VuZVtdXG5cbiAgLyoqXG4gICAqIHRva2VuIOi/h+acn+WcuuaZr+eahOWumuWItuetlueVpe+8mlxuICAgKiAtIGByZWZyZXNoLWZpcnN0YO+8iOm7mOiupO+8ie+8muWFiOi1sOS4gOasoSBnZXRDcmVkZW50aWFscyDliLfmlrDvvIzlpLHotKXlho3lsZXnpLrnvLrnnIHpobVcbiAgICogICAtIOS7heWcqOWuv+S4u+S8oOS6hiBgZ2V0Q3JlZGVudGlhbHNgIOaXtueUn+aViFxuICAgKiAgIC0g5pyA5aSa6YeN6K+VIDEg5qyh77yMNXMg6LaF5pe25oyJ5aSx6LSl5aSE55CGXG4gICAqIC0gYHNob3ctaW1tZWRpYXRlbHlg77ya56uL5Y2z5bGV56S677yM5LiN5YGa5Yi35paw5bCd6K+VXG4gICAqXG4gICAqIOacquS8oCBgZ2V0Q3JlZGVudGlhbHNgIOaXtu+8jOaXoOiuuumFjee9ruWmguS9lemDveaMiSBgc2hvdy1pbW1lZGlhdGVseWAg5omn6KGM44CCXG4gICAqL1xuICB0b2tlbkV4cGlyZWRTdHJhdGVneT86IFRva2VuRXhwaXJlZFN0cmF0ZWd5XG5cbiAgLyoqXG4gICAqIOaMiSBzY2VuZSDoh6rlrprkuYnmlofmoYjlkozmjInpkq7jgILmnKrphY3nva4gc2NlbmUg6LWw6buY6K6k6KGM5Li677yI6buY6K6k5paH5qGIICsg5peg5oyJ6ZKu77yJ44CCXG4gICAqL1xuICBvdmVycmlkZXM/OiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj5cbn1cblxuLyoqXG4gKiDlvZLkuIDljJblkI7nmoTnvLrnnIHpobXphY3nva7vvIzpgI/kvKDnu5kgaWZyYW1lIOS9v+eUqOOAglxuICog5omA5pyJ5Z+656GA5a2X5q616YO95piv5b+F5aGr5LiU5a6M5pW05aGr5YWF77yMaWZyYW1lIOS+p+S4jemcgOimgeWGjeihpem7mOiupOWAvOOAglxuICogYG92ZXJyaWRlc2Ag5L+d5oyB56iA55aP77yI5LuF5pC65bim5a6/5Li75pi+5byP5Lyg5YWl55qE5a2X5q6177yJ77yM6YG/5YWN6YCP5Lyg5aSa5L2Z5pWw5o2u44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9ybWFsaXplZEVtcHR5UGFnZU9wdGlvbnMge1xuICBlbmFibGVkOiBib29sZWFuXG4gIHNjZW5lczogRW1wdHlQYWdlU2NlbmVbXVxuICB0b2tlbkV4cGlyZWRTdHJhdGVneTogVG9rZW5FeHBpcmVkU3RyYXRlZ3lcbiAgb3ZlcnJpZGVzOiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj5cbn1cblxuLyoqXG4gKiBgZW1wdHlQYWdlU2hvd25gIOS6i+S7tiBwYXlsb2Fk44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlU2hvd25QYXlsb2FkIHtcbiAgc2NlbmU6IEVtcHR5UGFnZVNjZW5lXG4gIC8qKlxuICAgKiBzY2VuZSDlhoXnmoTlrZDnsbvlnovvvIjlpoIgRmlsZU9wZW5GYWlsZWRSZWFzb27vvInvvIzlrr/kuLvlj6/nlKjkuo7lrprliLbmlofmoYjmiJbln4vngrnjgIJcbiAgICovXG4gIHJlYXNvbj86IEZpbGVPcGVuRmFpbGVkUmVhc29uIHwgc3RyaW5nXG4gIGh0dHBTdGF0dXM/OiBudW1iZXJcbiAgcmV0cnlhYmxlPzogYm9vbGVhblxufVxuXG4vKipcbiAqIGBlbXB0eVBhZ2VBY3Rpb25gIOS6i+S7tiBwYXlsb2Fk77yM5oyJ6ZKu6KKr54K55Ye75pe26Kem5Y+R44CCXG4gKiDlrr/kuLvmoLnmja4gc2NlbmUgKyBhY3Rpb24g5Yaz5a6a5Lia5Yqh6KGM5Li677yI6YeN55m7IC8g6YeN6K+VIC8g6ZqQ6JeP562J77yJ44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlQWN0aW9uUGF5bG9hZCB7XG4gIHNjZW5lOiBFbXB0eVBhZ2VTY2VuZVxuICBhY3Rpb246ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknXG59XG5cbi8qKlxuICogYGVtcHR5UGFnZUhpZGRlbmAg5LqL5Lu2IHBheWxvYWTjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VIaWRkZW5QYXlsb2FkIHtcbiAgc2NlbmU6IEVtcHR5UGFnZVNjZW5lXG59XG5cbi8qKlxuICog5a6M5pW055qEIHNjZW5lIOWIl+ihqO+8jOeUqOS6juS9nOS4uum7mOiupOWAvOS4juWQiOazleaAp+agoemqjOOAglxuICovXG5leHBvcnQgY29uc3QgQUxMX0VNUFRZX1BBR0VfU0NFTkVTOiBFbXB0eVBhZ2VTY2VuZVtdID0gW1xuICAnZmlsZS1vcGVuLWZhaWxlZCcsXG4gICduby1wZXJtaXNzaW9uJyxcbiAgJ25ldHdvcmstZXJyb3InLFxuICAndG9rZW4tZXhwaXJlZCdcbl1cblxuZnVuY3Rpb24gcmVzb2x2ZVNjZW5lcyhpbnB1dDogRW1wdHlQYWdlU2NlbmVbXSB8IHVuZGVmaW5lZCk6IEVtcHR5UGFnZVNjZW5lW10ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgcmV0dXJuIFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdXG4gIH1cblxuICBjb25zdCBmaWx0ZXJlZDogRW1wdHlQYWdlU2NlbmVbXSA9IFtdXG4gIGZvciAoY29uc3Qgc2NlbmUgb2YgaW5wdXQpIHtcbiAgICBpZiAoQUxMX0VNUFRZX1BBR0VfU0NFTkVTLmluY2x1ZGVzKHNjZW5lKSkge1xuICAgICAgZmlsdGVyZWQucHVzaChzY2VuZSlcbiAgICB9XG4gIH1cblxuICBpZiAoZmlsdGVyZWQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdXG4gIH1cblxuICByZXR1cm4gZmlsdGVyZWRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5KFxuICBpbnB1dDogVG9rZW5FeHBpcmVkU3RyYXRlZ3kgfCB1bmRlZmluZWRcbik6IFRva2VuRXhwaXJlZFN0cmF0ZWd5IHtcbiAgaWYgKGlucHV0ID09PSAnc2hvdy1pbW1lZGlhdGVseScpIHtcbiAgICByZXR1cm4gJ3Nob3ctaW1tZWRpYXRlbHknXG4gIH1cbiAgcmV0dXJuICdyZWZyZXNoLWZpcnN0J1xufVxuXG5mdW5jdGlvbiBwaWNrU3RyaW5nKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBY3Rpb24oXG4gIGlucHV0OiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZSB8IHVuZGVmaW5lZFxuKTogRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgbGFiZWwgPSBwaWNrU3RyaW5nKGlucHV0LmxhYmVsKVxuICBpZiAoIWxhYmVsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG4gIHJldHVybiB7IGxhYmVsIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUNvbnRlbnRPdmVycmlkZShcbiAgaW5wdXQ6IEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSB8IHVuZGVmaW5lZFxuKTogRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUgPSB7fVxuICBjb25zdCB0aXRsZSA9IHBpY2tTdHJpbmcoaW5wdXQudGl0bGUpXG4gIGlmICh0aXRsZSkge1xuICAgIHJlc3VsdC50aXRsZSA9IHRpdGxlXG4gIH1cbiAgY29uc3QgZGVzY3JpcHRpb24gPSBwaWNrU3RyaW5nKGlucHV0LmRlc2NyaXB0aW9uKVxuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXN1bHQuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvblxuICB9XG4gIGNvbnN0IHByaW1hcnkgPSByZXNvbHZlQWN0aW9uKGlucHV0LnByaW1hcnkpXG4gIGlmIChwcmltYXJ5KSB7XG4gICAgcmVzdWx0LnByaW1hcnkgPSBwcmltYXJ5XG4gIH1cbiAgY29uc3Qgc2Vjb25kYXJ5ID0gcmVzb2x2ZUFjdGlvbihpbnB1dC5zZWNvbmRhcnkpXG4gIGlmIChzZWNvbmRhcnkpIHtcbiAgICByZXN1bHQuc2Vjb25kYXJ5ID0gc2Vjb25kYXJ5XG4gIH1cblxuICAvLyDlhajpg6jlrZfmrrXpg73nvLrlpLHml7bop4bkuLpcIuacqumFjee9rlwi77yM6K6p5raI6LS55L6n6LWw6buY6K6k5YiG5pSvXG4gIGlmIChcbiAgICByZXN1bHQudGl0bGUgPT09IHVuZGVmaW5lZCAmJlxuICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkICYmXG4gICAgcmVzdWx0LnByaW1hcnkgPT09IHVuZGVmaW5lZCAmJlxuICAgIHJlc3VsdC5zZWNvbmRhcnkgPT09IHVuZGVmaW5lZFxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPdmVycmlkZXMoXG4gIGlucHV0OiBFbXB0eVBhZ2VPcHRpb25zWydvdmVycmlkZXMnXVxuKTogUGFydGlhbDxSZWNvcmQ8RW1wdHlQYWdlU2NlbmUsIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZT4+IHtcbiAgaWYgKCFpbnB1dCB8fCB0eXBlb2YgaW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICBjb25zdCByZXN1bHQ6IFBhcnRpYWw8UmVjb3JkPEVtcHR5UGFnZVNjZW5lLCBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGU+PiA9IHt9XG4gIGZvciAoY29uc3Qgc2NlbmUgb2YgQUxMX0VNUFRZX1BBR0VfU0NFTkVTKSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlQ29udGVudE92ZXJyaWRlKGlucHV0W3NjZW5lXSlcbiAgICBpZiAocmVzb2x2ZWQpIHtcbiAgICAgIHJlc3VsdFtzY2VuZV0gPSByZXNvbHZlZFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICog5oqK5a6/5Li75Lyg5YWl55qEIGBlbXB0eVBhZ2VgIOmFjee9ruW9kuS4gOWMluaIkOWujOaVtOWvueixoeOAglxuICpcbiAqIC0g5pyq5LygIC8gdW5kZWZpbmVk77ya5ZCv55So5YWo6YOoIHNjZW5l77yM5L2/55So6buY6K6kIHRva2VuRXhwaXJlZFN0cmF0ZWd577yM5LiN5pC65bimIG92ZXJyaWRlc1xuICogLSDkvKAgdHJ1Ze+8muetieS7t+S6jiBgeyBlbmFibGVkOiB0cnVlIH1gXG4gKiAtIOS8oCBmYWxzZe+8muetieS7t+S6jiBgeyBlbmFibGVkOiBmYWxzZSB9YO+8jOWFtuS9meWtl+auteS7jeWhq+WFhem7mOiupOS7peS/neivgeW9oueKtuS4gOiHtFxuICogLSDkvKDlr7nosaHvvJrmjInlrZfmrrXopobnm5bvvIzmnKropobnm5bpg6jliIbkvb/nlKjpu5jorqRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMoXG4gIGlucHV0PzogYm9vbGVhbiB8IEVtcHR5UGFnZU9wdGlvbnNcbik6IE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zIHtcbiAgaWYgKGlucHV0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIHNjZW5lczogWy4uLkFMTF9FTVBUWV9QQUdFX1NDRU5FU10sXG4gICAgICB0b2tlbkV4cGlyZWRTdHJhdGVneTogJ3JlZnJlc2gtZmlyc3QnLFxuICAgICAgb3ZlcnJpZGVzOiB7fVxuICAgIH1cbiAgfVxuXG4gIGlmIChpbnB1dCA9PT0gdHJ1ZSB8fCBpbnB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBzY2VuZXM6IFsuLi5BTExfRU1QVFlfUEFHRV9TQ0VORVNdLFxuICAgICAgdG9rZW5FeHBpcmVkU3RyYXRlZ3k6ICdyZWZyZXNoLWZpcnN0JyxcbiAgICAgIG92ZXJyaWRlczoge31cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuYWJsZWQ6IHR5cGVvZiBpbnB1dC5lbmFibGVkID09PSAnYm9vbGVhbicgPyBpbnB1dC5lbmFibGVkIDogdHJ1ZSxcbiAgICBzY2VuZXM6IHJlc29sdmVTY2VuZXMoaW5wdXQuc2NlbmVzKSxcbiAgICB0b2tlbkV4cGlyZWRTdHJhdGVneTogcmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5KFxuICAgICAgaW5wdXQudG9rZW5FeHBpcmVkU3RyYXRlZ3lcbiAgICApLFxuICAgIG92ZXJyaWRlczogcmVzb2x2ZU92ZXJyaWRlcyhpbnB1dC5vdmVycmlkZXMpXG4gIH1cbn1cbiIsIi8vIFVuaXF1ZSBJRCBjcmVhdGlvbiByZXF1aXJlcyBhIGhpZ2ggcXVhbGl0eSByYW5kb20gIyBnZW5lcmF0b3IuIEluIHRoZSBicm93c2VyIHdlIHRoZXJlZm9yZVxuLy8gcmVxdWlyZSB0aGUgY3J5cHRvIEFQSSBhbmQgZG8gbm90IHN1cHBvcnQgYnVpbHQtaW4gZmFsbGJhY2sgdG8gbG93ZXIgcXVhbGl0eSByYW5kb20gbnVtYmVyXG4vLyBnZW5lcmF0b3JzIChsaWtlIE1hdGgucmFuZG9tKCkpLlxudmFyIGdldFJhbmRvbVZhbHVlcztcbnZhciBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgLy8gbGF6eSBsb2FkIHNvIHRoYXQgZW52aXJvbm1lbnRzIHRoYXQgbmVlZCB0byBwb2x5ZmlsbCBoYXZlIGEgY2hhbmNlIHRvIGRvIHNvXG4gIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gZ2V0UmFuZG9tVmFsdWVzIG5lZWRzIHRvIGJlIGludm9rZWQgaW4gYSBjb250ZXh0IHdoZXJlIFwidGhpc1wiIGlzIGEgQ3J5cHRvIGltcGxlbWVudGF0aW9uLiBBbHNvLFxuICAgIC8vIGZpbmQgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIGNyeXB0byAobXNDcnlwdG8pIG9uIElFMTEuXG4gICAgZ2V0UmFuZG9tVmFsdWVzID0gdHlwZW9mIGNyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSB8fCB0eXBlb2YgbXNDcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicgJiYgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQobXNDcnlwdG8pO1xuXG4gICAgaWYgKCFnZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3J5cHRvLmdldFJhbmRvbVZhbHVlcygpIG5vdCBzdXBwb3J0ZWQuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZ2V0cmFuZG9tdmFsdWVzLW5vdC1zdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzKHJuZHM4KTtcbn0iLCJleHBvcnQgZGVmYXVsdCAvXig/OlswLTlhLWZdezh9LVswLTlhLWZdezR9LVsxLTVdWzAtOWEtZl17M30tWzg5YWJdWzAtOWEtZl17M30tWzAtOWEtZl17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7IiwiaW1wb3J0IFJFR0VYIGZyb20gJy4vcmVnZXguanMnO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZSh1dWlkKSB7XG4gIHJldHVybiB0eXBlb2YgdXVpZCA9PT0gJ3N0cmluZycgJiYgUkVHRVgudGVzdCh1dWlkKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGU7IiwiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuLyoqXG4gKiBDb252ZXJ0IGFycmF5IG9mIDE2IGJ5dGUgdmFsdWVzIHRvIFVVSUQgc3RyaW5nIGZvcm1hdCBvZiB0aGUgZm9ybTpcbiAqIFhYWFhYWFhYLVhYWFgtWFhYWC1YWFhYLVhYWFhYWFhYWFhYWFxuICovXG5cbnZhciBieXRlVG9IZXggPSBbXTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICBieXRlVG9IZXgucHVzaCgoaSArIDB4MTAwKS50b1N0cmluZygxNikuc3Vic3RyKDEpKTtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5KGFycikge1xuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuICAvLyBOb3RlOiBCZSBjYXJlZnVsIGVkaXRpbmcgdGhpcyBjb2RlISAgSXQncyBiZWVuIHR1bmVkIGZvciBwZXJmb3JtYW5jZVxuICAvLyBhbmQgd29ya3MgaW4gd2F5cyB5b3UgbWF5IG5vdCBleHBlY3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQvcHVsbC80MzRcbiAgdmFyIHV1aWQgPSAoYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAzXV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA2XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDddXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA5XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEwXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDExXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDEzXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDE1XV0pLnRvTG93ZXJDYXNlKCk7IC8vIENvbnNpc3RlbmN5IGNoZWNrIGZvciB2YWxpZCBVVUlELiAgSWYgdGhpcyB0aHJvd3MsIGl0J3MgbGlrZWx5IGR1ZSB0byBvbmVcbiAgLy8gb2YgdGhlIGZvbGxvd2luZzpcbiAgLy8gLSBPbmUgb3IgbW9yZSBpbnB1dCBhcnJheSB2YWx1ZXMgZG9uJ3QgbWFwIHRvIGEgaGV4IG9jdGV0IChsZWFkaW5nIHRvXG4gIC8vIFwidW5kZWZpbmVkXCIgaW4gdGhlIHV1aWQpXG4gIC8vIC0gSW52YWxpZCBpbnB1dCB2YWx1ZXMgZm9yIHRoZSBSRkMgYHZlcnNpb25gIG9yIGB2YXJpYW50YCBmaWVsZHNcblxuICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdTdHJpbmdpZmllZCBVVUlEIGlzIGludmFsaWQnKTtcbiAgfVxuXG4gIHJldHVybiB1dWlkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdpZnk7IiwiaW1wb3J0IHJuZyBmcm9tICcuL3JuZy5qcyc7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5LmpzJzsgLy8gKipgdjEoKWAgLSBHZW5lcmF0ZSB0aW1lLWJhc2VkIFVVSUQqKlxuLy9cbi8vIEluc3BpcmVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9MaW9zSy9VVUlELmpzXG4vLyBhbmQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3V1aWQuaHRtbFxuXG52YXIgX25vZGVJZDtcblxudmFyIF9jbG9ja3NlcTsgLy8gUHJldmlvdXMgdXVpZCBjcmVhdGlvbiB0aW1lXG5cblxudmFyIF9sYXN0TVNlY3MgPSAwO1xudmFyIF9sYXN0TlNlY3MgPSAwOyAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkIGZvciBBUEkgZGV0YWlsc1xuXG5mdW5jdGlvbiB2MShvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICB2YXIgaSA9IGJ1ZiAmJiBvZmZzZXQgfHwgMDtcbiAgdmFyIGIgPSBidWYgfHwgbmV3IEFycmF5KDE2KTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBub2RlID0gb3B0aW9ucy5ub2RlIHx8IF9ub2RlSWQ7XG4gIHZhciBjbG9ja3NlcSA9IG9wdGlvbnMuY2xvY2tzZXEgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuY2xvY2tzZXEgOiBfY2xvY2tzZXE7IC8vIG5vZGUgYW5kIGNsb2Nrc2VxIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgdG8gcmFuZG9tIHZhbHVlcyBpZiB0aGV5J3JlIG5vdFxuICAvLyBzcGVjaWZpZWQuICBXZSBkbyB0aGlzIGxhemlseSB0byBtaW5pbWl6ZSBpc3N1ZXMgcmVsYXRlZCB0byBpbnN1ZmZpY2llbnRcbiAgLy8gc3lzdGVtIGVudHJvcHkuICBTZWUgIzE4OVxuXG4gIGlmIChub2RlID09IG51bGwgfHwgY2xvY2tzZXEgPT0gbnVsbCkge1xuICAgIHZhciBzZWVkQnl0ZXMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgcm5nKSgpO1xuXG4gICAgaWYgKG5vZGUgPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIDQuNSwgY3JlYXRlIGFuZCA0OC1iaXQgbm9kZSBpZCwgKDQ3IHJhbmRvbSBiaXRzICsgbXVsdGljYXN0IGJpdCA9IDEpXG4gICAgICBub2RlID0gX25vZGVJZCA9IFtzZWVkQnl0ZXNbMF0gfCAweDAxLCBzZWVkQnl0ZXNbMV0sIHNlZWRCeXRlc1syXSwgc2VlZEJ5dGVzWzNdLCBzZWVkQnl0ZXNbNF0sIHNlZWRCeXRlc1s1XV07XG4gICAgfVxuXG4gICAgaWYgKGNsb2Nrc2VxID09IG51bGwpIHtcbiAgICAgIC8vIFBlciA0LjIuMiwgcmFuZG9taXplICgxNCBiaXQpIGNsb2Nrc2VxXG4gICAgICBjbG9ja3NlcSA9IF9jbG9ja3NlcSA9IChzZWVkQnl0ZXNbNl0gPDwgOCB8IHNlZWRCeXRlc1s3XSkgJiAweDNmZmY7XG4gICAgfVxuICB9IC8vIFVVSUQgdGltZXN0YW1wcyBhcmUgMTAwIG5hbm8tc2Vjb25kIHVuaXRzIHNpbmNlIHRoZSBHcmVnb3JpYW4gZXBvY2gsXG4gIC8vICgxNTgyLTEwLTE1IDAwOjAwKS4gIEpTTnVtYmVycyBhcmVuJ3QgcHJlY2lzZSBlbm91Z2ggZm9yIHRoaXMsIHNvXG4gIC8vIHRpbWUgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGFzICdtc2VjcycgKGludGVnZXIgbWlsbGlzZWNvbmRzKSBhbmQgJ25zZWNzJ1xuICAvLyAoMTAwLW5hbm9zZWNvbmRzIG9mZnNldCBmcm9tIG1zZWNzKSBzaW5jZSB1bml4IGVwb2NoLCAxOTcwLTAxLTAxIDAwOjAwLlxuXG5cbiAgdmFyIG1zZWNzID0gb3B0aW9ucy5tc2VjcyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5tc2VjcyA6IERhdGUubm93KCk7IC8vIFBlciA0LjIuMS4yLCB1c2UgY291bnQgb2YgdXVpZCdzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIGN1cnJlbnQgY2xvY2tcbiAgLy8gY3ljbGUgdG8gc2ltdWxhdGUgaGlnaGVyIHJlc29sdXRpb24gY2xvY2tcblxuICB2YXIgbnNlY3MgPSBvcHRpb25zLm5zZWNzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5zZWNzIDogX2xhc3ROU2VjcyArIDE7IC8vIFRpbWUgc2luY2UgbGFzdCB1dWlkIGNyZWF0aW9uIChpbiBtc2VjcylcblxuICB2YXIgZHQgPSBtc2VjcyAtIF9sYXN0TVNlY3MgKyAobnNlY3MgLSBfbGFzdE5TZWNzKSAvIDEwMDAwOyAvLyBQZXIgNC4yLjEuMiwgQnVtcCBjbG9ja3NlcSBvbiBjbG9jayByZWdyZXNzaW9uXG5cbiAgaWYgKGR0IDwgMCAmJiBvcHRpb25zLmNsb2Nrc2VxID09PSB1bmRlZmluZWQpIHtcbiAgICBjbG9ja3NlcSA9IGNsb2Nrc2VxICsgMSAmIDB4M2ZmZjtcbiAgfSAvLyBSZXNldCBuc2VjcyBpZiBjbG9jayByZWdyZXNzZXMgKG5ldyBjbG9ja3NlcSkgb3Igd2UndmUgbW92ZWQgb250byBhIG5ld1xuICAvLyB0aW1lIGludGVydmFsXG5cblxuICBpZiAoKGR0IDwgMCB8fCBtc2VjcyA+IF9sYXN0TVNlY3MpICYmIG9wdGlvbnMubnNlY3MgPT09IHVuZGVmaW5lZCkge1xuICAgIG5zZWNzID0gMDtcbiAgfSAvLyBQZXIgNC4yLjEuMiBUaHJvdyBlcnJvciBpZiB0b28gbWFueSB1dWlkcyBhcmUgcmVxdWVzdGVkXG5cblxuICBpZiAobnNlY3MgPj0gMTAwMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1dWlkLnYxKCk6IENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gMTBNIHV1aWRzL3NlY1wiKTtcbiAgfVxuXG4gIF9sYXN0TVNlY3MgPSBtc2VjcztcbiAgX2xhc3ROU2VjcyA9IG5zZWNzO1xuICBfY2xvY2tzZXEgPSBjbG9ja3NlcTsgLy8gUGVyIDQuMS40IC0gQ29udmVydCBmcm9tIHVuaXggZXBvY2ggdG8gR3JlZ29yaWFuIGVwb2NoXG5cbiAgbXNlY3MgKz0gMTIyMTkyOTI4MDAwMDA7IC8vIGB0aW1lX2xvd2BcblxuICB2YXIgdGwgPSAoKG1zZWNzICYgMHhmZmZmZmZmKSAqIDEwMDAwICsgbnNlY3MpICUgMHgxMDAwMDAwMDA7XG4gIGJbaSsrXSA9IHRsID4+PiAyNCAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRsID4+PiAxNiAmIDB4ZmY7XG4gIGJbaSsrXSA9IHRsID4+PiA4ICYgMHhmZjtcbiAgYltpKytdID0gdGwgJiAweGZmOyAvLyBgdGltZV9taWRgXG5cbiAgdmFyIHRtaCA9IG1zZWNzIC8gMHgxMDAwMDAwMDAgKiAxMDAwMCAmIDB4ZmZmZmZmZjtcbiAgYltpKytdID0gdG1oID4+PiA4ICYgMHhmZjtcbiAgYltpKytdID0gdG1oICYgMHhmZjsgLy8gYHRpbWVfaGlnaF9hbmRfdmVyc2lvbmBcblxuICBiW2krK10gPSB0bWggPj4+IDI0ICYgMHhmIHwgMHgxMDsgLy8gaW5jbHVkZSB2ZXJzaW9uXG5cbiAgYltpKytdID0gdG1oID4+PiAxNiAmIDB4ZmY7IC8vIGBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkYCAoUGVyIDQuMi4yIC0gaW5jbHVkZSB2YXJpYW50KVxuXG4gIGJbaSsrXSA9IGNsb2Nrc2VxID4+PiA4IHwgMHg4MDsgLy8gYGNsb2NrX3NlcV9sb3dgXG5cbiAgYltpKytdID0gY2xvY2tzZXEgJiAweGZmOyAvLyBgbm9kZWBcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IDY7ICsrbikge1xuICAgIGJbaSArIG5dID0gbm9kZVtuXTtcbiAgfVxuXG4gIHJldHVybiBidWYgfHwgc3RyaW5naWZ5KGIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2MTsiLCJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG5cbmZ1bmN0aW9uIHBhcnNlKHV1aWQpIHtcbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCBVVUlEJyk7XG4gIH1cblxuICB2YXIgdjtcbiAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gUGFyc2UgIyMjIyMjIyMtLi4uLi0uLi4uLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDAsIDgpLCAxNikpID4+PiAyNDtcbiAgYXJyWzFdID0gdiA+Pj4gMTYgJiAweGZmO1xuICBhcnJbMl0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzNdID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLSMjIyMtLi4uLi0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFycls0XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSg5LCAxMyksIDE2KSkgPj4+IDg7XG4gIGFycls1XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLSMjIyMtLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbNl0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMTQsIDE4KSwgMTYpKSA+Pj4gODtcbiAgYXJyWzddID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tLi4uLi0jIyMjLS4uLi4uLi4uLi4uLlxuXG4gIGFycls4XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgxOSwgMjMpLCAxNikpID4+PiA4O1xuICBhcnJbOV0gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0uLi4uLS4uLi4tIyMjIyMjIyMjIyMjXG4gIC8vIChVc2UgXCIvXCIgdG8gYXZvaWQgMzItYml0IHRydW5jYXRpb24gd2hlbiBiaXQtc2hpZnRpbmcgaGlnaC1vcmRlciBieXRlcylcblxuICBhcnJbMTBdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDI0LCAzNiksIDE2KSkgLyAweDEwMDAwMDAwMDAwICYgMHhmZjtcbiAgYXJyWzExXSA9IHYgLyAweDEwMDAwMDAwMCAmIDB4ZmY7XG4gIGFyclsxMl0gPSB2ID4+PiAyNCAmIDB4ZmY7XG4gIGFyclsxM10gPSB2ID4+PiAxNiAmIDB4ZmY7XG4gIGFyclsxNF0gPSB2ID4+PiA4ICYgMHhmZjtcbiAgYXJyWzE1XSA9IHYgJiAweGZmO1xuICByZXR1cm4gYXJyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBwYXJzZTsiLCJpbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcbmltcG9ydCBwYXJzZSBmcm9tICcuL3BhcnNlLmpzJztcblxuZnVuY3Rpb24gc3RyaW5nVG9CeXRlcyhzdHIpIHtcbiAgc3RyID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHN0cikpOyAvLyBVVEY4IGVzY2FwZVxuXG4gIHZhciBieXRlcyA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgYnl0ZXMucHVzaChzdHIuY2hhckNvZGVBdChpKSk7XG4gIH1cblxuICByZXR1cm4gYnl0ZXM7XG59XG5cbmV4cG9ydCB2YXIgRE5TID0gJzZiYTdiODEwLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnQgdmFyIFVSTCA9ICc2YmE3YjgxMS05ZGFkLTExZDEtODBiNC0wMGMwNGZkNDMwYzgnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKG5hbWUsIHZlcnNpb24sIGhhc2hmdW5jKSB7XG4gIGZ1bmN0aW9uIGdlbmVyYXRlVVVJRCh2YWx1ZSwgbmFtZXNwYWNlLCBidWYsIG9mZnNldCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IHN0cmluZ1RvQnl0ZXModmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgbmFtZXNwYWNlID0gcGFyc2UobmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICBpZiAobmFtZXNwYWNlLmxlbmd0aCAhPT0gMTYpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignTmFtZXNwYWNlIG11c3QgYmUgYXJyYXktbGlrZSAoMTYgaXRlcmFibGUgaW50ZWdlciB2YWx1ZXMsIDAtMjU1KScpO1xuICAgIH0gLy8gQ29tcHV0ZSBoYXNoIG9mIG5hbWVzcGFjZSBhbmQgdmFsdWUsIFBlciA0LjNcbiAgICAvLyBGdXR1cmU6IFVzZSBzcHJlYWQgc3ludGF4IHdoZW4gc3VwcG9ydGVkIG9uIGFsbCBwbGF0Zm9ybXMsIGUuZy4gYGJ5dGVzID1cbiAgICAvLyBoYXNoZnVuYyhbLi4ubmFtZXNwYWNlLCAuLi4gdmFsdWVdKWBcblxuXG4gICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoMTYgKyB2YWx1ZS5sZW5ndGgpO1xuICAgIGJ5dGVzLnNldChuYW1lc3BhY2UpO1xuICAgIGJ5dGVzLnNldCh2YWx1ZSwgbmFtZXNwYWNlLmxlbmd0aCk7XG4gICAgYnl0ZXMgPSBoYXNoZnVuYyhieXRlcyk7XG4gICAgYnl0ZXNbNl0gPSBieXRlc1s2XSAmIDB4MGYgfCB2ZXJzaW9uO1xuICAgIGJ5dGVzWzhdID0gYnl0ZXNbOF0gJiAweDNmIHwgMHg4MDtcblxuICAgIGlmIChidWYpIHtcbiAgICAgIG9mZnNldCA9IG9mZnNldCB8fCAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgICAgYnVmW29mZnNldCArIGldID0gYnl0ZXNbaV07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidWY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ2lmeShieXRlcyk7XG4gIH0gLy8gRnVuY3Rpb24jbmFtZSBpcyBub3Qgc2V0dGFibGUgb24gc29tZSBwbGF0Zm9ybXMgKCMyNzApXG5cblxuICB0cnkge1xuICAgIGdlbmVyYXRlVVVJRC5uYW1lID0gbmFtZTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XG4gIH0gY2F0Y2ggKGVycikge30gLy8gRm9yIENvbW1vbkpTIGRlZmF1bHQgZXhwb3J0IHN1cHBvcnRcblxuXG4gIGdlbmVyYXRlVVVJRC5ETlMgPSBETlM7XG4gIGdlbmVyYXRlVVVJRC5VUkwgPSBVUkw7XG4gIHJldHVybiBnZW5lcmF0ZVVVSUQ7XG59IiwiLypcbiAqIEJyb3dzZXItY29tcGF0aWJsZSBKYXZhU2NyaXB0IE1ENVxuICpcbiAqIE1vZGlmaWNhdGlvbiBvZiBKYXZhU2NyaXB0IE1ENVxuICogaHR0cHM6Ly9naXRodWIuY29tL2JsdWVpbXAvSmF2YVNjcmlwdC1NRDVcbiAqXG4gKiBDb3B5cmlnaHQgMjAxMSwgU2ViYXN0aWFuIFRzY2hhblxuICogaHR0cHM6Ly9ibHVlaW1wLm5ldFxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZTpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvTUlUXG4gKlxuICogQmFzZWQgb25cbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1IE1lc3NhZ2VcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXG4gKiBWZXJzaW9uIDIuMiBDb3B5cmlnaHQgKEMpIFBhdWwgSm9obnN0b24gMTk5OSAtIDIwMDlcbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIG1vcmUgaW5mby5cbiAqL1xuZnVuY3Rpb24gbWQ1KGJ5dGVzKSB7XG4gIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIG1zZyA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChieXRlcykpOyAvLyBVVEY4IGVzY2FwZVxuXG4gICAgYnl0ZXMgPSBuZXcgVWludDhBcnJheShtc2cubGVuZ3RoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgKytpKSB7XG4gICAgICBieXRlc1tpXSA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZDVUb0hleEVuY29kZWRBcnJheSh3b3Jkc1RvTWQ1KGJ5dGVzVG9Xb3JkcyhieXRlcyksIGJ5dGVzLmxlbmd0aCAqIDgpKTtcbn1cbi8qXG4gKiBDb252ZXJ0IGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMgdG8gYW4gYXJyYXkgb2YgYnl0ZXNcbiAqL1xuXG5cbmZ1bmN0aW9uIG1kNVRvSGV4RW5jb2RlZEFycmF5KGlucHV0KSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgdmFyIGxlbmd0aDMyID0gaW5wdXQubGVuZ3RoICogMzI7XG4gIHZhciBoZXhUYWIgPSAnMDEyMzQ1Njc4OWFiY2RlZic7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGgzMjsgaSArPSA4KSB7XG4gICAgdmFyIHggPSBpbnB1dFtpID4+IDVdID4+PiBpICUgMzIgJiAweGZmO1xuICAgIHZhciBoZXggPSBwYXJzZUludChoZXhUYWIuY2hhckF0KHggPj4+IDQgJiAweDBmKSArIGhleFRhYi5jaGFyQXQoeCAmIDB4MGYpLCAxNik7XG4gICAgb3V0cHV0LnB1c2goaGV4KTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG4vKipcbiAqIENhbGN1bGF0ZSBvdXRwdXQgbGVuZ3RoIHdpdGggcGFkZGluZyBhbmQgYml0IGxlbmd0aFxuICovXG5cblxuZnVuY3Rpb24gZ2V0T3V0cHV0TGVuZ3RoKGlucHV0TGVuZ3RoOCkge1xuICByZXR1cm4gKGlucHV0TGVuZ3RoOCArIDY0ID4+PiA5IDw8IDQpICsgMTQgKyAxO1xufVxuLypcbiAqIENhbGN1bGF0ZSB0aGUgTUQ1IG9mIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMsIGFuZCBhIGJpdCBsZW5ndGguXG4gKi9cblxuXG5mdW5jdGlvbiB3b3Jkc1RvTWQ1KHgsIGxlbikge1xuICAvKiBhcHBlbmQgcGFkZGluZyAqL1xuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8IGxlbiAlIDMyO1xuICB4W2dldE91dHB1dExlbmd0aChsZW4pIC0gMV0gPSBsZW47XG4gIHZhciBhID0gMTczMjU4NDE5MztcbiAgdmFyIGIgPSAtMjcxNzMzODc5O1xuICB2YXIgYyA9IC0xNzMyNTg0MTk0O1xuICB2YXIgZCA9IDI3MTczMzg3ODtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpICs9IDE2KSB7XG4gICAgdmFyIG9sZGEgPSBhO1xuICAgIHZhciBvbGRiID0gYjtcbiAgICB2YXIgb2xkYyA9IGM7XG4gICAgdmFyIG9sZGQgPSBkO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2ldLCA3LCAtNjgwODc2OTM2KTtcbiAgICBkID0gbWQ1ZmYoZCwgYSwgYiwgYywgeFtpICsgMV0sIDEyLCAtMzg5NTY0NTg2KTtcbiAgICBjID0gbWQ1ZmYoYywgZCwgYSwgYiwgeFtpICsgMl0sIDE3LCA2MDYxMDU4MTkpO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcbiAgICBhID0gbWQ1ZmYoYSwgYiwgYywgZCwgeFtpICsgNF0sIDcsIC0xNzY0MTg4OTcpO1xuICAgIGQgPSBtZDVmZihkLCBhLCBiLCBjLCB4W2kgKyA1XSwgMTIsIDEyMDAwODA0MjYpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyA2XSwgMTcsIC0xNDczMjMxMzQxKTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgN10sIDIyLCAtNDU3MDU5ODMpO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2kgKyA4XSwgNywgMTc3MDAzNTQxNik7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDldLCAxMiwgLTE5NTg0MTQ0MTcpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyAxMF0sIDE3LCAtNDIwNjMpO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyAxMV0sIDIyLCAtMTk5MDQwNDE2Mik7XG4gICAgYSA9IG1kNWZmKGEsIGIsIGMsIGQsIHhbaSArIDEyXSwgNywgMTgwNDYwMzY4Mik7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDEzXSwgMTIsIC00MDM0MTEwMSk7XG4gICAgYyA9IG1kNWZmKGMsIGQsIGEsIGIsIHhbaSArIDE0XSwgMTcsIC0xNTAyMDAyMjkwKTtcbiAgICBiID0gbWQ1ZmYoYiwgYywgZCwgYSwgeFtpICsgMTVdLCAyMiwgMTIzNjUzNTMyOSk7XG4gICAgYSA9IG1kNWdnKGEsIGIsIGMsIGQsIHhbaSArIDFdLCA1LCAtMTY1Nzk2NTEwKTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgNl0sIDksIC0xMDY5NTAxNjMyKTtcbiAgICBjID0gbWQ1Z2coYywgZCwgYSwgYiwgeFtpICsgMTFdLCAxNCwgNjQzNzE3NzEzKTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpXSwgMjAsIC0zNzM4OTczMDIpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyA1XSwgNSwgLTcwMTU1ODY5MSk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDEwXSwgOSwgMzgwMTYwODMpO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyAxNV0sIDE0LCAtNjYwNDc4MzM1KTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpICsgNF0sIDIwLCAtNDA1NTM3ODQ4KTtcbiAgICBhID0gbWQ1Z2coYSwgYiwgYywgZCwgeFtpICsgOV0sIDUsIDU2ODQ0NjQzOCk7XG4gICAgZCA9IG1kNWdnKGQsIGEsIGIsIGMsIHhbaSArIDE0XSwgOSwgLTEwMTk4MDM2OTApO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyAzXSwgMTQsIC0xODczNjM5NjEpO1xuICAgIGIgPSBtZDVnZyhiLCBjLCBkLCBhLCB4W2kgKyA4XSwgMjAsIDExNjM1MzE1MDEpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyAxM10sIDUsIC0xNDQ0NjgxNDY3KTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgMl0sIDksIC01MTQwMzc4NCk7XG4gICAgYyA9IG1kNWdnKGMsIGQsIGEsIGIsIHhbaSArIDddLCAxNCwgMTczNTMyODQ3Myk7XG4gICAgYiA9IG1kNWdnKGIsIGMsIGQsIGEsIHhbaSArIDEyXSwgMjAsIC0xOTI2NjA3NzM0KTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgNV0sIDQsIC0zNzg1NTgpO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2kgKyA4XSwgMTEsIC0yMDIyNTc0NDYzKTtcbiAgICBjID0gbWQ1aGgoYywgZCwgYSwgYiwgeFtpICsgMTFdLCAxNiwgMTgzOTAzMDU2Mik7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDE0XSwgMjMsIC0zNTMwOTU1Nik7XG4gICAgYSA9IG1kNWhoKGEsIGIsIGMsIGQsIHhbaSArIDFdLCA0LCAtMTUzMDk5MjA2MCk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaSArIDRdLCAxMSwgMTI3Mjg5MzM1Myk7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDddLCAxNiwgLTE1NTQ5NzYzMik7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDEwXSwgMjMsIC0xMDk0NzMwNjQwKTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgMTNdLCA0LCA2ODEyNzkxNzQpO1xuICAgIGQgPSBtZDVoaChkLCBhLCBiLCBjLCB4W2ldLCAxMSwgLTM1ODUzNzIyMik7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDNdLCAxNiwgLTcyMjUyMTk3OSk7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDZdLCAyMywgNzYwMjkxODkpO1xuICAgIGEgPSBtZDVoaChhLCBiLCBjLCBkLCB4W2kgKyA5XSwgNCwgLTY0MDM2NDQ4Nyk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaSArIDEyXSwgMTEsIC00MjE4MTU4MzUpO1xuICAgIGMgPSBtZDVoaChjLCBkLCBhLCBiLCB4W2kgKyAxNV0sIDE2LCA1MzA3NDI1MjApO1xuICAgIGIgPSBtZDVoaChiLCBjLCBkLCBhLCB4W2kgKyAyXSwgMjMsIC05OTUzMzg2NTEpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2ldLCA2LCAtMTk4NjMwODQ0KTtcbiAgICBkID0gbWQ1aWkoZCwgYSwgYiwgYywgeFtpICsgN10sIDEwLCAxMTI2ODkxNDE1KTtcbiAgICBjID0gbWQ1aWkoYywgZCwgYSwgYiwgeFtpICsgMTRdLCAxNSwgLTE0MTYzNTQ5MDUpO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyA1XSwgMjEsIC01NzQzNDA1NSk7XG4gICAgYSA9IG1kNWlpKGEsIGIsIGMsIGQsIHhbaSArIDEyXSwgNiwgMTcwMDQ4NTU3MSk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDNdLCAxMCwgLTE4OTQ5ODY2MDYpO1xuICAgIGMgPSBtZDVpaShjLCBkLCBhLCBiLCB4W2kgKyAxMF0sIDE1LCAtMTA1MTUyMyk7XG4gICAgYiA9IG1kNWlpKGIsIGMsIGQsIGEsIHhbaSArIDFdLCAyMSwgLTIwNTQ5MjI3OTkpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2kgKyA4XSwgNiwgMTg3MzMxMzM1OSk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDE1XSwgMTAsIC0zMDYxMTc0NCk7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDZdLCAxNSwgLTE1NjAxOTgzODApO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyAxM10sIDIxLCAxMzA5MTUxNjQ5KTtcbiAgICBhID0gbWQ1aWkoYSwgYiwgYywgZCwgeFtpICsgNF0sIDYsIC0xNDU1MjMwNzApO1xuICAgIGQgPSBtZDVpaShkLCBhLCBiLCBjLCB4W2kgKyAxMV0sIDEwLCAtMTEyMDIxMDM3OSk7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDJdLCAxNSwgNzE4Nzg3MjU5KTtcbiAgICBiID0gbWQ1aWkoYiwgYywgZCwgYSwgeFtpICsgOV0sIDIxLCAtMzQzNDg1NTUxKTtcbiAgICBhID0gc2FmZUFkZChhLCBvbGRhKTtcbiAgICBiID0gc2FmZUFkZChiLCBvbGRiKTtcbiAgICBjID0gc2FmZUFkZChjLCBvbGRjKTtcbiAgICBkID0gc2FmZUFkZChkLCBvbGRkKTtcbiAgfVxuXG4gIHJldHVybiBbYSwgYiwgYywgZF07XG59XG4vKlxuICogQ29udmVydCBhbiBhcnJheSBieXRlcyB0byBhbiBhcnJheSBvZiBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gKiBDaGFyYWN0ZXJzID4yNTUgaGF2ZSB0aGVpciBoaWdoLWJ5dGUgc2lsZW50bHkgaWdub3JlZC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJ5dGVzVG9Xb3JkcyhpbnB1dCkge1xuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgdmFyIGxlbmd0aDggPSBpbnB1dC5sZW5ndGggKiA4O1xuICB2YXIgb3V0cHV0ID0gbmV3IFVpbnQzMkFycmF5KGdldE91dHB1dExlbmd0aChsZW5ndGg4KSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg4OyBpICs9IDgpIHtcbiAgICBvdXRwdXRbaSA+PiA1XSB8PSAoaW5wdXRbaSAvIDhdICYgMHhmZikgPDwgaSAlIDMyO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cbi8qXG4gKiBBZGQgaW50ZWdlcnMsIHdyYXBwaW5nIGF0IDJeMzIuIFRoaXMgdXNlcyAxNi1iaXQgb3BlcmF0aW9ucyBpbnRlcm5hbGx5XG4gKiB0byB3b3JrIGFyb3VuZCBidWdzIGluIHNvbWUgSlMgaW50ZXJwcmV0ZXJzLlxuICovXG5cblxuZnVuY3Rpb24gc2FmZUFkZCh4LCB5KSB7XG4gIHZhciBsc3cgPSAoeCAmIDB4ZmZmZikgKyAoeSAmIDB4ZmZmZik7XG4gIHZhciBtc3cgPSAoeCA+PiAxNikgKyAoeSA+PiAxNikgKyAobHN3ID4+IDE2KTtcbiAgcmV0dXJuIG1zdyA8PCAxNiB8IGxzdyAmIDB4ZmZmZjtcbn1cbi8qXG4gKiBCaXR3aXNlIHJvdGF0ZSBhIDMyLWJpdCBudW1iZXIgdG8gdGhlIGxlZnQuXG4gKi9cblxuXG5mdW5jdGlvbiBiaXRSb3RhdGVMZWZ0KG51bSwgY250KSB7XG4gIHJldHVybiBudW0gPDwgY250IHwgbnVtID4+PiAzMiAtIGNudDtcbn1cbi8qXG4gKiBUaGVzZSBmdW5jdGlvbnMgaW1wbGVtZW50IHRoZSBmb3VyIGJhc2ljIG9wZXJhdGlvbnMgdGhlIGFsZ29yaXRobSB1c2VzLlxuICovXG5cblxuZnVuY3Rpb24gbWQ1Y21uKHEsIGEsIGIsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIHNhZmVBZGQoYml0Um90YXRlTGVmdChzYWZlQWRkKHNhZmVBZGQoYSwgcSksIHNhZmVBZGQoeCwgdCkpLCBzKSwgYik7XG59XG5cbmZ1bmN0aW9uIG1kNWZmKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiICYgYyB8IH5iICYgZCwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmZ1bmN0aW9uIG1kNWdnKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiICYgZCB8IGMgJiB+ZCwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmZ1bmN0aW9uIG1kNWhoKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihiIF4gYyBeIGQsIGEsIGIsIHgsIHMsIHQpO1xufVxuXG5mdW5jdGlvbiBtZDVpaShhLCBiLCBjLCBkLCB4LCBzLCB0KSB7XG4gIHJldHVybiBtZDVjbW4oYyBeIChiIHwgfmQpLCBhLCBiLCB4LCBzLCB0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWQ1OyIsImltcG9ydCB2MzUgZnJvbSAnLi92MzUuanMnO1xuaW1wb3J0IG1kNSBmcm9tICcuL21kNS5qcyc7XG52YXIgdjMgPSB2MzUoJ3YzJywgMHgzMCwgbWQ1KTtcbmV4cG9ydCBkZWZhdWx0IHYzOyIsImltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7IC8vIFBlciA0LjQsIHNldCBiaXRzIGZvciB2ZXJzaW9uIGFuZCBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGBcblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZnkocm5kcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHY0OyIsIi8vIEFkYXB0ZWQgZnJvbSBDaHJpcyBWZW5lc3MnIFNIQTEgY29kZSBhdFxuLy8gaHR0cDovL3d3dy5tb3ZhYmxlLXR5cGUuY28udWsvc2NyaXB0cy9zaGExLmh0bWxcbmZ1bmN0aW9uIGYocywgeCwgeSwgeikge1xuICBzd2l0Y2ggKHMpIHtcbiAgICBjYXNlIDA6XG4gICAgICByZXR1cm4geCAmIHkgXiB+eCAmIHo7XG5cbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4geCBeIHkgXiB6O1xuXG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHggJiB5IF4geCAmIHogXiB5ICYgejtcblxuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiB4IF4geSBeIHo7XG4gIH1cbn1cblxuZnVuY3Rpb24gUk9UTCh4LCBuKSB7XG4gIHJldHVybiB4IDw8IG4gfCB4ID4+PiAzMiAtIG47XG59XG5cbmZ1bmN0aW9uIHNoYTEoYnl0ZXMpIHtcbiAgdmFyIEsgPSBbMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYywgMHhjYTYyYzFkNl07XG4gIHZhciBIID0gWzB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjBdO1xuXG4gIGlmICh0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIG1zZyA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChieXRlcykpOyAvLyBVVEY4IGVzY2FwZVxuXG4gICAgYnl0ZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgKytpKSB7XG4gICAgICBieXRlcy5wdXNoKG1zZy5jaGFyQ29kZUF0KGkpKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoYnl0ZXMpKSB7XG4gICAgLy8gQ29udmVydCBBcnJheS1saWtlIHRvIEFycmF5XG4gICAgYnl0ZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChieXRlcyk7XG4gIH1cblxuICBieXRlcy5wdXNoKDB4ODApO1xuICB2YXIgbCA9IGJ5dGVzLmxlbmd0aCAvIDQgKyAyO1xuICB2YXIgTiA9IE1hdGguY2VpbChsIC8gMTYpO1xuICB2YXIgTSA9IG5ldyBBcnJheShOKTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgTjsgKytfaSkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDMyQXJyYXkoMTYpO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB7XG4gICAgICBhcnJbal0gPSBieXRlc1tfaSAqIDY0ICsgaiAqIDRdIDw8IDI0IHwgYnl0ZXNbX2kgKiA2NCArIGogKiA0ICsgMV0gPDwgMTYgfCBieXRlc1tfaSAqIDY0ICsgaiAqIDQgKyAyXSA8PCA4IHwgYnl0ZXNbX2kgKiA2NCArIGogKiA0ICsgM107XG4gICAgfVxuXG4gICAgTVtfaV0gPSBhcnI7XG4gIH1cblxuICBNW04gLSAxXVsxNF0gPSAoYnl0ZXMubGVuZ3RoIC0gMSkgKiA4IC8gTWF0aC5wb3coMiwgMzIpO1xuICBNW04gLSAxXVsxNF0gPSBNYXRoLmZsb29yKE1bTiAtIDFdWzE0XSk7XG4gIE1bTiAtIDFdWzE1XSA9IChieXRlcy5sZW5ndGggLSAxKSAqIDggJiAweGZmZmZmZmZmO1xuXG4gIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IE47ICsrX2kyKSB7XG4gICAgdmFyIFcgPSBuZXcgVWludDMyQXJyYXkoODApO1xuXG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCAxNjsgKyt0KSB7XG4gICAgICBXW3RdID0gTVtfaTJdW3RdO1xuICAgIH1cblxuICAgIGZvciAodmFyIF90ID0gMTY7IF90IDwgODA7ICsrX3QpIHtcbiAgICAgIFdbX3RdID0gUk9UTChXW190IC0gM10gXiBXW190IC0gOF0gXiBXW190IC0gMTRdIF4gV1tfdCAtIDE2XSwgMSk7XG4gICAgfVxuXG4gICAgdmFyIGEgPSBIWzBdO1xuICAgIHZhciBiID0gSFsxXTtcbiAgICB2YXIgYyA9IEhbMl07XG4gICAgdmFyIGQgPSBIWzNdO1xuICAgIHZhciBlID0gSFs0XTtcblxuICAgIGZvciAodmFyIF90MiA9IDA7IF90MiA8IDgwOyArK190Mikge1xuICAgICAgdmFyIHMgPSBNYXRoLmZsb29yKF90MiAvIDIwKTtcbiAgICAgIHZhciBUID0gUk9UTChhLCA1KSArIGYocywgYiwgYywgZCkgKyBlICsgS1tzXSArIFdbX3QyXSA+Pj4gMDtcbiAgICAgIGUgPSBkO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gUk9UTChiLCAzMCkgPj4+IDA7XG4gICAgICBiID0gYTtcbiAgICAgIGEgPSBUO1xuICAgIH1cblxuICAgIEhbMF0gPSBIWzBdICsgYSA+Pj4gMDtcbiAgICBIWzFdID0gSFsxXSArIGIgPj4+IDA7XG4gICAgSFsyXSA9IEhbMl0gKyBjID4+PiAwO1xuICAgIEhbM10gPSBIWzNdICsgZCA+Pj4gMDtcbiAgICBIWzRdID0gSFs0XSArIGUgPj4+IDA7XG4gIH1cblxuICByZXR1cm4gW0hbMF0gPj4gMjQgJiAweGZmLCBIWzBdID4+IDE2ICYgMHhmZiwgSFswXSA+PiA4ICYgMHhmZiwgSFswXSAmIDB4ZmYsIEhbMV0gPj4gMjQgJiAweGZmLCBIWzFdID4+IDE2ICYgMHhmZiwgSFsxXSA+PiA4ICYgMHhmZiwgSFsxXSAmIDB4ZmYsIEhbMl0gPj4gMjQgJiAweGZmLCBIWzJdID4+IDE2ICYgMHhmZiwgSFsyXSA+PiA4ICYgMHhmZiwgSFsyXSAmIDB4ZmYsIEhbM10gPj4gMjQgJiAweGZmLCBIWzNdID4+IDE2ICYgMHhmZiwgSFszXSA+PiA4ICYgMHhmZiwgSFszXSAmIDB4ZmYsIEhbNF0gPj4gMjQgJiAweGZmLCBIWzRdID4+IDE2ICYgMHhmZiwgSFs0XSA+PiA4ICYgMHhmZiwgSFs0XSAmIDB4ZmZdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaGExOyIsImltcG9ydCB2MzUgZnJvbSAnLi92MzUuanMnO1xuaW1wb3J0IHNoYTEgZnJvbSAnLi9zaGExLmpzJztcbnZhciB2NSA9IHYzNSgndjUnLCAweDUwLCBzaGExKTtcbmV4cG9ydCBkZWZhdWx0IHY1OyIsImV4cG9ydCBkZWZhdWx0ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcblxuZnVuY3Rpb24gdmVyc2lvbih1dWlkKSB7XG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ0ludmFsaWQgVVVJRCcpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlSW50KHV1aWQuc3Vic3RyKDE0LCAxKSwgMTYpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2ZXJzaW9uOyIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX2E7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNvbnZlcnRGaWxlVHlwZSA9IGV4cG9ydHMuRmlsZVR5cGVBbGlhcyA9IGV4cG9ydHMuRmlsZVR5cGUgPSB2b2lkIDA7XG4vKipcbiAqIOefs+WiqOaWh+aho+exu+Wei1xuICovXG52YXIgRmlsZVR5cGU7XG4oZnVuY3Rpb24gKEZpbGVUeXBlKSB7XG4gICAgLyoqXG4gICAgICog5Lyg57uf5paH5qGjXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJEb2N1bWVudFByb1wiXSA9IFwiZG9jdW1lbnRQcm9cIjtcbiAgICAvKipcbiAgICAgKiDovbvmlofmoaNcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkRvY3VtZW50XCJdID0gXCJkb2N1bWVudFwiO1xuICAgIC8qKlxuICAgICAqIOihqOagvFxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiU3ByZWFkc2hlZXRcIl0gPSBcInNwcmVhZHNoZWV0XCI7XG4gICAgLyoqXG4gICAgICog5LiT5Lia5bm754Gv54mHXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJQcmVzZW50YXRpb25cIl0gPSBcInByZXNlbnRhdGlvblwiO1xuICAgIC8qKlxuICAgICAqIOW6lOeUqOihqOagvFxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiVGFibGVcIl0gPSBcInRhYmxlXCI7XG4gICAgLyoqXG4gICAgICog6KGo5Y2VXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJGb3JtXCJdID0gXCJmb3JtXCI7XG4gICAgLyoqXG4gICAgICog5rWB56iL5Zu+XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJGbG93Y2hhcnRcIl0gPSBcImZsb3djaGFydFwiO1xuICAgIC8qKlxuICAgICAqIOaAnee7tOWvvOWbvlxuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiTWluZG1hcFwiXSA9IFwibWluZG1hcFwiO1xuICAgIC8qKlxuICAgICAqIOeZveadv1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiQm9hcmRcIl0gPSBcImJvYXJkXCI7XG4gICAgLyoqXG4gICAgICog5pyq55+l57G75Z6LXG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJVbmtub3duXCJdID0gXCJ1bmtub3duXCI7XG59KShGaWxlVHlwZSA9IGV4cG9ydHMuRmlsZVR5cGUgfHwgKGV4cG9ydHMuRmlsZVR5cGUgPSB7fSkpO1xuZXhwb3J0cy5GaWxlVHlwZUFsaWFzID0gKF9hID0ge30sXG4gICAgX2FbRmlsZVR5cGUuRG9jdW1lbnRdID0gJ2RvY3MnLFxuICAgIF9hW0ZpbGVUeXBlLkRvY3VtZW50UHJvXSA9ICdkb2N4JyxcbiAgICBfYVtGaWxlVHlwZS5TcHJlYWRzaGVldF0gPSAnc2hlZXRzJyxcbiAgICBfYVtGaWxlVHlwZS5QcmVzZW50YXRpb25dID0gJ3ByZXNlbnRhdGlvbicsXG4gICAgX2FbRmlsZVR5cGUuVGFibGVdID0gJ3RhYmxlJyxcbiAgICBfYVtGaWxlVHlwZS5Gb3JtXSA9ICdmb3JtJyxcbiAgICBfYVtGaWxlVHlwZS5NaW5kbWFwXSA9ICdtaW5kbWFwJyxcbiAgICBfYVtGaWxlVHlwZS5Cb2FyZF0gPSAnYm9hcmQnLFxuICAgIF9hW0ZpbGVUeXBlLkZsb3djaGFydF0gPSAnZmxvd2NoYXJ0JyxcbiAgICBfYSk7XG4vKipcbiAqIOagueaNruS8oOWFpeWAvOi9rOaNouS4uiBGaWxlVHlwZSDmnprkuL7lgLxcbiAqL1xuZnVuY3Rpb24gY29udmVydEZpbGVUeXBlKHZhbHVlKSB7XG4gICAgdmFyIGVfMSwgX2EsIGVfMiwgX2I7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMoT2JqZWN0LmVudHJpZXMoRmlsZVR5cGUpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMiksIGsgPSBfZVswXSwgdiA9IF9lWzFdO1xuICAgICAgICAgICAgICAgIGlmIChrID09PSB2YWx1ZSB8fCB2ID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfZCAmJiAhX2QuZG9uZSAmJiAoX2EgPSBfYy5yZXR1cm4pKSBfYS5jYWxsKF9jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2YgPSBfX3ZhbHVlcyhPYmplY3QuZW50cmllcyhleHBvcnRzLkZpbGVUeXBlQWxpYXMpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgMiksIGsgPSBfaFswXSwgdiA9IF9oWzFdO1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgICAgICAgY2FzZSAtMjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRG9jdW1lbnQ7XG4gICAgICAgICAgICBjYXNlIC00OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5TcHJlYWRzaGVldDtcbiAgICAgICAgICAgIGNhc2UgLTY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkRvY3VtZW50UHJvO1xuICAgICAgICAgICAgY2FzZSAtNzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuTWluZG1hcDtcbiAgICAgICAgICAgIGNhc2UgLTg6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkZvcm07XG4gICAgICAgICAgICBjYXNlIC05OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5Cb2FyZDtcbiAgICAgICAgICAgIGNhc2UgLTEwOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5QcmVzZW50YXRpb247XG4gICAgICAgICAgICBjYXNlIC0xMTpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuVGFibGU7XG4gICAgICAgICAgICBjYXNlIC0xMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRmxvd2NoYXJ0O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBGaWxlVHlwZS5Vbmtub3duO1xufVxuZXhwb3J0cy5jb252ZXJ0RmlsZVR5cGUgPSBjb252ZXJ0RmlsZVR5cGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuUmVhZHlTdGF0ZSA9IGV4cG9ydHMuaXNTREtFdmVudE1lc3NhZ2UgPSBleHBvcnRzLlNES0V2ZW50ID0gdm9pZCAwO1xuLyoqXG4gKiBTREsg55u45YWz55qE5LqL5Lu277yM5ZKM57yW6L6R5Zmo5peg5YWzXG4gKi9cbmV4cG9ydHMuU0RLRXZlbnQgPSBPYmplY3QuZnJlZXplKHtcbiAgICAvKipcbiAgICAgKiDkuIDoiKzmjIcgY29udGFpbmVyIHZpZXdwb3J0IOWPkeeUn+WPmOWMluaXtuinpuWPke+8jOavlOWmgueql+WPo+Wkp+Wwj+WPmOWMluOAguS8muS8mOWFiOS9v+eUqCB3aW5kb3cudmlzdWFsVmlld3BvcnQgcmVzaXplIOS6i+S7tu+8jOS4jeWPr+eUqOaXtuS9v+eUqCB3aW5kb3cucmVzaXplIOS6i+S7tuOAglxuICAgICAqL1xuICAgIFZpZXdwb3J0UmVzaXplOiAnVmlld3BvcnRSZXNpemUnLFxuICAgIC8qKlxuICAgICAqIFNESyDlkoznvJbovpHlmajliJ3lp4vljJbnirbmgIFcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlOiAnUmVhZHlTdGF0ZScsXG59KTtcbi8qKlxuICog5Yik5pat5piv5ZCm5pivIFNES0V2ZW50IOS6i+S7tua2iOaBr1xuICovXG5mdW5jdGlvbiBpc1NES0V2ZW50TWVzc2FnZShpbnB1dCkge1xuICAgIHZhciBldmVudDtcbiAgICBpZiAoaW5wdXQgIT0gbnVsbCkge1xuICAgICAgICBldmVudCA9IGlucHV0LmV2ZW50O1xuICAgIH1cbiAgICByZXR1cm4gdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyAmJiBldmVudCBpbiBleHBvcnRzLlNES0V2ZW50O1xufVxuZXhwb3J0cy5pc1NES0V2ZW50TWVzc2FnZSA9IGlzU0RLRXZlbnRNZXNzYWdlO1xuLyoqXG4gKiBTREsg5ZKM57yW6L6R5Zmo5Yid5aeL5YyW54q25oCBXG4gKi9cbnZhciBSZWFkeVN0YXRlO1xuKGZ1bmN0aW9uIChSZWFkeVN0YXRlKSB7XG4gICAgLyoqXG4gICAgICog5q2j5Zyo5Yid5aeL5YyWIFNES1xuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJMb2FkaW5nXCJdID0gXCJsb2FkaW5nXCI7XG4gICAgLyoqXG4gICAgICog5q2j5Zyo5Yid5aeL5YyW57yW6L6R5ZmoXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIkxvYWRpbmdFZGl0b3JcIl0gPSBcImxvYWRpbmdFZGl0b3JcIjtcbiAgICAvKipcbiAgICAgKiBTREsg5ZKM57yW6L6R5Zmo5Yid5aeL5YyW5a6M5oiQ77yM5Zug57yW6L6R5Zmo5ZCr5byC5q2l57uE5Lu277yM5Zug5q2k5LuF5Luj6KGo5Y+v5Lul5ZKM57yW6L6R5Zmo5Lqk5LqS77yM5LiN5Luj6KGo57yW6L6R5Zmo5a6M5oiQ5YWo6YOo5Yqg6L2944CCXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIlJlYWR5XCJdID0gXCJyZWFkeVwiO1xuICAgIC8qKlxuICAgICAqIOWIneWni+WMluWksei0pVxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJGYWlsZWRcIl0gPSBcImZhaWxlZFwiO1xuICAgIC8qKlxuICAgICAqIOW3sue7j+iiq+mUgOavgVxuICAgICAqL1xuICAgIFJlYWR5U3RhdGVbXCJEaXNjb25uZWN0ZWRcIl0gPSBcImRpc2Nvbm5lY3RlZFwiO1xufSkoUmVhZHlTdGF0ZSA9IGV4cG9ydHMuUmVhZHlTdGF0ZSB8fCAoZXhwb3J0cy5SZWFkeVN0YXRlID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vdHlwZXNcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL0FQSUFkYXB0b3JcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL0ZpbGVcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2V2ZW50XCIpLCBleHBvcnRzKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5VcmxTaGFyaW5nVHlwZSA9IGV4cG9ydHMuU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSA9IGV4cG9ydHMuQ29udGFpbmVyTWV0aG9kID0gZXhwb3J0cy5JbnZva2VNZXRob2QgPSB2b2lkIDA7XG4vKipcbiAqIEpTIFNESyDkuYvpl7TpgJrkv6HnlKjnmoTmlrnms5XjgILkuIDoiKznlKjlnKggV2Vib2ZmaWNlQnJvYWRjYXN0Q2hhbm5lbC5pbnZva2UoKSDkuK3jgIJcbiAqL1xudmFyIEludm9rZU1ldGhvZDtcbihmdW5jdGlvbiAoSW52b2tlTWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICogU0RLIOWIneWni+WMlu+8jOeUqOS6juiOt+WPlumFjee9ruS/oeaBr1xuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlNES0luaXRcIl0gPSBcIlNES0luaXRcIjtcbiAgICAvKipcbiAgICAgKiDnlKjkuo4gZXJyb3Ig5aSE55CGXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiRXJyb3JcIl0gPSBcImVycm9yXCI7XG4gICAgLyoqXG4gICAgICog55So5LqO5aSE55CGIFJlYWR5U3RhdGUg5Y+Y5YyWXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiUmVhZHlTdGF0ZVwiXSA9IFwicmVhZHlTdGF0ZVwiO1xuICAgIC8qKlxuICAgICAqIOeUqOS6juabtOaWsOmJtOadg+S/oeaBr1xuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIlNldENyZWRlbnRpYWxzXCJdID0gXCJzZXRDcmVkZW50aWFsc1wiO1xuICAgIC8qKlxuICAgICAqIOiwg+eUqOWuueWZqOaWueazlVxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkludm9rZUNvbnRhaW5lck1ldGhvZFwiXSA9IFwiaW52b2tlQ29udGFpbmVyTWV0aG9kXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC6LCD55So57yW6L6R5Zmo5pa55rOV77yM5bm25bCG57uT5p6c6L+U5ZueXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiSW52b2tlRWRpdG9yTWV0aG9kXCJdID0gXCJpbnZva2VFZGl0b3JNZXRob2RcIjtcbiAgICAvKipcbiAgICAgKiDmtL7lj5EgU0RLIOiHqui6q+ebuOWFs+eahOS6i+S7tlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkRpc3BhdGNoU0RLRXZlbnRcIl0gPSBcImRpc3BhdGNoU0RLRXZlbnRcIjtcbiAgICAvKipcbiAgICAgKiDmtL7lj5HnvJbovpHlmajnm7jlhbPnmoTkuovku7ZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJEaXNwYXRjaEVkaXRvckV2ZW50XCJdID0gXCJkaXNwYXRjaEVkaXRvckV2ZW50XCI7XG4gICAgLyoqXG4gICAgICog55uR5ZCs57yW6L6R5Zmo55u45YWz55qE5LqL5Lu2XG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiTGlzdGVuRWRpdG9yRXZlbnRcIl0gPSBcImxpc3RlbkVkaXRvckV2ZW50XCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5oCn6IO95L+h5oGv5YiX6KGoXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiUmVxdWVzdFBlcmZvcm1hbmNlRW50cmllc1wiXSA9IFwicmVxdWVzdFBlcmZvcm1hbmNlRW50cmllc1wiO1xufSkoSW52b2tlTWV0aG9kID0gZXhwb3J0cy5JbnZva2VNZXRob2QgfHwgKGV4cG9ydHMuSW52b2tlTWV0aG9kID0ge30pKTtcbi8qKlxuICog5a655Zmo6IO95o+Q5L6b55qE5pa55rOVXG4gKi9cbnZhciBDb250YWluZXJNZXRob2Q7XG4oZnVuY3Rpb24gKENvbnRhaW5lck1ldGhvZCkge1xuICAgIC8qKlxuICAgICAqIOiOt+WPluWuueWZqOeahOWwuuWvuOS/oeaBr1xuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdldENvbnRhaW5lclJlY3RcIl0gPSBcImdldENvbnRhaW5lclJlY3RcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmiZPlvIDpk77mjqVcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJPcGVuTGlua1wiXSA9IFwib3BlbkxpbmtcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajnlJ/miJAgVVJMXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiR2VuZXJhdGVVcmxcIl0gPSBcImdlbmVyYXRlVXJsXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo5omT5byA5aSE55CG56e75Yqo56uv54K55Ye75LqL5Lu2XG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZVwiXSA9IFwibWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZVwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOino+aekCBVUkzvvIzlubbov5Tlm54gRmlsZUluZm9cbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJHZXRGaWxlSW5mb0Zyb21VcmxcIl0gPSBcImdldEZpbGVJbmZvRnJvbVVybFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOaYvuekuuetvuWQjee7hOS7tu+8jOWPl+Wll+S7tuWSjOeJiOacrOmZkOWItlxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIlNob3dTaWduYXR1cmVDb21wb25lbnRcIl0gPSBcInNob3dTaWduYXR1cmVDb21wb25lbnRcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmmL7npLp0b2FzdO+8jOWPl+Wll+S7tuWSjOeJiOacrOmZkOWItlxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIlNob3dUb2FzdFwiXSA9IFwic2hvd1RvYXN0XCI7XG4gICAgLyoqXG4gICAgICog6YCa55+l55So5oi35omn6KGM6Ieq5a6a5LmJ5pON5L2c77yM5pON5L2c55Sx55So5oi36Ieq5a6a5LmJ5oyJ6ZKu6Kem5Y+RXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiSGFuZGxlQ3VzdG9tVGFza1wiXSA9IFwiaGFuZGxlQ3VzdG9tVGFza1wiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOiOt+WPlumJtOadg+S/oeaBr1xuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdldENyZWRlbnRpYWxzXCJdID0gXCJnZXRDcmVkZW50aWFsc1wiO1xufSkoQ29udGFpbmVyTWV0aG9kID0gZXhwb3J0cy5Db250YWluZXJNZXRob2QgfHwgKGV4cG9ydHMuQ29udGFpbmVyTWV0aG9kID0ge30pKTtcbnZhciBTcHJlYWRzaGVldFNoYXJpbmdGcm9tO1xuKGZ1bmN0aW9uIChTcHJlYWRzaGVldFNoYXJpbmdGcm9tKSB7XG4gICAgLyoqXG4gICAgICog6I635Y+W6YCJ5Yy66ZO+5o6lXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImNvcHlSYW5nZUxpbmtcIl0gPSBcImNvcHlSYW5nZUxpbmtcIjtcbiAgICAvKipcbiAgICAgKiDlpI3liLbni6znq4vop4blm77pk77mjqVcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wiY29weVZpZXdwb3J0TGlua1wiXSA9IFwiY29weVZpZXdwb3J0TGlua1wiO1xuICAgIC8qKlxuICAgICAqIOWkjeWItumTvuaOpeWIsOW3peS9nOihqOeahOWGhemTvuaOpVxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJjb3B5U2hlZXRMaW5rXCJdID0gXCJjb3B5U2hlZXRMaW5rXCI7XG4gICAgLyoqXG4gICAgICog6Leo6KGo5qC85byV55SoXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImltcG9ydFJhbmdlXCJdID0gXCJpbXBvcnRSYW5nZVwiO1xuICAgIC8qKlxuICAgICAqIOmihOiniOiiq+i3qOihqOW8leeUqOaIluWQiOW5tuW3peS9nOihqOW8leeUqOeahOihqOagvFxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJwcmV2aWV3XCJdID0gXCJwcmV2aWV3XCI7XG59KShTcHJlYWRzaGVldFNoYXJpbmdGcm9tID0gZXhwb3J0cy5TcHJlYWRzaGVldFNoYXJpbmdGcm9tIHx8IChleHBvcnRzLlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20gPSB7fSkpO1xuLyoqXG4gKiDliIbkuqvpk77mjqXnmoTnsbvlnovvvIznlKjkuo7lnKggZ2VuZXJhdGVVcmwg5Lit6L+U5Zue5LiN5ZCM55qEIFVSTOOAglxuICog5q+U5aaCIHJldHVybiBzaGFyaW5nVHlwZSA9PT0gVXJsU2hhcmluZ1R5cGUuRm9ybUZpbGwgPyAnL2Zvcm0vMS9maWxsJyA6ICcvZm9ybS8xJ+OAglxuICogJy9mb3JtLzEvZmlsbCcg5Li65a+55aSW5Yy/5ZCN5Y+v6K6/6Zeu5aGr5YaZ6KGo5Y2V55qE6ZO+5o6l77yMJy9mb3JtLzEnIOS4uuWvueWGhee8lui+keihqOWNleWFg+e0oOOAgemcgOmJtOadg+eahOmTvuaOpeOAglxuICovXG52YXIgVXJsU2hhcmluZ1R5cGU7XG4oZnVuY3Rpb24gKFVybFNoYXJpbmdUeXBlKSB7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6L275paH5qGj6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJEb2NcIl0gPSBcImRvY1wiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+S8oOe7n+aWh+aho+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRG9jeFwiXSA9IFwiZG9jeFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+ihqOagvOmTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiU3ByZWFkc2hlZXRcIl0gPSBcInNoZWV0XCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5Y2V57yW6L6R5Zmo6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGb3JtXCJdID0gXCJmb3JtXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5Y2V6aKE6KeI6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGb3JtUHJldmlld1wiXSA9IFwiZm9ybVByZXZpZXdcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ooajljZXloavlhpnpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkZvcm1GaWxsXCJdID0gXCJmb3JtRmlsbFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+W5u+eBr+eJh+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiUHJlc2VudGF0aW9uXCJdID0gXCJwcmVzZW50YXRpb25cIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/lupTnlKjooajmoLzpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIlRhYmxlXCJdID0gXCJ0YWJsZVwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+a1geeoi+WbvumTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRmxvd2NoYXJ0XCJdID0gXCJmbG93Y2hhcnRcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/mgJ3nu7Tlr7zlm77pk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIk1pbmRtYXBcIl0gPSBcIm1pbmRtYXBcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/nmb3mnb/pk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkJvYXJkXCJdID0gXCJib2FyZFwiO1xufSkoVXJsU2hhcmluZ1R5cGUgPSBleHBvcnRzLlVybFNoYXJpbmdUeXBlIHx8IChleHBvcnRzLlVybFNoYXJpbmdUeXBlID0ge30pKTtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5TdGFydFBhcmFtcyA9IHZvaWQgMDtcbnZhciBpc19wbGFpbl9vYmpfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiaXMtcGxhaW4tb2JqXCIpKTtcbnZhciBiYXNlNjJzdHJfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwiYmFzZTYyc3RyXCIpKTtcbnZhciBiYXNlNjIgPSBiYXNlNjJzdHJfMS5kZWZhdWx0LmNyZWF0ZUluc3RhbmNlKCk7XG52YXIgU3RhcnRQYXJhbXMgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgLyoqXG4gICAgICog5Yib5bu65LiA5LiqIFN0YXJ0UGFyYW1zIOWvueixoeOAglxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbDlr7nosaHvvIzlj6/ku6XmmK/lrZfnrKbkuLLjgIHnuq/lr7nosaHmiJYgU3RhcnRQYXJhbXMg5a6e5L6L44CC5o6l5Y+X5pWw57uE5b2i5byP77yM5Lyg5YWl5pWw57uE5Lya5ZCI5bm25omA5pyJ6aG555uu44CCXG4gICAgICovXG4gICAgZnVuY3Rpb24gU3RhcnRQYXJhbXMocGFyYW1zKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1zID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIFN0YXJ0UGFyYW1zLnBhcnNlKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgwLCBpc19wbGFpbl9vYmpfMS5kZWZhdWx0KShwYXJhbXMpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFyYW1zIGluc3RhbmNlb2YgU3RhcnRQYXJhbXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShwYXJhbXMpKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDAsIHBhcmFtc18xID0gcGFyYW1zOyBfaSA8IHBhcmFtc18xLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIHZhciBwYXJhbSA9IHBhcmFtc18xW19pXTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIFN0YXJ0UGFyYW1zLnBhcnNlKHBhcmFtKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhcmFtICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmFtKSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDlpI3liLbml6flgLxcbiAgICAgICAgaWYgKHRoaXMuZmlsZUd1aWQgPT0gbnVsbCAmJiB0aGlzLmd1aWQgIT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5maWxlR3VpZCA9IHRoaXMuZ3VpZDtcbiAgICAgICAgfVxuICAgICAgICAvLyDlpoLmnpzlgLzkuI3kuIDoh7TvvIzliJnnlKggZmlsZUd1aWQg6KaG55uWIGd1aWTvvIzpgb/lhY3lh7rpl67pophcbiAgICAgICAgaWYgKHRoaXMuZ3VpZCAhPSBudWxsICYmIHRoaXMuZmlsZUd1aWQgIT09IHRoaXMuZ3VpZCkge1xuICAgICAgICAgICAgdGhpcy5ndWlkID0gdGhpcy5maWxlR3VpZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiDlsIblrZfnrKbkuLLop6PmnpDkuLogU3RhcnRQYXJhbXMg5a+56LGh44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1TdHIg5b6F6Kej5p6Q55qE5a2X56ym5Liy44CCXG4gICAgICovXG4gICAgU3RhcnRQYXJhbXMucGFyc2UgPSBmdW5jdGlvbiAocGFyYW1TdHIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFydFBhcmFtcyhKU09OLnBhcnNlKGJhc2U2Mi5kZWNvZGVTdHIocGFyYW1TdHIpKSk7XG4gICAgfTtcbiAgICAvKipcbiAgICAgKiDlsIYgU3RhcnRQYXJhbXMg5a+56LGh6L2s5o2i5Li65a2X56ym5Liy44CCXG4gICAgICovXG4gICAgU3RhcnRQYXJhbXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gYmFzZTYyLmVuY29kZVN0cihKU09OLnN0cmluZ2lmeSh0aGlzKSk7XG4gICAgfTtcbiAgICByZXR1cm4gU3RhcnRQYXJhbXM7XG59KCkpO1xuZXhwb3J0cy5TdGFydFBhcmFtcyA9IFN0YXJ0UGFyYW1zO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9TdGFydFBhcmFtc1wiKSwgZXhwb3J0cyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gdmFsdWUgPT4ge1xuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpO1xuXHRyZXR1cm4gcHJvdG90eXBlID09PSBudWxsIHx8IHByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL2FycmF5L2luY2x1ZGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3N0YWJsZS9wcm9taXNlJyk7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQucHJvbWlzZS50cnknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL3VybCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMnKTtcbnZhciBlbnRyeVVuYmluZCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9lbnRyeS11bmJpbmQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbnRyeVVuYmluZCgnQXJyYXknLCAnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguT2JqZWN0LmFzc2lnbjtcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuYW55Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UudHJ5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS5maW5hbGx5Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvcicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguUHJvbWlzZTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC9hcnJheS9pbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL29iamVjdC9hc3NpZ24nKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC9wcm9taXNlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvdXJsJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL2FycmF5L2luY2x1ZGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC9wcm9taXNlJyk7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFueScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NhbGxhYmxlKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ29uc3RydWN0b3IoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBjb25zdHJ1Y3RvcicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Bvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXBvc3NpYmxlLXByb3RvdHlwZScpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNQb3NzaWJsZVByb3RvdHlwZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyAkU3RyaW5nKGFyZ3VtZW50KSArICcgYXMgYSBwcm90b3R5cGUnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxudmFyIFVOU0NPUEFCTEVTID0gd2VsbEtub3duU3ltYm9sKCd1bnNjb3BhYmxlcycpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmlmIChBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU10gPT09IHVuZGVmaW5lZCkge1xuICBkZWZpbmVQcm9wZXJ0eShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IGNyZWF0ZShudWxsKVxuICB9KTtcbn1cblxuLy8gYWRkIGEga2V5IHRvIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXVtrZXldID0gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUHJvdG90eXBlKSB7XG4gIGlmIChpc1Byb3RvdHlwZU9mKFByb3RvdHlwZSwgaXQpKSByZXR1cm4gaXQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCdJbmNvcnJlY3QgaW52b2NhdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcigkU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jb25zdHJ1Y3RvcicpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG52YXIgJEFycmF5ID0gQXJyYXk7XG5cbi8vIGBBcnJheS5mcm9tYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkuZnJvbVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgdmFyIElTX0NPTlNUUlVDVE9SID0gaXNDb25zdHJ1Y3Rvcih0aGlzKTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBtYXBmbiA9IGFyZ3VtZW50c0xlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgaWYgKG1hcHBpbmcpIG1hcGZuID0gYmluZChtYXBmbiwgYXJndW1lbnRzTGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yLCBuZXh0LCB2YWx1ZTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICYmICEodGhpcyA9PT0gJEFycmF5ICYmIGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyYXRvck1ldGhvZCkpKSB7XG4gICAgcmVzdWx0ID0gSVNfQ09OU1RSVUNUT1IgPyBuZXcgdGhpcygpIDogW107XG4gICAgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihPLCBpdGVyYXRvck1ldGhvZCk7XG4gICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gICAgZm9yICg7IShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IGNhbGxXaXRoU2FmZUl0ZXJhdGlvbkNsb3NpbmcoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWU7XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IGxlbmd0aE9mQXJyYXlMaWtlKE8pO1xuICAgIHJlc3VsdCA9IElTX0NPTlNUUlVDVE9SID8gbmV3IHRoaXMobGVuZ3RoKSA6ICRBcnJheShsZW5ndGgpO1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICB2YWx1ZSA9IG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF07XG4gICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT09IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuICBpbmNsdWRlczogY3JlYXRlTWV0aG9kKHRydWUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmluZGV4T2ZgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoW10uc2xpY2UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFycmF5U2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcblxudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxudmFyIHNvcnQgPSBmdW5jdGlvbiAoYXJyYXksIGNvbXBhcmVmbikge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChsZW5ndGggPCA4KSB7XG4gICAgLy8gaW5zZXJ0aW9uIHNvcnRcbiAgICB2YXIgaSA9IDE7XG4gICAgdmFyIGVsZW1lbnQsIGo7XG5cbiAgICB3aGlsZSAoaSA8IGxlbmd0aCkge1xuICAgICAgaiA9IGk7XG4gICAgICBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICB3aGlsZSAoaiAmJiBjb21wYXJlZm4oYXJyYXlbaiAtIDFdLCBlbGVtZW50KSA+IDApIHtcbiAgICAgICAgYXJyYXlbal0gPSBhcnJheVstLWpdO1xuICAgICAgfVxuICAgICAgaWYgKGogIT09IGkrKykgYXJyYXlbal0gPSBlbGVtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBtZXJnZSBzb3J0XG4gICAgdmFyIG1pZGRsZSA9IGZsb29yKGxlbmd0aCAvIDIpO1xuICAgIHZhciBsZWZ0ID0gc29ydChhcnJheVNsaWNlKGFycmF5LCAwLCBtaWRkbGUpLCBjb21wYXJlZm4pO1xuICAgIHZhciByaWdodCA9IHNvcnQoYXJyYXlTbGljZShhcnJheSwgbWlkZGxlKSwgY29tcGFyZWZuKTtcbiAgICB2YXIgbGxlbmd0aCA9IGxlZnQubGVuZ3RoO1xuICAgIHZhciBybGVuZ3RoID0gcmlnaHQubGVuZ3RoO1xuICAgIHZhciBsaW5kZXggPSAwO1xuICAgIHZhciByaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKGxpbmRleCA8IGxsZW5ndGggfHwgcmluZGV4IDwgcmxlbmd0aCkge1xuICAgICAgYXJyYXlbbGluZGV4ICsgcmluZGV4XSA9IChsaW5kZXggPCBsbGVuZ3RoICYmIHJpbmRleCA8IHJsZW5ndGgpXG4gICAgICAgID8gY29tcGFyZWZuKGxlZnRbbGluZGV4XSwgcmlnaHRbcmluZGV4XSkgPD0gMCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdXG4gICAgICAgIDogbGluZGV4IDwgbGxlbmd0aCA/IGxlZnRbbGluZGV4KytdIDogcmlnaHRbcmluZGV4KytdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcnJheTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIEVOVFJJRVMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gRU5UUklFUyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IHJldHVybiBmYWxzZTsgfSAvLyB3b3JrYXJvdW5kIG9mIG9sZCBXZWJLaXQgKyBgZXZhbGAgYnVnXG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKHt9LnRvU3RyaW5nKTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHN0cmluZ1NsaWNlKHRvU3RyaW5nKGl0KSwgOCwgLTEpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gRVMzIHdyb25nIGhlcmVcbnZhciBDT1JSRUNUX0FSR1VNRU5UUyA9IGNsYXNzb2ZSYXcoZnVuY3Rpb24gKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSAkT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT09ICdPYmplY3QnICYmIGlzQ2FsbGFibGUoTy5jYWxsZWUpID8gJ0FyZ3VtZW50cycgOiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSwgZXhjZXB0aW9ucykge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhc093bih0YXJnZXQsIGtleSkgJiYgIShleGNlcHRpb25zICYmIGhhc093bihleGNlcHRpb25zLCBrZXkpKSkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgIH1cbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IEYoKSkgIT09IEYucHJvdG90eXBlO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBgQ3JlYXRlSXRlclJlc3VsdE9iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWl0ZXJyZXN1bHRvYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBkb25lKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogZG9uZSB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3Rba2V5XSA9IHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBtYWtlQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYWtlLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLmdldCwgbmFtZSwgeyBnZXR0ZXI6IHRydWUgfSk7XG4gIGlmIChkZXNjcmlwdG9yLnNldCkgbWFrZUJ1aWx0SW4oZGVzY3JpcHRvci5zZXQsIG5hbWUsIHsgc2V0dGVyOiB0cnVlIH0pO1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkuZih0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSBvcHRpb25zID0ge307XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zLmVudW1lcmFibGU7XG4gIHZhciBuYW1lID0gb3B0aW9ucy5uYW1lICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm5hbWUgOiBrZXk7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkgbWFrZUJ1aWx0SW4odmFsdWUsIG5hbWUsIG9wdGlvbnMpO1xuICBpZiAob3B0aW9ucy5nbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZUdsb2JhbFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW9wdGlvbnMudW5zYWZlKSBkZWxldGUgT1trZXldO1xuICAgICAgZWxzZSBpZiAoT1trZXldKSBzaW1wbGUgPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogIW9wdGlvbnMubm9uQ29uZmlndXJhYmxlLFxuICAgICAgd3JpdGFibGU6ICFvcHRpb25zLm5vbldyaXRhYmxlXG4gICAgfSk7XG4gIH0gcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNyY1trZXldLCBvcHRpb25zKTtcbiAgcmV0dXJuIHRhcmdldDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbFRoaXMsIGtleSwgeyB2YWx1ZTogdmFsdWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZ2xvYmFsVGhpc1trZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGluIG9sZCBXZWJLaXQgdmVyc2lvbnMsIGBlbGVtZW50LmNsYXNzTGlzdGAgaXMgbm90IGFuIGluc3RhbmNlIG9mIGdsb2JhbCBgRE9NVG9rZW5MaXN0YFxudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG52YXIgY2xhc3NMaXN0ID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdzcGFuJykuY2xhc3NMaXN0O1xudmFyIERPTVRva2VuTGlzdFByb3RvdHlwZSA9IGNsYXNzTGlzdCAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IgJiYgY2xhc3NMaXN0LmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBET01Ub2tlbkxpc3RQcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGUgPyB1bmRlZmluZWQgOiBET01Ub2tlbkxpc3RQcm90b3R5cGU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDT05TVFJVQ1RPUiwgTUVUSE9EKSB7XG4gIHJldHVybiB1bmN1cnJ5VGhpcyhnbG9iYWxUaGlzW0NPTlNUUlVDVE9SXS5wcm90b3R5cGVbTUVUSE9EXSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvaXBhZHxpcGhvbmV8aXBvZC9pLnRlc3QodXNlckFnZW50KSAmJiB0eXBlb2YgUGViYmxlICE9ICd1bmRlZmluZWQnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWRvcy9uby12dWxuZXJhYmxlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gLyg/OmlwYWR8aXBob25lfGlwb2QpLiphcHBsZXdlYmtpdC9pLnRlc3QodXNlckFnZW50KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBFTlZJUk9OTUVOVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEVOVklST05NRU5UID09PSAnTk9ERSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAvd2ViMHMoPyEuKmNocm9tZSkvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG52YXIgbmF2aWdhdG9yID0gZ2xvYmFsVGhpcy5uYXZpZ2F0b3I7XG52YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yICYmIG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbm1vZHVsZS5leHBvcnRzID0gdXNlckFnZW50ID8gU3RyaW5nKHVzZXJBZ2VudCkgOiAnJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgRGVubyA9IGdsb2JhbFRoaXMuRGVubztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucyB8fCBEZW5vICYmIERlbm8udmVyc2lvbjtcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICAvLyBpbiBvbGQgQ2hyb21lLCB2ZXJzaW9ucyBvZiBWOCBpc24ndCBWOCA9IENocm9tZSAvIDEwXG4gIC8vIGJ1dCB0aGVpciBjb3JyZWN0IHZlcnNpb25zIGFyZSBub3QgaW50ZXJlc3RpbmcgZm9yIHVzXG4gIHZlcnNpb24gPSBtYXRjaFswXSA+IDAgJiYgbWF0Y2hbMF0gPCA0ID8gMSA6ICsobWF0Y2hbMF0gKyBtYXRjaFsxXSk7XG59XG5cbi8vIEJyb3dzZXJGUyBOb2RlSlMgYHByb2Nlc3NgIHBvbHlmaWxsIGluY29ycmVjdGx5IHNldCBgLnY4YCB0byBgMC4wYFxuLy8gc28gY2hlY2sgYHVzZXJBZ2VudGAgZXZlbiBpZiBgLnY4YCBleGlzdHMsIGJ1dCAwXG5pZiAoIXZlcnNpb24gJiYgdXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gK21hdGNoWzFdO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyc2lvbjtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGdsb2JhbCBCdW4sIERlbm8gLS0gZGV0ZWN0aW9uICovXG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC11c2VyLWFnZW50Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgdXNlckFnZW50U3RhcnRzV2l0aCA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIHVzZXJBZ2VudC5zbGljZSgwLCBzdHJpbmcubGVuZ3RoKSA9PT0gc3RyaW5nO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSAoZnVuY3Rpb24gKCkge1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnQnVuLycpKSByZXR1cm4gJ0JVTic7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdDbG91ZGZsYXJlLVdvcmtlcnMnKSkgcmV0dXJuICdDTE9VREZMQVJFJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ0Rlbm8vJykpIHJldHVybiAnREVOTyc7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdOb2RlLmpzLycpKSByZXR1cm4gJ05PREUnO1xuICBpZiAoZ2xvYmFsVGhpcy5CdW4gJiYgdHlwZW9mIEJ1bi52ZXJzaW9uID09ICdzdHJpbmcnKSByZXR1cm4gJ0JVTic7XG4gIGlmIChnbG9iYWxUaGlzLkRlbm8gJiYgdHlwZW9mIERlbm8udmVyc2lvbiA9PSAnb2JqZWN0JykgcmV0dXJuICdERU5PJztcbiAgaWYgKGNsYXNzb2YoZ2xvYmFsVGhpcy5wcm9jZXNzKSA9PT0gJ3Byb2Nlc3MnKSByZXR1cm4gJ05PREUnO1xuICBpZiAoZ2xvYmFsVGhpcy53aW5kb3cgJiYgZ2xvYmFsVGhpcy5kb2N1bWVudCkgcmV0dXJuICdCUk9XU0VSJztcbiAgcmV0dXJuICdSRVNUJztcbn0pKCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciAkRXJyb3IgPSBFcnJvcjtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG5cbnZhciBURVNUID0gKGZ1bmN0aW9uIChhcmcpIHsgcmV0dXJuIFN0cmluZyhuZXcgJEVycm9yKGFyZykuc3RhY2spOyB9KSgnenhjYXNkJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVkb3Mvbm8tdnVsbmVyYWJsZSwgc29uYXJqcy9zbG93LXJlZ2V4IC0tIHNhZmVcbnZhciBWOF9PUl9DSEFLUkFfU1RBQ0tfRU5UUlkgPSAvXFxuXFxzKmF0IFteOl0qOlteXFxuXSovO1xudmFyIElTX1Y4X09SX0NIQUtSQV9TVEFDSyA9IFY4X09SX0NIQUtSQV9TVEFDS19FTlRSWS50ZXN0KFRFU1QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdGFjaywgZHJvcEVudHJpZXMpIHtcbiAgaWYgKElTX1Y4X09SX0NIQUtSQV9TVEFDSyAmJiB0eXBlb2Ygc3RhY2sgPT0gJ3N0cmluZycgJiYgISRFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSkge1xuICAgIHdoaWxlIChkcm9wRW50cmllcy0tKSBzdGFjayA9IHJlcGxhY2Uoc3RhY2ssIFY4X09SX0NIQUtSQV9TVEFDS19FTlRSWSwgJycpO1xuICB9IHJldHVybiBzdGFjaztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGNsZWFyRXJyb3JTdGFjayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1jbGVhcicpO1xudmFyIEVSUk9SX1NUQUNLX0lOU1RBTExBQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGxhYmxlJyk7XG5cbi8vIG5vbi1zdGFuZGFyZCBWOFxudmFyIGNhcHR1cmVTdGFja1RyYWNlID0gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGVycm9yLCBDLCBzdGFjaywgZHJvcEVudHJpZXMpIHtcbiAgaWYgKEVSUk9SX1NUQUNLX0lOU1RBTExBQkxFKSB7XG4gICAgaWYgKGNhcHR1cmVTdGFja1RyYWNlKSBjYXB0dXJlU3RhY2tUcmFjZShlcnJvciwgQyk7XG4gICAgZWxzZSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIGNsZWFyRXJyb3JTdGFjayhzdGFjaywgZHJvcEVudHJpZXMpKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcignYScpO1xuICBpZiAoISgnc3RhY2snIGluIGVycm9yKSkgcmV0dXJuIHRydWU7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXJyb3IsICdzdGFjaycsIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCA3KSk7XG4gIHJldHVybiBlcnJvci5zdGFjayAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAgICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMuZG9udENhbGxHZXRTZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4gIG9wdGlvbnMubmFtZSAgICAgICAgICAgLSB0aGUgLm5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlmIGl0IGRvZXMgbm90IG1hdGNoIHRoZSBrZXlcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxUaGlzW1RBUkdFVF0gJiYgZ2xvYmFsVGhpc1tUQVJHRVRdLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLmRvbnRDYWxsR2V0U2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIGRlZmluZUJ1aWx0SW4odGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGFwcGx5ID0gRnVuY3Rpb25Qcm90b3R5cGUuYXBwbHk7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1yZWZsZWN0IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFJlZmxlY3QgPT0gJ29iamVjdCcgJiYgUmVmbGVjdC5hcHBseSB8fCAoTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoYXBwbHkpIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FsbC5hcHBseShhcHBseSwgYXJndW1lbnRzKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBiaW5kID0gdW5jdXJyeVRoaXModW5jdXJyeVRoaXMuYmluZCk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQpIHtcbiAgYUNhbGxhYmxlKGZuKTtcbiAgcmV0dXJuIHRoYXQgPT09IHVuZGVmaW5lZCA/IGZuIDogTkFUSVZFX0JJTkQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIHNhZmVcbiAgdmFyIHRlc3QgPSAoZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KS5iaW5kKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gdHlwZW9mIHRlc3QgIT0gJ2Z1bmN0aW9uJyB8fCB0ZXN0Lmhhc093blByb3BlcnR5KCdwcm90b3R5cGUnKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBjYWxsID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGw7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX0JJTkQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIG1ldGhvZCkge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICByZXR1cm4gdW5jdXJyeVRoaXMoYUNhbGxhYmxlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBrZXkpW21ldGhvZF0pKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mUmF3ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuKSB7XG4gIC8vIE5hc2hvcm4gYnVnOlxuICAvLyAgIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xMTI4XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMzBcbiAgaWYgKGNsYXNzb2ZSYXcoZm4pID09PSAnRnVuY3Rpb24nKSByZXR1cm4gdW5jdXJyeVRoaXMoZm4pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgdW5jdXJyeVRoaXNXaXRoQmluZCA9IE5BVElWRV9CSU5EICYmIEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQuYmluZChjYWxsLCBjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IHVuY3VycnlUaGlzV2l0aEJpbmQgOiBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbC5hcHBseShmbiwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNDYWxsYWJsZShhcmd1bWVudCkgPyBhcmd1bWVudCA6IHVuZGVmaW5lZDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihnbG9iYWxUaGlzW25hbWVzcGFjZV0pIDogZ2xvYmFsVGhpc1tuYW1lc3BhY2VdICYmIGdsb2JhbFRoaXNbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNOdWxsT3JVbmRlZmluZWQoaXQpKSByZXR1cm4gZ2V0TWV0aG9kKGl0LCBJVEVSQVRPUilcbiAgICB8fCBnZXRNZXRob2QoaXQsICdAQGl0ZXJhdG9yJylcbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgdXNpbmdJdGVyYXRvcikge1xuICB2YXIgaXRlcmF0b3JNZXRob2QgPSBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGdldEl0ZXJhdG9yTWV0aG9kKGFyZ3VtZW50KSA6IHVzaW5nSXRlcmF0b3I7XG4gIGlmIChhQ2FsbGFibGUoaXRlcmF0b3JNZXRob2QpKSByZXR1cm4gYW5PYmplY3QoY2FsbChpdGVyYXRvck1ldGhvZCwgYXJndW1lbnQpKTtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG4vLyBgR2V0TWV0aG9kYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZ2V0bWV0aG9kXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChWLCBQKSB7XG4gIHZhciBmdW5jID0gVltQXTtcbiAgcmV0dXJuIGlzTnVsbE9yVW5kZWZpbmVkKGZ1bmMpID8gdW5kZWZpbmVkIDogYUNhbGxhYmxlKGZ1bmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIGNoZWNrKHR5cGVvZiB0aGlzID09ICdvYmplY3QnICYmIHRoaXMpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuYyAtLSBmYWxsYmFja1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyh7fS5oYXNPd25Qcm9wZXJ0eSk7XG5cbi8vIGBIYXNPd25Qcm9wZXJ0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWhhc293bnByb3BlcnR5XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWhhc293biAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5oYXNPd24gfHwgZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5KHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYSwgYikge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlIC0tIHNhZmVcbiAgICBhcmd1bWVudHMubGVuZ3RoID09PSAxID8gY29uc29sZS5lcnJvcihhKSA6IGNvbnNvbGUuZXJyb3IoYSwgYik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdkb2N1bWVudCcsICdkb2N1bWVudEVsZW1lbnQnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFua3MgdG8gSUU4IGZvciBpdHMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyICRPYmplY3QgPSBPYmplY3Q7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICEkT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6ICRPYmplY3QoaXQpO1xufSA6ICRPYmplY3Q7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG52YXIgZnVuY3Rpb25Ub1N0cmluZyA9IHVuY3VycnlUaGlzKEZ1bmN0aW9uLnRvU3RyaW5nKTtcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGBjb3JlLWpzQDMuNC4xLTMuNC40YCwgc28gd2UgY2FuJ3QgdXNlIGBzaGFyZWRgIGhlbHBlclxuaWYgKCFpc0NhbGxhYmxlKHN0b3JlLmluc3BlY3RTb3VyY2UpKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZyhpdCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmUuaW5zcGVjdFNvdXJjZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbi8vIGBJbnN0YWxsRXJyb3JDYXVzZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtZXJyb3ItY2F1c2UvI3NlYy1lcnJvcm9iamVjdHMtaW5zdGFsbC1lcnJvci1jYXVzZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgb3B0aW9ucykge1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykgJiYgJ2NhdXNlJyBpbiBvcHRpb25zKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sICdjYXVzZScsIG9wdGlvbnMuY2F1c2UpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWFrLW1hcC1iYXNpYy1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQgPSAnT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWQnO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIFdlYWtNYXAgPSBnbG9iYWxUaGlzLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCB8fCBzaGFyZWQuc3RhdGUpIHtcbiAgdmFyIHN0b3JlID0gc2hhcmVkLnN0YXRlIHx8IChzaGFyZWQuc3RhdGUgPSBuZXcgV2Vha01hcCgpKTtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzdG9yZS5nZXQgPSBzdG9yZS5nZXQ7XG4gIHN0b3JlLmhhcyA9IHN0b3JlLmhhcztcbiAgc3RvcmUuc2V0ID0gc3RvcmUuc2V0O1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXNlbGYtYXNzaWduIC0tIHByb3RvdHlwZSBtZXRob2RzIHByb3RlY3Rpb24gKi9cbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChzdG9yZS5oYXMoaXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBzdG9yZS5zZXQoaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5nZXQoaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gc3RvcmUuaGFzKGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKGhhc093bihpdCwgU1RBVEUpKSB0aHJvdyBuZXcgVHlwZUVycm9yKE9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEKTtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhc093bihpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG90eXBlW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3RcbnZhciBkb2N1bWVudEFsbCA9IHR5cGVvZiBkb2N1bWVudCA9PSAnb2JqZWN0JyAmJiBkb2N1bWVudC5hbGw7XG5cbi8vIGBJc0NhbGxhYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjYWxsYWJsZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdHlwZW9mLXVuZGVmaW5lZCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgZG9jdW1lbnRBbGwgPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnRBbGwgIT09IHVuZGVmaW5lZCA/IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbicgfHwgYXJndW1lbnQgPT09IGRvY3VtZW50QWxsO1xufSA6IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBjb25zdHJ1Y3QgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ2NvbnN0cnVjdCcpO1xudmFyIGNvbnN0cnVjdG9yUmVnRXhwID0gL15cXHMqKD86Y2xhc3N8ZnVuY3Rpb24pXFxiLztcbnZhciBleGVjID0gdW5jdXJyeVRoaXMoY29uc3RydWN0b3JSZWdFeHAuZXhlYyk7XG52YXIgSU5DT1JSRUNUX1RPX1NUUklORyA9ICFjb25zdHJ1Y3RvclJlZ0V4cC50ZXN0KG5vb3ApO1xuXG52YXIgaXNDb25zdHJ1Y3Rvck1vZGVybiA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0cnVjdChub29wLCBbXSwgYXJndW1lbnQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxudmFyIGlzQ29uc3RydWN0b3JMZWdhY3kgPSBmdW5jdGlvbiBpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSB7XG4gIGlmICghaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBmYWxzZTtcbiAgc3dpdGNoIChjbGFzc29mKGFyZ3VtZW50KSkge1xuICAgIGNhc2UgJ0FzeW5jRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0dlbmVyYXRvckZ1bmN0aW9uJzpcbiAgICBjYXNlICdBc3luY0dlbmVyYXRvckZ1bmN0aW9uJzogcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gd2UgY2FuJ3QgY2hlY2sgLnByb3RvdHlwZSBzaW5jZSBjb25zdHJ1Y3RvcnMgcHJvZHVjZWQgYnkgLmJpbmQgaGF2ZW4ndCBpdFxuICAgIC8vIGBGdW5jdGlvbiN0b1N0cmluZ2AgdGhyb3dzIG9uIHNvbWUgYnVpbHQtaXQgZnVuY3Rpb24gaW4gc29tZSBsZWdhY3kgZW5naW5lc1xuICAgIC8vIChmb3IgZXhhbXBsZSwgYERPTVF1YWRgIGFuZCBzaW1pbGFyIGluIEZGNDEtKVxuICAgIHJldHVybiBJTkNPUlJFQ1RfVE9fU1RSSU5HIHx8ICEhZXhlYyhjb25zdHJ1Y3RvclJlZ0V4cCwgaW5zcGVjdFNvdXJjZShhcmd1bWVudCkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5pc0NvbnN0cnVjdG9yTGVnYWN5LnNoYW0gPSB0cnVlO1xuXG4vLyBgSXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gIWNvbnN0cnVjdCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBjYWxsZWQ7XG4gIHJldHVybiBpc0NvbnN0cnVjdG9yTW9kZXJuKGlzQ29uc3RydWN0b3JNb2Rlcm4uY2FsbClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihPYmplY3QpXG4gICAgfHwgIWlzQ29uc3RydWN0b3JNb2Rlcm4oZnVuY3Rpb24gKCkgeyBjYWxsZWQgPSB0cnVlOyB9KVxuICAgIHx8IGNhbGxlZDtcbn0pID8gaXNDb25zdHJ1Y3RvckxlZ2FjeSA6IGlzQ29uc3RydWN0b3JNb2Rlcm47XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIHdlIGNhbid0IHVzZSBqdXN0IGBpdCA9PSBudWxsYCBzaW5jZSBvZiBgZG9jdW1lbnQuYWxsYCBzcGVjaWFsIGNhc2Vcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtSXNIVE1MRERBLWludGVybmFsLXNsb3QtYWVjXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPT09IG51bGwgfHwgaXQgPT09IHVuZGVmaW5lZDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiBpc0NhbGxhYmxlKGl0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc09iamVjdChhcmd1bWVudCkgfHwgYXJndW1lbnQgPT09IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgJFN5bWJvbCA9IGdldEJ1aWx0SW4oJ1N5bWJvbCcpO1xuICByZXR1cm4gaXNDYWxsYWJsZSgkU3ltYm9sKSAmJiBpc1Byb3RvdHlwZU9mKCRTeW1ib2wucHJvdG90eXBlLCAkT2JqZWN0KGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIGdldEl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvcicpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpdGVyYXRvckNsb3NlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNsb3NlJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gKHN0b3BwZWQsIHJlc3VsdCkge1xuICB0aGlzLnN0b3BwZWQgPSBzdG9wcGVkO1xuICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbn07XG5cbnZhciBSZXN1bHRQcm90b3R5cGUgPSBSZXN1bHQucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgdW5ib3VuZEZ1bmN0aW9uLCBvcHRpb25zKSB7XG4gIHZhciB0aGF0ID0gb3B0aW9ucyAmJiBvcHRpb25zLnRoYXQ7XG4gIHZhciBBU19FTlRSSUVTID0gISEob3B0aW9ucyAmJiBvcHRpb25zLkFTX0VOVFJJRVMpO1xuICB2YXIgSVNfUkVDT1JEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX1JFQ09SRCk7XG4gIHZhciBJU19JVEVSQVRPUiA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19JVEVSQVRPUik7XG4gIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gIHZhciBmbiA9IGJpbmQodW5ib3VuZEZ1bmN0aW9uLCB0aGF0KTtcbiAgdmFyIGl0ZXJhdG9yLCBpdGVyRm4sIGluZGV4LCBsZW5ndGgsIHJlc3VsdCwgbmV4dCwgc3RlcDtcblxuICB2YXIgc3RvcCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICBpZiAoaXRlcmF0b3IpIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBjb25kaXRpb24pO1xuICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gIH07XG5cbiAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICBhbk9iamVjdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZVswXSwgdmFsdWVbMV0sIHN0b3ApIDogZm4odmFsdWVbMF0sIHZhbHVlWzFdKTtcbiAgICB9IHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgfTtcblxuICBpZiAoSVNfUkVDT1JEKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZS5pdGVyYXRvcjtcbiAgfSBlbHNlIGlmIChJU19JVEVSQVRPUikge1xuICAgIGl0ZXJhdG9yID0gaXRlcmFibGU7XG4gIH0gZWxzZSB7XG4gICAgaXRlckZuID0gZ2V0SXRlcmF0b3JNZXRob2QoaXRlcmFibGUpO1xuICAgIGlmICghaXRlckZuKSB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhpdGVyYWJsZSkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xuICAgIC8vIG9wdGltaXNhdGlvbiBmb3IgYXJyYXkgaXRlcmF0b3JzXG4gICAgaWYgKGlzQXJyYXlJdGVyYXRvck1ldGhvZChpdGVyRm4pKSB7XG4gICAgICBmb3IgKGluZGV4ID0gMCwgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoaXRlcmFibGUpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICByZXN1bHQgPSBjYWxsRm4oaXRlcmFibGVbaW5kZXhdKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKGl0ZXJhYmxlLCBpdGVyRm4pO1xuICB9XG5cbiAgbmV4dCA9IElTX1JFQ09SRCA/IGl0ZXJhYmxlLm5leHQgOiBpdGVyYXRvci5uZXh0O1xuICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gY2FsbEZuKHN0ZXAudmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCAndGhyb3cnLCBlcnJvcik7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiBpc1Byb3RvdHlwZU9mKFJlc3VsdFByb3RvdHlwZSwgcmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBraW5kLCB2YWx1ZSkge1xuICB2YXIgaW5uZXJSZXN1bHQsIGlubmVyRXJyb3I7XG4gIGFuT2JqZWN0KGl0ZXJhdG9yKTtcbiAgdHJ5IHtcbiAgICBpbm5lclJlc3VsdCA9IGdldE1ldGhvZChpdGVyYXRvciwgJ3JldHVybicpO1xuICAgIGlmICghaW5uZXJSZXN1bHQpIHtcbiAgICAgIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaW5uZXJSZXN1bHQgPSBjYWxsKGlubmVyUmVzdWx0LCBpdGVyYXRvcik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW5uZXJFcnJvciA9IHRydWU7XG4gICAgaW5uZXJSZXN1bHQgPSBlcnJvcjtcbiAgfVxuICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gIGlmIChpbm5lckVycm9yKSB0aHJvdyBpbm5lclJlc3VsdDtcbiAgYW5PYmplY3QoaW5uZXJSZXN1bHQpO1xuICByZXR1cm4gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJykuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0LCBFTlVNRVJBQkxFX05FWFQpIHtcbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIEl0ZXJhdG9yQ29uc3RydWN0b3IucHJvdG90eXBlID0gY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlLCB7IG5leHQ6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigrIUVOVU1FUkFCTEVfTkVYVCwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRnVuY3Rpb25OYW1lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSXRlcmF0b3JzQ29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpO1xuXG52YXIgUFJPUEVSX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuUFJPUEVSO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gRnVuY3Rpb25OYW1lLkNPTkZJR1VSQUJMRTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IEl0ZXJhdG9yc0NvcmUuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IEl0ZXJhdG9yc0NvcmUuQlVHR1lfU0FGQVJJX0lURVJBVE9SUztcbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBLRVlTID0gJ2tleXMnO1xudmFyIFZBTFVFUyA9ICd2YWx1ZXMnO1xudmFyIEVOVFJJRVMgPSAnZW50cmllcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmFibGUsIE5BTUUsIEl0ZXJhdG9yQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG5cbiAgdmFyIGdldEl0ZXJhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIChLSU5EKSB7XG4gICAgaWYgKEtJTkQgPT09IERFRkFVTFQgJiYgZGVmYXVsdEl0ZXJhdG9yKSByZXR1cm4gZGVmYXVsdEl0ZXJhdG9yO1xuICAgIGlmICghQlVHR1lfU0FGQVJJX0lURVJBVE9SUyAmJiBLSU5EICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcblxuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PT0gJ0FycmF5JyA/IEl0ZXJhYmxlUHJvdG90eXBlLmVudHJpZXMgfHwgbmF0aXZlSXRlcmF0b3IgOiBuYXRpdmVJdGVyYXRvcjtcbiAgdmFyIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgbWV0aG9kcywgS0VZO1xuXG4gIC8vIGZpeCBuYXRpdmVcbiAgaWYgKGFueU5hdGl2ZUl0ZXJhdG9yKSB7XG4gICAgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoYW55TmF0aXZlSXRlcmF0b3IuY2FsbChuZXcgSXRlcmFibGUoKSkpO1xuICAgIGlmIChDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYWxsYWJsZShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICAgICAgICAgIGRlZmluZUJ1aWx0SW4oQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgVE9fU1RSSU5HX1RBRywgdHJ1ZSwgdHJ1ZSk7XG4gICAgICBpZiAoSVNfUFVSRSkgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgICB9XG4gIH1cblxuICAvLyBmaXggQXJyYXkucHJvdG90eXBlLnsgdmFsdWVzLCBAQGl0ZXJhdG9yIH0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChQUk9QRVJfRlVOQ1RJT05fTkFNRSAmJiBERUZBVUxUID09PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgaWYgKCFJU19QVVJFICYmIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmFibGVQcm90b3R5cGUsICduYW1lJywgVkFMVUVTKTtcbiAgICB9IGVsc2Uge1xuICAgICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICAgIGRlZmF1bHRJdGVyYXRvciA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIGNhbGwobmF0aXZlSXRlcmF0b3IsIHRoaXMpOyB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGV4cG9ydCBhZGRpdGlvbmFsIG1ldGhvZHNcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBnZXRJdGVyYXRpb25NZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/IGRlZmF1bHRJdGVyYXRvciA6IGdldEl0ZXJhdGlvbk1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChFTlRSSUVTKVxuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChLRVkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIHx8ICEoS0VZIGluIEl0ZXJhYmxlUHJvdG90eXBlKSkge1xuICAgICAgICBkZWZpbmVCdWlsdEluKEl0ZXJhYmxlUHJvdG90eXBlLCBLRVksIG1ldGhvZHNbS0VZXSk7XG4gICAgICB9XG4gICAgfSBlbHNlICQoeyB0YXJnZXQ6IE5BTUUsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIH0sIG1ldGhvZHMpO1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGRlZmluZUJ1aWx0SW4oSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IsIHsgbmFtZTogREVGQVVMVCB9KTtcbiAgfVxuICBJdGVyYXRvcnNbTkFNRV0gPSBkZWZhdWx0SXRlcmF0b3I7XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJWAgb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWtleXMgLS0gc2FmZSAqL1xuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG52YXIgTkVXX0lURVJBVE9SX1BST1RPVFlQRSA9ICFpc09iamVjdChJdGVyYXRvclByb3RvdHlwZSkgfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgdGVzdCA9IHt9O1xuICAvLyBGRjQ0LSBsZWdhY3kgaXRlcmF0b3JzIGNhc2VcbiAgcmV0dXJuIEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXS5jYWxsKHRlc3QpICE9PSB0ZXN0O1xufSk7XG5cbmlmIChORVdfSVRFUkFUT1JfUFJPVE9UWVBFKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuZWxzZSBpZiAoSVNfUFVSRSkgSXRlcmF0b3JQcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1AQGl0ZXJhdG9yXG5pZiAoIWlzQ2FsbGFibGUoSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdKSkge1xuICBkZWZpbmVCdWlsdEluKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEl0ZXJhdG9yUHJvdG90eXBlOiBJdGVyYXRvclByb3RvdHlwZSxcbiAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogQlVHR1lfU0FGQVJJX0lURVJBVE9SU1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkNPTkZJR1VSQUJMRTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0O1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG52YXIgQ09ORklHVVJBQkxFX0xFTkdUSCA9IERFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdsZW5ndGgnLCB7IHZhbHVlOiA4IH0pLmxlbmd0aCAhPT0gODtcbn0pO1xuXG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbnZhciBtYWtlQnVpbHRJbiA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHZhbHVlLCBuYW1lLCBvcHRpb25zKSB7XG4gIGlmIChzdHJpbmdTbGljZSgkU3RyaW5nKG5hbWUpLCAwLCA3KSA9PT0gJ1N5bWJvbCgnKSB7XG4gICAgbmFtZSA9ICdbJyArIHJlcGxhY2UoJFN0cmluZyhuYW1lKSwgL15TeW1ib2xcXCgoW14pXSopXFwpLiokLywgJyQxJykgKyAnXSc7XG4gIH1cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5nZXR0ZXIpIG5hbWUgPSAnZ2V0ICcgKyBuYW1lO1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNldHRlcikgbmFtZSA9ICdzZXQgJyArIG5hbWU7XG4gIGlmICghaGFzT3duKHZhbHVlLCAnbmFtZScpIHx8IChDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSAmJiB2YWx1ZS5uYW1lICE9PSBuYW1lKSkge1xuICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgIGVsc2UgdmFsdWUubmFtZSA9IG5hbWU7XG4gIH1cbiAgaWYgKENPTkZJR1VSQUJMRV9MRU5HVEggJiYgb3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2FyaXR5JykgJiYgdmFsdWUubGVuZ3RoICE9PSBvcHRpb25zLmFyaXR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkodmFsdWUsICdsZW5ndGgnLCB7IHZhbHVlOiBvcHRpb25zLmFyaXR5IH0pO1xuICB9XG4gIHRyeSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgaGFzT3duKG9wdGlvbnMsICdjb25zdHJ1Y3RvcicpICYmIG9wdGlvbnMuY29uc3RydWN0b3IpIHtcbiAgICAgIGlmIChERVNDUklQVE9SUykgZGVmaW5lUHJvcGVydHkodmFsdWUsICdwcm90b3R5cGUnLCB7IHdyaXRhYmxlOiBmYWxzZSB9KTtcbiAgICAvLyBpbiBWOCB+IENocm9tZSA1MywgcHJvdG90eXBlcyBvZiBzb21lIG1ldGhvZHMsIGxpa2UgYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgLCBhcmUgbm9uLXdyaXRhYmxlXG4gICAgfSBlbHNlIGlmICh2YWx1ZS5wcm90b3R5cGUpIHZhbHVlLnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICB2YXIgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gIGlmICghaGFzT3duKHN0YXRlLCAnc291cmNlJykpIHtcbiAgICBzdGF0ZS5zb3VyY2UgPSBqb2luKFRFTVBMQVRFLCB0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyA/IG5hbWUgOiAnJyk7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZXh0ZW5kLW5hdGl2ZSAtLSByZXF1aXJlZFxuRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nID0gbWFrZUJ1aWx0SW4oZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKHRoaXMpICYmIGdldEludGVybmFsU3RhdGUodGhpcykuc291cmNlIHx8IGluc3BlY3RTb3VyY2UodGhpcyk7XG59LCAndG9TdHJpbmcnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYE1hdGgudHJ1bmNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1tYXRoLnRydW5jXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tbWF0aC10cnVuYyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE1hdGgudHJ1bmMgfHwgZnVuY3Rpb24gdHJ1bmMoeCkge1xuICB2YXIgbiA9ICt4O1xuICByZXR1cm4gKG4gPiAwID8gZmxvb3IgOiBjZWlsKShuKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHNhZmVHZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhZmUtZ2V0LWJ1aWx0LWluJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBtYWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBRdWV1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9xdWV1ZScpO1xudmFyIElTX0lPUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MnKTtcbnZhciBJU19JT1NfUEVCQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcy1wZWJibGUnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtd2Vib3Mtd2Via2l0Jyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG5cbnZhciBNdXRhdGlvbk9ic2VydmVyID0gZ2xvYmFsVGhpcy5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbFRoaXMuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsVGhpcy5Qcm9taXNlO1xudmFyIG1pY3JvdGFzayA9IHNhZmVHZXRCdWlsdEluKCdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIG5vdGlmeSwgdG9nZ2xlLCBub2RlLCBwcm9taXNlLCB0aGVuO1xuXG4vLyBtb2Rlcm4gZW5naW5lcyBoYXZlIHF1ZXVlTWljcm90YXNrIG1ldGhvZFxuaWYgKCFtaWNyb3Rhc2spIHtcbiAgdmFyIHF1ZXVlID0gbmV3IFF1ZXVlKCk7XG5cbiAgdmFyIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGZuID0gcXVldWUuZ2V0KCkpIHRyeSB7XG4gICAgICBmbigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAocXVldWUuaGVhZCkgbm90aWZ5KCk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgaWYgKHBhcmVudCkgcGFyZW50LmVudGVyKCk7XG4gIH07XG5cbiAgLy8gYnJvd3NlcnMgd2l0aCBNdXRhdGlvbk9ic2VydmVyLCBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMzOVxuICAvLyBhbHNvIGV4Y2VwdCBXZWJPUyBXZWJraXQgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg5OFxuICBpZiAoIUlTX0lPUyAmJiAhSVNfTk9ERSAmJiAhSVNfV0VCT1NfV0VCS0lUICYmIE11dGF0aW9uT2JzZXJ2ZXIgJiYgZG9jdW1lbnQpIHtcbiAgICB0b2dnbGUgPSB0cnVlO1xuICAgIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmICghSVNfSU9TX1BFQkJMRSAmJiBQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIC8vIHdvcmthcm91bmQgb2YgV2ViS2l0IH4gaU9TIFNhZmFyaSAxMC4xIGJ1Z1xuICAgIHByb21pc2UuY29uc3RydWN0b3IgPSBQcm9taXNlO1xuICAgIHRoZW4gPSBiaW5kKHByb21pc2UudGhlbiwgcHJvbWlzZSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgdGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ2VcbiAgLy8gLSBvbnJlYWR5c3RhdGVjaGFuZ2VcbiAgLy8gLSBzZXRUaW1lb3V0XG4gIH0gZWxzZSB7XG4gICAgLy8gYHdlYnBhY2tgIGRldiBzZXJ2ZXIgYnVnIG9uIElFIGdsb2JhbCBtZXRob2RzIC0gdXNlIGJpbmQoZm4sIGdsb2JhbClcbiAgICBtYWNyb3Rhc2sgPSBiaW5kKG1hY3JvdGFzaywgZ2xvYmFsVGhpcyk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbWFjcm90YXNrKGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgbWljcm90YXNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgaWYgKCFxdWV1ZS5oZWFkKSBub3RpZnkoKTtcbiAgICBxdWV1ZS5hZGQoZm4pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pY3JvdGFzaztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgJFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCA9ICQkcmVqZWN0O1xuICB9KTtcbiAgdGhpcy5yZXNvbHZlID0gYUNhbGxhYmxlKHJlc29sdmUpO1xuICB0aGlzLnJlamVjdCA9IGFDYWxsYWJsZShyZWplY3QpO1xufTtcblxuLy8gYE5ld1Byb21pc2VDYXBhYmlsaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbmV3cHJvbWlzZWNhcGFiaWxpdHlcbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQsICRkZWZhdWx0KSB7XG4gIHJldHVybiBhcmd1bWVudCA9PT0gdW5kZWZpbmVkID8gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyAnJyA6ICRkZWZhdWx0IDogdG9TdHJpbmcoYXJndW1lbnQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHNhZmVcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBzaG91bGQgaGF2ZSBjb3JyZWN0IG9yZGVyIG9mIG9wZXJhdGlvbnMgKEVkZ2UgYnVnKVxuICBpZiAoREVTQ1JJUFRPUlMgJiYgJGFzc2lnbih7IGI6IDEgfSwgJGFzc2lnbihkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRoaXMsICdiJywge1xuICAgICAgICB2YWx1ZTogMyxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSksIHsgYjogMiB9KSkuYiAhPT0gMSkgcmV0dXJuIHRydWU7XG4gIC8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3ltYm9sIC0tIHNhZmVcbiAgdmFyIHN5bWJvbCA9IFN5bWJvbCgnYXNzaWduIGRldGVjdGlvbicpO1xuICB2YXIgYWxwaGFiZXQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW3N5bWJvbF0gPSA3O1xuICBhbHBoYWJldC5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoY2hyKSB7IEJbY2hyXSA9IGNocjsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtzeW1ib2xdICE9PSA3IHx8IG9iamVjdEtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9PSBhbHBoYWJldDtcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmY7XG4gIHdoaWxlIChhcmd1bWVudHNMZW5ndGggPiBpbmRleCkge1xuICAgIHZhciBTID0gSW5kZXhlZE9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KG9iamVjdEtleXMoUyksIGdldE93blByb3BlcnR5U3ltYm9scyhTKSkgOiBvYmplY3RLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlLCBTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCIndXNlIHN0cmljdCc7XG4vKiBnbG9iYWwgQWN0aXZlWE9iamVjdCAtLSBvbGQgSUUsIFdTSCAqL1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xuXG52YXIgR1QgPSAnPic7XG52YXIgTFQgPSAnPCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgU0NSSVBUID0gJ3NjcmlwdCc7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBFbXB0eUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG52YXIgc2NyaXB0VGFnID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIExUICsgU0NSSVBUICsgR1QgKyBjb250ZW50ICsgTFQgKyAnLycgKyBTQ1JJUFQgKyBHVDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBBY3RpdmVYIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIChhY3RpdmVYRG9jdW1lbnQpIHtcbiAgYWN0aXZlWERvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnJykpO1xuICBhY3RpdmVYRG9jdW1lbnQuY2xvc2UoKTtcbiAgdmFyIHRlbXAgPSBhY3RpdmVYRG9jdW1lbnQucGFyZW50V2luZG93Lk9iamVjdDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtYXNzaWdubWVudCAtLSBhdm9pZCBtZW1vcnkgbGVha1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsO1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgYWN0aXZlWERvY3VtZW50ID0gbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IHR5cGVvZiBkb2N1bWVudCAhPSAndW5kZWZpbmVkJ1xuICAgID8gZG9jdW1lbnQuZG9tYWluICYmIGFjdGl2ZVhEb2N1bWVudFxuICAgICAgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgLy8gb2xkIElFXG4gICAgICA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpXG4gICAgOiBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCk7IC8vIFdTSFxuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtY3JlYXRlIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXNNb2R1bGUuZihyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnRpZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydGllcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyAmJiAhVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIHByb3BzID0gdG9JbmRleGVkT2JqZWN0KFByb3BlcnRpZXMpO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIHByb3BzW2tleV0pO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIFY4X1BST1RPVFlQRV9ERUZJTkVfQlVHID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Y4LXByb3RvdHlwZS1kZWZpbmUtYnVnJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgRU5VTUVSQUJMRSA9ICdlbnVtZXJhYmxlJztcbnZhciBDT05GSUdVUkFCTEUgPSAnY29uZmlndXJhYmxlJztcbnZhciBXUklUQUJMRSA9ICd3cml0YWJsZSc7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmICh0eXBlb2YgTyA9PT0gJ2Z1bmN0aW9uJyAmJiBQID09PSAncHJvdG90eXBlJyAmJiAndmFsdWUnIGluIEF0dHJpYnV0ZXMgJiYgV1JJVEFCTEUgaW4gQXR0cmlidXRlcyAmJiAhQXR0cmlidXRlc1tXUklUQUJMRV0pIHtcbiAgICB2YXIgY3VycmVudCA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gICAgaWYgKGN1cnJlbnQgJiYgY3VycmVudFtXUklUQUJMRV0pIHtcbiAgICAgIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICAgICAgQXR0cmlidXRlcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiBDT05GSUdVUkFCTEUgaW4gQXR0cmlidXRlcyA/IEF0dHJpYnV0ZXNbQ09ORklHVVJBQkxFXSA6IGN1cnJlbnRbQ09ORklHVVJBQkxFXSxcbiAgICAgICAgZW51bWVyYWJsZTogRU5VTUVSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tFTlVNRVJBQkxFXSA6IGN1cnJlbnRbRU5VTUVSQUJMRV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZVxuICAgICAgfTtcbiAgICB9XG4gIH0gcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbn0gOiAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IG5ldyAkVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0luZGV4ZWRPYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhc093bihPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighY2FsbChwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLCBPLCBQKSwgT1tQXSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHluYW1lcyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSBzYWZlXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlcicpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBPYmplY3RQcm90b3R5cGUgPSAkT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gYE9iamVjdC5nZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRwcm90b3R5cGVvZlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA/ICRPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiAoTykge1xuICB2YXIgb2JqZWN0ID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXNPd24ob2JqZWN0LCBJRV9QUk9UTykpIHJldHVybiBvYmplY3RbSUVfUFJPVE9dO1xuICB2YXIgY29uc3RydWN0b3IgPSBvYmplY3QuY29uc3RydWN0b3I7XG4gIGlmIChpc0NhbGxhYmxlKGNvbnN0cnVjdG9yKSAmJiBvYmplY3QgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBjb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mICRPYmplY3QgPyBPYmplY3RQcm90b3R5cGUgOiBudWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgISRwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvIC0tIHNhZmUgKi9cbnZhciB1bmN1cnJ5VGhpc0FjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1hY2Nlc3NvcicpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBDT1JSRUNUX1NFVFRFUiA9IGZhbHNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB2YXIgc2V0dGVyO1xuICB0cnkge1xuICAgIHNldHRlciA9IHVuY3VycnlUaGlzQWNjZXNzb3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycsICdzZXQnKTtcbiAgICBzZXR0ZXIodGVzdCwgW10pO1xuICAgIENPUlJFQ1RfU0VUVEVSID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHJlcXVpcmVPYmplY3RDb2VyY2libGUoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoIWlzT2JqZWN0KE8pKSByZXR1cm4gTztcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlcihPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBPcmRpbmFyeVRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb3JkaW5hcnl0b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChwcmVmID09PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoaXNDYWxsYWJsZShmbiA9IGlucHV0LnZhbHVlT2YpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAocHJlZiAhPT0gJ3N0cmluZycgJiYgaXNDYWxsYWJsZShmbiA9IGlucHV0LnRvU3RyaW5nKSAmJiAhaXNPYmplY3QodmFsID0gY2FsbChmbiwgaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KGtleXMsIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXM7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGZhbHNlLCB2YWx1ZTogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIHZhbHVlOiBlcnJvciB9O1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNGb3JjZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtZm9yY2VkJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEVOVklST05NRU5UID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFNVQkNMQVNTSU5HID0gZmFsc2U7XG52YXIgTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWxUaGlzLlByb21pc2VSZWplY3Rpb25FdmVudCk7XG5cbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IGlzRm9yY2VkKCdQcm9taXNlJywgZnVuY3Rpb24gKCkge1xuICB2YXIgUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgPSBpbnNwZWN0U291cmNlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIHZhciBHTE9CQUxfQ09SRV9KU19QUk9NSVNFID0gUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UgIT09IFN0cmluZyhOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpO1xuICAvLyBWOCA2LjYgKE5vZGUgMTAgYW5kIENocm9tZSA2NikgaGF2ZSBhIGJ1ZyB3aXRoIHJlc29sdmluZyBjdXN0b20gdGhlbmFibGVzXG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAvLyBXZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICBpZiAoIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgVjhfVkVSU0lPTiA9PT0gNjYpIHJldHVybiB0cnVlO1xuICAvLyBXZSBuZWVkIFByb21pc2UjeyBjYXRjaCwgZmluYWxseSB9IGluIHRoZSBwdXJlIHZlcnNpb24gZm9yIHByZXZlbnRpbmcgcHJvdG90eXBlIHBvbGx1dGlvblxuICBpZiAoSVNfUFVSRSAmJiAhKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddKSkgcmV0dXJuIHRydWU7XG4gIC8vIFdlIGNhbid0IHVzZSBAQHNwZWNpZXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4gIC8vIGRlb3B0aW1pemF0aW9uIGFuZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG4gIGlmICghVjhfVkVSU0lPTiB8fCBWOF9WRVJTSU9OIDwgNTEgfHwgIS9uYXRpdmUgY29kZS8udGVzdChQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSkpIHtcbiAgICAvLyBEZXRlY3QgY29ycmVjdG5lc3Mgb2Ygc3ViY2xhc3Npbmcgd2l0aCBAQHNwZWNpZXMgc3VwcG9ydFxuICAgIHZhciBwcm9taXNlID0gbmV3IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKDEpOyB9KTtcbiAgICB2YXIgRmFrZVByb21pc2UgPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gICAgfTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwcm9taXNlLmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBGYWtlUHJvbWlzZTtcbiAgICBTVUJDTEFTU0lORyA9IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gICAgaWYgKCFTVUJDTEFTU0lORykgcmV0dXJuIHRydWU7XG4gIC8vIFVuaGFuZGxlZCByZWplY3Rpb25zIHRyYWNraW5nIHN1cHBvcnQsIE5vZGVKUyBQcm9taXNlIHdpdGhvdXQgaXQgZmFpbHMgQEBzcGVjaWVzIHRlc3RcbiAgfSByZXR1cm4gIUdMT0JBTF9DT1JFX0pTX1BST01JU0UgJiYgKEVOVklST05NRU5UID09PSAnQlJPV1NFUicgfHwgRU5WSVJPTk1FTlQgPT09ICdERU5PJykgJiYgIU5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ09OU1RSVUNUT1I6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SLFxuICBSRUpFQ1RJT05fRVZFTlQ6IE5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCxcbiAgU1VCQ0xBU1NJTkc6IFNVQkNMQVNTSU5HXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWxUaGlzLlByb21pc2U7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5hbGwoaXRlcmFibGUpLnRoZW4odW5kZWZpbmVkLCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGVhZCA9IG51bGw7XG4gIHRoaXMudGFpbCA9IG51bGw7XG59O1xuXG5RdWV1ZS5wcm90b3R5cGUgPSB7XG4gIGFkZDogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICB2YXIgZW50cnkgPSB7IGl0ZW06IGl0ZW0sIG5leHQ6IG51bGwgfTtcbiAgICB2YXIgdGFpbCA9IHRoaXMudGFpbDtcbiAgICBpZiAodGFpbCkgdGFpbC5uZXh0ID0gZW50cnk7XG4gICAgZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJ5ID0gdGhpcy5oZWFkO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgdmFyIG5leHQgPSB0aGlzLmhlYWQgPSBlbnRyeS5uZXh0O1xuICAgICAgaWYgKG5leHQgPT09IG51bGwpIHRoaXMudGFpbCA9IG51bGw7XG4gICAgICByZXR1cm4gZW50cnkuaXRlbTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUXVldWU7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGl0KSkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIEF2b2lkIE5vZGVKUyBleHBlcmltZW50YWwgd2FybmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIURFU0NSSVBUT1JTKSByZXR1cm4gZ2xvYmFsVGhpc1tuYW1lXTtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsVGhpcywgbmFtZSk7XG4gIHJldHVybiBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SX05BTUUpIHtcbiAgdmFyIENvbnN0cnVjdG9yID0gZ2V0QnVpbHRJbihDT05TVFJVQ1RPUl9OQU1FKTtcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgQ29uc3RydWN0b3IgJiYgIUNvbnN0cnVjdG9yW1NQRUNJRVNdKSB7XG4gICAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKENvbnN0cnVjdG9yLCBTUEVDSUVTLCB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH1cbiAgICB9KTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBUQUcsIFNUQVRJQykge1xuICBpZiAodGFyZ2V0ICYmICFTVEFUSUMpIHRhcmdldCA9IHRhcmdldC5wcm90b3R5cGU7XG4gIGlmICh0YXJnZXQgJiYgIWhhc093bih0YXJnZXQsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBUT19TVFJJTkdfVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IFRBRyB9KTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgZGVmaW5lR2xvYmFsUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWdsb2JhbC1wcm9wZXJ0eScpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXNbU0hBUkVEXSB8fCBkZWZpbmVHbG9iYWxQcm9wZXJ0eShTSEFSRUQsIHt9KTtcblxuKHN0b3JlLnZlcnNpb25zIHx8IChzdG9yZS52ZXJzaW9ucyA9IFtdKSkucHVzaCh7XG4gIHZlcnNpb246ICczLjM5LjAnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KScsXG4gIGxpY2Vuc2U6ICdodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM5LjAvTElDRU5TRScsXG4gIHNvdXJjZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzJ1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSB8fCB7fSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNvbnN0cnVjdG9yJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYFNwZWNpZXNDb25zdHJ1Y3RvcmAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNwZWNpZXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG4gIHZhciBDID0gYW5PYmplY3QoTykuY29uc3RydWN0b3I7XG4gIHZhciBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IGlzTnVsbE9yVW5kZWZpbmVkKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhQ29uc3RydWN0b3IoUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGNoYXJDb2RlQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQ29kZUF0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IHRvU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXJPckluZmluaXR5KHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gY2hhckNvZGVBdChTLCBwb3NpdGlvbik7XG4gICAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgICAgfHwgKHNlY29uZCA9IGNoYXJDb2RlQXQoUywgcG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICAgID8gQ09OVkVSVF9UT19TVFJJTkdcbiAgICAgICAgICA/IGNoYXJBdChTLCBwb3NpdGlvbilcbiAgICAgICAgICA6IGZpcnN0XG4gICAgICAgIDogQ09OVkVSVF9UT19TVFJJTkdcbiAgICAgICAgICA/IHN0cmluZ1NsaWNlKFMsIHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpXG4gICAgICAgICAgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4gIGNvZGVBdDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4gIGNoYXJBdDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL3B1bnljb2RlLmpzL2Jsb2IvbWFzdGVyL3B1bnljb2RlLmpzXG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbnZhciBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG52YXIgYmFzZSA9IDM2O1xudmFyIHRNaW4gPSAxO1xudmFyIHRNYXggPSAyNjtcbnZhciBza2V3ID0gMzg7XG52YXIgZGFtcCA9IDcwMDtcbnZhciBpbml0aWFsQmlhcyA9IDcyO1xudmFyIGluaXRpYWxOID0gMTI4OyAvLyAweDgwXG52YXIgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG52YXIgcmVnZXhOb25BU0NJSSA9IC9bXlxcMC1cXHUwMDdFXS87IC8vIG5vbi1BU0NJSSBjaGFyc1xudmFyIHJlZ2V4U2VwYXJhdG9ycyA9IC9bLlxcdTMwMDJcXHVGRjBFXFx1RkY2MV0vZzsgLy8gUkZDIDM0OTAgc2VwYXJhdG9yc1xudmFyIE9WRVJGTE9XX0VSUk9SID0gJ092ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzJztcbnZhciBiYXNlTWludXNUTWluID0gYmFzZSAtIHRNaW47XG5cbnZhciAkUmFuZ2VFcnJvciA9IFJhbmdlRXJyb3I7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKHJlZ2V4U2VwYXJhdG9ycy5leGVjKTtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciBjaGFyQ29kZUF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckNvZGVBdCk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG52YXIgdG9Mb3dlckNhc2UgPSB1bmN1cnJ5VGhpcygnJy50b0xvd2VyQ2FzZSk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBudW1lcmljIGNvZGUgcG9pbnRzIG9mIGVhY2ggVW5pY29kZVxuICogY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcuIFdoaWxlIEphdmFTY3JpcHQgdXNlcyBVQ1MtMiBpbnRlcm5hbGx5LFxuICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcbiAqIFVDUy0yIGV4cG9zZXMgYXMgc2VwYXJhdGUgY2hhcmFjdGVycykgaW50byBhIHNpbmdsZSBjb2RlIHBvaW50LFxuICogbWF0Y2hpbmcgVVRGLTE2LlxuICovXG52YXIgdWNzMmRlY29kZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICB2YXIgY291bnRlciA9IDA7XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoO1xuICB3aGlsZSAoY291bnRlciA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGNoYXJDb2RlQXQoc3RyaW5nLCBjb3VudGVyKyspO1xuICAgIGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcbiAgICAgIC8vIEl0J3MgYSBoaWdoIHN1cnJvZ2F0ZSwgYW5kIHRoZXJlIGlzIGEgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICB2YXIgZXh0cmEgPSBjaGFyQ29kZUF0KHN0cmluZywgY291bnRlcisrKTtcbiAgICAgIGlmICgoZXh0cmEgJiAweEZDMDApID09PSAweERDMDApIHsgLy8gTG93IHN1cnJvZ2F0ZS5cbiAgICAgICAgcHVzaChvdXRwdXQsICgodmFsdWUgJiAweDNGRikgPDwgMTApICsgKGV4dHJhICYgMHgzRkYpICsgMHgxMDAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGFuIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZVxuICAgICAgICAvLyBuZXh0IGNvZGUgdW5pdCBpcyB0aGUgaGlnaCBzdXJyb2dhdGUgb2YgYSBzdXJyb2dhdGUgcGFpci5cbiAgICAgICAgcHVzaChvdXRwdXQsIHZhbHVlKTtcbiAgICAgICAgY291bnRlci0tO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwdXNoKG91dHB1dCwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKi9cbnZhciBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbiAoZGlnaXQpIHtcbiAgLy8gIDAuLjI1IG1hcCB0byBBU0NJSSBhLi56IG9yIEEuLlpcbiAgLy8gMjYuLjM1IG1hcCB0byBBU0NJSSAwLi45XG4gIHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNik7XG59O1xuXG4vKipcbiAqIEJpYXMgYWRhcHRhdGlvbiBmdW5jdGlvbiBhcyBwZXIgc2VjdGlvbiAzLjQgb2YgUkZDIDM0OTIuXG4gKiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzQ5MiNzZWN0aW9uLTMuNFxuICovXG52YXIgYWRhcHQgPSBmdW5jdGlvbiAoZGVsdGEsIG51bVBvaW50cywgZmlyc3RUaW1lKSB7XG4gIHZhciBrID0gMDtcbiAgZGVsdGEgPSBmaXJzdFRpbWUgPyBmbG9vcihkZWx0YSAvIGRhbXApIDogZGVsdGEgPj4gMTtcbiAgZGVsdGEgKz0gZmxvb3IoZGVsdGEgLyBudW1Qb2ludHMpO1xuICB3aGlsZSAoZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxKSB7XG4gICAgZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuICAgIGsgKz0gYmFzZTtcbiAgfVxuICByZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcbiAqIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKi9cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuXG4gIC8vIENvbnZlcnQgdGhlIGlucHV0IGluIFVDUy0yIHRvIGFuIGFycmF5IG9mIFVuaWNvZGUgY29kZSBwb2ludHMuXG4gIGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cbiAgLy8gQ2FjaGUgdGhlIGxlbmd0aC5cbiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG4gIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuICB2YXIgbiA9IGluaXRpYWxOO1xuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgYmlhcyA9IGluaXRpYWxCaWFzO1xuICB2YXIgaSwgY3VycmVudFZhbHVlO1xuXG4gIC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG4gIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgIGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG4gICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGN1cnJlbnRWYWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7IC8vIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cbiAgdmFyIGhhbmRsZWRDUENvdW50ID0gYmFzaWNMZW5ndGg7IC8vIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXG4gIC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIHdpdGggYSBkZWxpbWl0ZXIgdW5sZXNzIGl0J3MgZW1wdHkuXG4gIGlmIChiYXNpY0xlbmd0aCkge1xuICAgIHB1c2gob3V0cHV0LCBkZWxpbWl0ZXIpO1xuICB9XG5cbiAgLy8gTWFpbiBlbmNvZGluZyBsb29wOlxuICB3aGlsZSAoaGFuZGxlZENQQ291bnQgPCBpbnB1dExlbmd0aCkge1xuICAgIC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHQgbGFyZ2VyIG9uZTpcbiAgICB2YXIgbSA9IG1heEludDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGN1cnJlbnRWYWx1ZSA9IGlucHV0W2ldO1xuICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA+PSBuICYmIGN1cnJlbnRWYWx1ZSA8IG0pIHtcbiAgICAgICAgbSA9IGN1cnJlbnRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJbmNyZWFzZSBgZGVsdGFgIGVub3VnaCB0byBhZHZhbmNlIHRoZSBkZWNvZGVyJ3MgPG4saT4gc3RhdGUgdG8gPG0sMD4sIGJ1dCBndWFyZCBhZ2FpbnN0IG92ZXJmbG93LlxuICAgIHZhciBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG4gICAgaWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcbiAgICAgIHRocm93IG5ldyAkUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgfVxuXG4gICAgZGVsdGEgKz0gKG0gLSBuKSAqIGhhbmRsZWRDUENvdW50UGx1c09uZTtcbiAgICBuID0gbTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlIDwgbiAmJiArK2RlbHRhID4gbWF4SW50KSB7XG4gICAgICAgIHRocm93IG5ldyAkUmFuZ2VFcnJvcihPVkVSRkxPV19FUlJPUik7XG4gICAgICB9XG4gICAgICBpZiAoY3VycmVudFZhbHVlID09PSBuKSB7XG4gICAgICAgIC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICB2YXIgcSA9IGRlbHRhO1xuICAgICAgICB2YXIgayA9IGJhc2U7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgdmFyIHQgPSBrIDw9IGJpYXMgPyB0TWluIDogayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcztcbiAgICAgICAgICBpZiAocSA8IHQpIGJyZWFrO1xuICAgICAgICAgIHZhciBxTWludXNUID0gcSAtIHQ7XG4gICAgICAgICAgdmFyIGJhc2VNaW51c1QgPSBiYXNlIC0gdDtcbiAgICAgICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QpKSk7XG4gICAgICAgICAgcSA9IGZsb29yKHFNaW51c1QgLyBiYXNlTWludXNUKTtcbiAgICAgICAgICBrICs9IGJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBwdXNoKG91dHB1dCwgZnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxKSkpO1xuICAgICAgICBiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT09IGJhc2ljTGVuZ3RoKTtcbiAgICAgICAgZGVsdGEgPSAwO1xuICAgICAgICBoYW5kbGVkQ1BDb3VudCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRlbHRhKys7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBqb2luKG91dHB1dCwgJycpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIGVuY29kZWQgPSBbXTtcbiAgdmFyIGxhYmVscyA9IHNwbGl0KHJlcGxhY2UodG9Mb3dlckNhc2UoaW5wdXQpLCByZWdleFNlcGFyYXRvcnMsICdcXHUwMDJFJyksICcuJyk7XG4gIHZhciBpLCBsYWJlbDtcbiAgZm9yIChpID0gMDsgaSA8IGxhYmVscy5sZW5ndGg7IGkrKykge1xuICAgIGxhYmVsID0gbGFiZWxzW2ldO1xuICAgIHB1c2goZW5jb2RlZCwgZXhlYyhyZWdleE5vbkFTQ0lJLCBsYWJlbCkgPyAneG4tLScgKyBlbmNvZGUobGFiZWwpIDogbGFiZWwpO1xuICB9XG4gIHJldHVybiBqb2luKGVuY29kZWQsICcuJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciAkU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdzeW1ib2wgZGV0ZWN0aW9uJyk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgLy8gbmI6IERvIG5vdCBjYWxsIGBTdHJpbmdgIGRpcmVjdGx5IHRvIGF2b2lkIHRoaXMgYmVpbmcgb3B0aW1pemVkIG91dCB0byBgc3ltYm9sKycnYCB3aGljaCB3aWxsLFxuICAvLyBvZiBjb3Vyc2UsIGZhaWwuXG4gIHJldHVybiAhJFN0cmluZyhzeW1ib2wpIHx8ICEoT2JqZWN0KHN5bWJvbCkgaW5zdGFuY2VvZiBTeW1ib2wpIHx8XG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtbm9kZScpO1xuXG52YXIgc2V0ID0gZ2xvYmFsVGhpcy5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXIgPSBnbG9iYWxUaGlzLmNsZWFySW1tZWRpYXRlO1xudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWxUaGlzLkRpc3BhdGNoO1xudmFyIEZ1bmN0aW9uID0gZ2xvYmFsVGhpcy5GdW5jdGlvbjtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbFRoaXMuTWVzc2FnZUNoYW5uZWw7XG52YXIgU3RyaW5nID0gZ2xvYmFsVGhpcy5TdHJpbmc7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciAkbG9jYXRpb24sIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xuXG5mYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIERlbm8gdGhyb3dzIGEgUmVmZXJlbmNlRXJyb3Igb24gYGxvY2F0aW9uYCBhY2Nlc3Mgd2l0aG91dCBgLS1sb2NhdGlvbmAgZmxhZ1xuICAkbG9jYXRpb24gPSBnbG9iYWxUaGlzLmxvY2F0aW9uO1xufSk7XG5cbnZhciBydW4gPSBmdW5jdGlvbiAoaWQpIHtcbiAgaWYgKGhhc093bihxdWV1ZSwgaWQpKSB7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcblxudmFyIHJ1bm5lciA9IGZ1bmN0aW9uIChpZCkge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJ1bihpZCk7XG4gIH07XG59O1xuXG52YXIgZXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsVGhpcy5wb3N0TWVzc2FnZShTdHJpbmcoaWQpLCAkbG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgJGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShoYW5kbGVyKSB7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGZuID0gaXNDYWxsYWJsZShoYW5kbGVyKSA/IGhhbmRsZXIgOiBGdW5jdGlvbihoYW5kbGVyKTtcbiAgICB2YXIgYXJncyA9IGFycmF5U2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgYXBwbHkoZm4sIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXIgPSBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShpZCkge1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZiAoSVNfTk9ERSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIFNwaGVyZSAoSlMgZ2FtZSBlbmdpbmUpIERpc3BhdGNoIEFQSVxuICB9IGVsc2UgaWYgKERpc3BhdGNoICYmIERpc3BhdGNoLm5vdykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBEaXNwYXRjaC5ub3cocnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBNZXNzYWdlQ2hhbm5lbCwgaW5jbHVkZXMgV2ViV29ya2Vyc1xuICAvLyBleGNlcHQgaU9TIC0gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzYyNFxuICB9IGVsc2UgaWYgKE1lc3NhZ2VDaGFubmVsICYmICFJU19JT1MpIHtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgcG9ydCA9IGNoYW5uZWwucG9ydDI7XG4gICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBldmVudExpc3RlbmVyO1xuICAgIGRlZmVyID0gYmluZChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0KTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoXG4gICAgZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyICYmXG4gICAgaXNDYWxsYWJsZShnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKSAmJlxuICAgICFnbG9iYWxUaGlzLmltcG9ydFNjcmlwdHMgJiZcbiAgICAkbG9jYXRpb24gJiYgJGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKGdsb2JhbFBvc3RNZXNzYWdlRGVmZXIpXG4gICkge1xuICAgIGRlZmVyID0gZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlcjtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBldmVudExpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0cnVuYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9tYXRoLXRydW5jJyk7XG5cbi8vIGBUb0ludGVnZXJPckluZmluaXR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2Vyb3JpbmZpbml0eVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIG51bWJlciA9ICthcmd1bWVudDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiB0cnVuYyhudW1iZXIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0ludGVnZXJPckluZmluaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHknKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGxlbiA9IHRvSW50ZWdlck9ySW5maW5pdHkoYXJndW1lbnQpO1xuICByZXR1cm4gbGVuID4gMCA/IG1pbihsZW4sIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiAkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBvcmRpbmFyeVRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29yZGluYXJ5LXRvLXByaW1pdGl2ZScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbnZhciBUT19QUklNSVRJVkUgPSB3ZWxsS25vd25TeW1ib2woJ3RvUHJpbWl0aXZlJyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSB8fCBpc1N5bWJvbChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGV4b3RpY1RvUHJpbSA9IGdldE1ldGhvZChpbnB1dCwgVE9fUFJJTUlUSVZFKTtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKGV4b3RpY1RvUHJpbSkge1xuICAgIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnZGVmYXVsdCc7XG4gICAgcmVzdWx0ID0gY2FsbChleG90aWNUb1ByaW0sIGlucHV0LCBwcmVmKTtcbiAgICBpZiAoIWlzT2JqZWN0KHJlc3VsdCkgfHwgaXNTeW1ib2wocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDtcbiAgICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbiAgfVxuICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ251bWJlcic7XG4gIHJldHVybiBvcmRpbmFyeVRvUHJpbWl0aXZlKGlucHV0LCBwcmVmKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtc3ltYm9sJyk7XG5cbi8vIGBUb1Byb3BlcnR5S2V5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcm9wZXJ0eWtleVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdmFyIGtleSA9IHRvUHJpbWl0aXZlKGFyZ3VtZW50LCAnc3RyaW5nJyk7XG4gIHJldHVybiBpc1N5bWJvbChrZXkpID8ga2V5IDoga2V5ICsgJyc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciB0ZXN0ID0ge307XG5cbnRlc3RbVE9fU1RSSU5HX1RBR10gPSAneic7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyaW5nKHRlc3QpID09PSAnW29iamVjdCB6XSc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoY2xhc3NvZihhcmd1bWVudCkgPT09ICdTeW1ib2wnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZycpO1xuICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICRTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL3JlbGF0aXZlLXVybC1zdHlsZSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICB2YXIgdXJsID0gbmV3IFVSTCgnYj9hPTEmYj0yJmM9MycsICdodHRwczovL2EnKTtcbiAgdmFyIHBhcmFtcyA9IHVybC5zZWFyY2hQYXJhbXM7XG4gIHZhciBwYXJhbXMyID0gbmV3IFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB1cmwucGF0aG5hbWUgPSAnYyUyMGQnO1xuICBwYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHBhcmFtc1snZGVsZXRlJ10oJ2InKTtcbiAgICByZXN1bHQgKz0ga2V5ICsgdmFsdWU7XG4gIH0pO1xuICBwYXJhbXMyWydkZWxldGUnXSgnYScsIDIpO1xuICAvLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxuICBwYXJhbXMyWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG4gIHJldHVybiAoSVNfUFVSRSAmJiAoIXVybC50b0pTT04gfHwgIXBhcmFtczIuaGFzKCdhJywgMSkgfHwgcGFyYW1zMi5oYXMoJ2EnLCAyKSB8fCAhcGFyYW1zMi5oYXMoJ2EnLCB1bmRlZmluZWQpIHx8IHBhcmFtczIuaGFzKCdiJykpKVxuICAgIHx8ICghcGFyYW1zLnNpemUgJiYgKElTX1BVUkUgfHwgIURFU0NSSVBUT1JTKSlcbiAgICB8fCAhcGFyYW1zLnNvcnRcbiAgICB8fCB1cmwuaHJlZiAhPT0gJ2h0dHBzOi8vYS9jJTIwZD9hPTEmYz0zJ1xuICAgIHx8IHBhcmFtcy5nZXQoJ2MnKSAhPT0gJzMnXG4gICAgfHwgU3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoJz9hPTEnKSkgIT09ICdhPTEnXG4gICAgfHwgIXBhcmFtc1tJVEVSQVRPUl1cbiAgICAvLyB0aHJvd3MgaW4gRWRnZVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYUBiJykudXNlcm5hbWUgIT09ICdhJ1xuICAgIHx8IG5ldyBVUkxTZWFyY2hQYXJhbXMobmV3IFVSTFNlYXJjaFBhcmFtcygnYT1iJykpLmdldCgnYScpICE9PSAnYidcbiAgICAvLyBub3QgcHVueWNvZGVkIGluIEVkZ2VcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL9GC0LXRgdGCJykuaG9zdCAhPT0gJ3huLS1lMWF5YmMnXG4gICAgLy8gbm90IGVzY2FwZWQgaW4gQ2hyb21lIDYyLVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8vYSPQsScpLmhhc2ggIT09ICcjJUQwJUIxJ1xuICAgIC8vIGZhaWxzIGluIENocm9tZSA2Ni1cbiAgICB8fCByZXN1bHQgIT09ICdhMWMzJ1xuICAgIC8vIHRocm93cyBpbiBTYWZhcmlcbiAgICB8fCBuZXcgVVJMKCdodHRwczovL3gnLCB1bmRlZmluZWQpLmhvc3QgIT09ICd4Jztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTCAmJlxuICAhU3ltYm9sLnNoYW0gJiZcbiAgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFY4IH4gQ2hyb21lIDM2LVxuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzMzNFxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sICdwcm90b3R5cGUnLCB7XG4gICAgdmFsdWU6IDQyLFxuICAgIHdyaXRhYmxlOiBmYWxzZVxuICB9KS5wcm90b3R5cGUgIT09IDQyO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc2VkLCByZXF1aXJlZCkge1xuICBpZiAocGFzc2VkIDwgcmVxdWlyZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdOb3QgZW5vdWdoIGFyZ3VtZW50cycpO1xuICByZXR1cm4gcGFzc2VkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0NhbGxhYmxlKFdlYWtNYXApICYmIC9uYXRpdmUgY29kZS8udGVzdChTdHJpbmcoV2Vha01hcCkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zeW1ib2wtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgVVNFX1NZTUJPTF9BU19VSUQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbFRoaXMuU3ltYm9sO1xudmFyIFdlbGxLbm93blN5bWJvbHNTdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2xbJ2ZvciddIHx8IFN5bWJvbCA6IFN5bWJvbCAmJiBTeW1ib2wud2l0aG91dFNldHRlciB8fCB1aWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgaWYgKCFoYXNPd24oV2VsbEtub3duU3ltYm9sc1N0b3JlLCBuYW1lKSkge1xuICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgaGFzT3duKFN5bWJvbCwgbmFtZSlcbiAgICAgID8gU3ltYm9sW25hbWVdXG4gICAgICA6IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGluc3RhbGxFcnJvckNhdXNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3RhbGwtZXJyb3ItY2F1c2UnKTtcbnZhciBpbnN0YWxsRXJyb3JTdGFjayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lcnJvci1zdGFjay1pbnN0YWxsJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgbm9ybWFsaXplU3RyaW5nQXJndW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbm9ybWFsaXplLXN0cmluZy1hcmd1bWVudCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkRXJyb3IgPSBFcnJvcjtcbnZhciBwdXNoID0gW10ucHVzaDtcblxudmFyICRBZ2dyZWdhdGVFcnJvciA9IGZ1bmN0aW9uIEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSAvKiAsIG9wdGlvbnMgKi8pIHtcbiAgdmFyIGlzSW5zdGFuY2UgPSBpc1Byb3RvdHlwZU9mKEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLCB0aGlzKTtcbiAgdmFyIHRoYXQ7XG4gIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgIHRoYXQgPSBzZXRQcm90b3R5cGVPZihuZXcgJEVycm9yKCksIGlzSW5zdGFuY2UgPyBnZXRQcm90b3R5cGVPZih0aGlzKSA6IEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlKTtcbiAgfSBlbHNlIHtcbiAgICB0aGF0ID0gaXNJbnN0YW5jZSA/IHRoaXMgOiBjcmVhdGUoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUpO1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCBUT19TVFJJTkdfVEFHLCAnRXJyb3InKTtcbiAgfVxuICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ21lc3NhZ2UnLCBub3JtYWxpemVTdHJpbmdBcmd1bWVudChtZXNzYWdlKSk7XG4gIGluc3RhbGxFcnJvclN0YWNrKHRoYXQsICRBZ2dyZWdhdGVFcnJvciwgdGhhdC5zdGFjaywgMSk7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMikgaW5zdGFsbEVycm9yQ2F1c2UodGhhdCwgYXJndW1lbnRzWzJdKTtcbiAgdmFyIGVycm9yc0FycmF5ID0gW107XG4gIGl0ZXJhdGUoZXJyb3JzLCBwdXNoLCB7IHRoYXQ6IGVycm9yc0FycmF5IH0pO1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ2Vycm9ycycsIGVycm9yc0FycmF5KTtcbiAgcmV0dXJuIHRoYXQ7XG59O1xuXG5pZiAoc2V0UHJvdG90eXBlT2YpIHNldFByb3RvdHlwZU9mKCRBZ2dyZWdhdGVFcnJvciwgJEVycm9yKTtcbmVsc2UgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcygkQWdncmVnYXRlRXJyb3IsICRFcnJvciwgeyBuYW1lOiB0cnVlIH0pO1xuXG52YXIgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUgPSAkQWdncmVnYXRlRXJyb3IucHJvdG90eXBlID0gY3JlYXRlKCRFcnJvci5wcm90b3R5cGUsIHtcbiAgY29uc3RydWN0b3I6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAkQWdncmVnYXRlRXJyb3IpLFxuICBtZXNzYWdlOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJycpLFxuICBuYW1lOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgJ0FnZ3JlZ2F0ZUVycm9yJylcbn0pO1xuXG4vLyBgQWdncmVnYXRlRXJyb3JgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFnZ3JlZ2F0ZS1lcnJvci1jb25zdHJ1Y3RvclxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGFyaXR5OiAyIH0sIHtcbiAgQWdncmVnYXRlRXJyb3I6ICRBZ2dyZWdhdGVFcnJvclxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHJlcGxhY2VkIHRvIG1vZHVsZSBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuY29uc3RydWN0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluY2x1ZGVzO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gRkY5OSsgYnVnXG52YXIgQlJPS0VOX09OX1NQQVJTRSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1pbmNsdWRlcyAtLSBkZXRlY3Rpb25cbiAgcmV0dXJuICFBcnJheSgxKS5pbmNsdWRlcygpO1xufSk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJST0tFTl9PTl9TUEFSU0UgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoZWwgLyogLCBmcm9tSW5kZXggPSAwICovKSB7XG4gICAgcmV0dXJuICRpbmNsdWRlcyh0aGlzLCBlbCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdCh1bmRlZmluZWQsIHRydWUpO1xuICB9XG4gIHN3aXRjaCAoc3RhdGUua2luZCkge1xuICAgIGNhc2UgJ2tleXMnOiByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChpbmRleCwgZmFsc2UpO1xuICAgIGNhc2UgJ3ZhbHVlcyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHRhcmdldFtpbmRleF0sIGZhbHNlKTtcbiAgfSByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChbaW5kZXgsIHRhcmdldFtpbmRleF1dLCBmYWxzZSk7XG59LCAndmFsdWVzJyk7XG5cbi8vIGFyZ3VtZW50c0xpc3RbQEBpdGVyYXRvcl0gaXMgJUFycmF5UHJvdG9fdmFsdWVzJVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGV1bm1hcHBlZGFyZ3VtZW50c29iamVjdFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVtYXBwZWRhcmd1bWVudHNvYmplY3RcbnZhciB2YWx1ZXMgPSBJdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcblxuLy8gVjggfiBDaHJvbWUgNDUtIGJ1Z1xuaWYgKCFJU19QVVJFICYmIERFU0NSSVBUT1JTICYmIHZhbHVlcy5uYW1lICE9PSAndmFsdWVzJykgdHJ5IHtcbiAgZGVmaW5lUHJvcGVydHkodmFsdWVzLCAnbmFtZScsIHsgdmFsdWU6ICd2YWx1ZXMnIH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1hc3NpZ24nKTtcblxuLy8gYE9iamVjdC5hc3NpZ25gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuYXNzaWduXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWFzc2lnbiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIGFyaXR5OiAyLCBmb3JjZWQ6IE9iamVjdC5hc3NpZ24gIT09IGFzc2lnbiB9LCB7XG4gIGFzc2lnbjogYXNzaWduXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xuaWYgKCFUT19TVFJJTkdfVEFHX1NVUFBPUlQpIHtcbiAgZGVmaW5lQnVpbHRJbihPYmplY3QucHJvdG90eXBlLCAndG9TdHJpbmcnLCB0b1N0cmluZywgeyB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5hbGxTZXR0bGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxzZXR0bGVkXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBhbGxTZXR0bGVkOiBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwocHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdmdWxmaWxsZWQnLCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHsgc3RhdHVzOiAncmVqZWN0ZWQnLCByZWFzb246IGVycm9yIH07XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UuYWxsYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxudmFyIFBST01JU0VfQU5ZX0VSUk9SID0gJ05vIG9uZSBwcm9taXNlIHJlc29sdmVkJztcblxuLy8gYFByb21pc2UuYW55YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbnlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFueTogZnVuY3Rpb24gYW55KGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBBZ2dyZWdhdGVFcnJvciA9IGdldEJ1aWx0SW4oJ0FnZ3JlZ2F0ZUVycm9yJyk7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgdmFyIGFscmVhZHlSZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeVJlamVjdGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5UmVqZWN0ZWQgfHwgYWxyZWFkeVJlc29sdmVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeVJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVqZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGVycm9yc1tpbmRleF0gPSBlcnJvcjtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZWplY3QobmV3IEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgUFJPTUlTRV9BTllfRVJST1IpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xuXG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4vLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5jYXRjaFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiwgcmVhbDogdHJ1ZSB9LCB7XG4gICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICB9XG59KTtcblxuLy8gbWFrZXMgc3VyZSB0aGF0IG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXMgYFByb21pc2UjY2F0Y2hgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnY2F0Y2gnXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2NhdGNoJ10gIT09IG1ldGhvZCkge1xuICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ2NhdGNoJywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHNldFNwZWNpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXNwZWNpZXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzJyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgUXVldWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcXVldWUnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5DT05TVFJVQ1RPUjtcbnZhciBOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uUkVKRUNUSU9OX0VWRU5UO1xudmFyIE5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLlNVQkNMQVNTSU5HO1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbnZhciBQcm9taXNlQ29uc3RydWN0b3IgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3I7XG52YXIgUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGU7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWxUaGlzLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mO1xudmFyIG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5O1xuXG52YXIgRElTUEFUQ0hfRVZFTlQgPSAhIShkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFdmVudCAmJiBnbG9iYWxUaGlzLmRpc3BhdGNoRXZlbnQpO1xudmFyIFVOSEFORExFRF9SRUpFQ1RJT04gPSAndW5oYW5kbGVkcmVqZWN0aW9uJztcbnZhciBSRUpFQ1RJT05fSEFORExFRCA9ICdyZWplY3Rpb25oYW5kbGVkJztcbnZhciBQRU5ESU5HID0gMDtcbnZhciBGVUxGSUxMRUQgPSAxO1xudmFyIFJFSkVDVEVEID0gMjtcbnZhciBIQU5ETEVEID0gMTtcbnZhciBVTkhBTkRMRUQgPSAyO1xuXG52YXIgSW50ZXJuYWwsIE93blByb21pc2VDYXBhYmlsaXR5LCBQcm9taXNlV3JhcHBlciwgbmF0aXZlVGhlbjtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgaXNDYWxsYWJsZSh0aGVuID0gaXQudGhlbikgPyB0aGVuIDogZmFsc2U7XG59O1xuXG52YXIgY2FsbFJlYWN0aW9uID0gZnVuY3Rpb24gKHJlYWN0aW9uLCBzdGF0ZSkge1xuICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgdmFyIG9rID0gc3RhdGUuc3RhdGUgPT09IEZVTEZJTExFRDtcbiAgdmFyIGhhbmRsZXIgPSBvayA/IHJlYWN0aW9uLm9rIDogcmVhY3Rpb24uZmFpbDtcbiAgdmFyIHJlc29sdmUgPSByZWFjdGlvbi5yZXNvbHZlO1xuICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICB2YXIgZG9tYWluID0gcmVhY3Rpb24uZG9tYWluO1xuICB2YXIgcmVzdWx0LCB0aGVuLCBleGl0ZWQ7XG4gIHRyeSB7XG4gICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgIGlmICghb2spIHtcbiAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgIHN0YXRlLnJlamVjdGlvbiA9IEhBTkRMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgIH0gZWxzZSBpZiAodGhlbiA9IGlzVGhlbmFibGUocmVzdWx0KSkge1xuICAgICAgICBjYWxsKHRoZW4sIHJlc3VsdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGRvbWFpbiAmJiAhZXhpdGVkKSBkb21haW4uZXhpdCgpO1xuICAgIHJlamVjdChlcnJvcik7XG4gIH1cbn07XG5cbnZhciBub3RpZnkgPSBmdW5jdGlvbiAoc3RhdGUsIGlzUmVqZWN0KSB7XG4gIGlmIChzdGF0ZS5ub3RpZmllZCkgcmV0dXJuO1xuICBzdGF0ZS5ub3RpZmllZCA9IHRydWU7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlYWN0aW9ucyA9IHN0YXRlLnJlYWN0aW9ucztcbiAgICB2YXIgcmVhY3Rpb247XG4gICAgd2hpbGUgKHJlYWN0aW9uID0gcmVhY3Rpb25zLmdldCgpKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUubm90aWZpZWQgPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXN0YXRlLnJlamVjdGlvbikgb25VbmhhbmRsZWQoc3RhdGUpO1xuICB9KTtcbn07XG5cbnZhciBkaXNwYXRjaEV2ZW50ID0gZnVuY3Rpb24gKG5hbWUsIHByb21pc2UsIHJlYXNvbikge1xuICB2YXIgZXZlbnQsIGhhbmRsZXI7XG4gIGlmIChESVNQQVRDSF9FVkVOVCkge1xuICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZlbnQucHJvbWlzZSA9IHByb21pc2U7XG4gICAgZXZlbnQucmVhc29uID0gcmVhc29uO1xuICAgIGV2ZW50LmluaXRFdmVudChuYW1lLCBmYWxzZSwgdHJ1ZSk7XG4gICAgZ2xvYmFsVGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSBlbHNlIGV2ZW50ID0geyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHJlYXNvbiB9O1xuICBpZiAoIU5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCAmJiAoaGFuZGxlciA9IGdsb2JhbFRoaXNbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWxUaGlzLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgdmFyIHZhbHVlID0gc3RhdGUudmFsdWU7XG4gICAgdmFyIElTX1VOSEFORExFRCA9IGlzVW5oYW5kbGVkKHN0YXRlKTtcbiAgICB2YXIgcmVzdWx0O1xuICAgIGlmIChJU19VTkhBTkRMRUQpIHtcbiAgICAgIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChVTkhBTkRMRURfUkVKRUNUSU9OLCBwcm9taXNlLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBzdGF0ZS5yZWplY3Rpb24gPSBJU19OT0RFIHx8IGlzVW5oYW5kbGVkKHN0YXRlKSA/IFVOSEFORExFRCA6IEhBTkRMRUQ7XG4gICAgICBpZiAocmVzdWx0LmVycm9yKSB0aHJvdyByZXN1bHQudmFsdWU7XG4gICAgfVxuICB9KTtcbn07XG5cbnZhciBpc1VuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUucmVqZWN0aW9uICE9PSBIQU5ETEVEICYmICFzdGF0ZS5wYXJlbnQ7XG59O1xuXG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWxUaGlzLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBzdGF0ZS5mYWNhZGU7XG4gICAgaWYgKElTX05PREUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFJFSkVDVElPTl9IQU5ETEVELCBwcm9taXNlLCBzdGF0ZS52YWx1ZSk7XG4gIH0pO1xufTtcblxudmFyIGJpbmQgPSBmdW5jdGlvbiAoZm4sIHN0YXRlLCB1bndyYXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGZuKHN0YXRlLCB2YWx1ZSwgdW53cmFwKTtcbiAgfTtcbn07XG5cbnZhciBpbnRlcm5hbFJlamVjdCA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHN0YXRlLnZhbHVlID0gdmFsdWU7XG4gIHN0YXRlLnN0YXRlID0gUkVKRUNURUQ7XG4gIG5vdGlmeShzdGF0ZSwgdHJ1ZSk7XG59O1xuXG52YXIgaW50ZXJuYWxSZXNvbHZlID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgdHJ5IHtcbiAgICBpZiAoc3RhdGUuZmFjYWRlID09PSB2YWx1ZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIHZhciB0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSk7XG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBkb25lOiBmYWxzZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNhbGwodGhlbiwgdmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUikge1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICBQcm9taXNlQ29uc3RydWN0b3IgPSBmdW5jdGlvbiBQcm9taXNlKGV4ZWN1dG9yKSB7XG4gICAgYW5JbnN0YW5jZSh0aGlzLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICBhQ2FsbGFibGUoZXhlY3V0b3IpO1xuICAgIGNhbGwoSW50ZXJuYWwsIHRoaXMpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpLCBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpbnRlcm5hbFJlamVjdChzdGF0ZSwgZXJyb3IpO1xuICAgIH1cbiAgfTtcblxuICBQcm9taXNlUHJvdG90eXBlID0gUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIHR5cGU6IFBST01JU0UsXG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIG5vdGlmaWVkOiBmYWxzZSxcbiAgICAgIHBhcmVudDogZmFsc2UsXG4gICAgICByZWFjdGlvbnM6IG5ldyBRdWV1ZSgpLFxuICAgICAgcmVqZWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0YXRlOiBQRU5ESU5HLFxuICAgICAgdmFsdWU6IG51bGxcbiAgICB9KTtcbiAgfTtcblxuICAvLyBgUHJvbWlzZS5wcm90b3R5cGUudGhlbmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUudGhlblxuICBJbnRlcm5hbC5wcm90b3R5cGUgPSBkZWZpbmVCdWlsdEluKFByb21pc2VQcm90b3R5cGUsICd0aGVuJywgZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgIHZhciByZWFjdGlvbiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCBQcm9taXNlQ29uc3RydWN0b3IpKTtcbiAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgIHJlYWN0aW9uLm9rID0gaXNDYWxsYWJsZShvbkZ1bGZpbGxlZCkgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgcmVhY3Rpb24uZmFpbCA9IGlzQ2FsbGFibGUob25SZWplY3RlZCkgJiYgb25SZWplY3RlZDtcbiAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHN0YXRlLnN0YXRlID09PSBQRU5ESU5HKSBzdGF0ZS5yZWFjdGlvbnMuYWRkKHJlYWN0aW9uKTtcbiAgICBlbHNlIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsUmVhY3Rpb24ocmVhY3Rpb24sIHN0YXRlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgfSk7XG5cbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFByb21pc2VTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG5cbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yIHx8IEMgPT09IFByb21pc2VXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG5cbiAgaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2VQcm90b3R5cGUudGhlbjtcblxuICAgIGlmICghTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkcpIHtcbiAgICAgIC8vIG1ha2UgYFByb21pc2UjdGhlbmAgcmV0dXJuIGEgcG9seWZpbGxlZCBgUHJvbWlzZWAgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICAgIGRlZmluZUJ1aWx0SW4oTmF0aXZlUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlQ29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGNhbGwobmF0aXZlVGhlbiwgdGhhdCwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjQwXG4gICAgICB9LCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIGAuY29uc3RydWN0b3IgPT09IFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICB0cnkge1xuICAgICAgZGVsZXRlIE5hdGl2ZVByb21pc2VQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgLy8gbWFrZSBgaW5zdGFuY2VvZiBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICBzZXRQcm90b3R5cGVPZihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gYFByb21pc2VgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UtZXhlY3V0b3JcbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCB3cmFwOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbi8vIFNhZmFyaSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDgyOVxudmFyIE5PTl9HRU5FUklDID0gISFOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10aGVuYWJsZSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10uY2FsbCh7IHRoZW46IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuZmluYWxseVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBOT05fR0VORVJJQyB9LCB7XG4gICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGdldEJ1aWx0SW4oJ1Byb21pc2UnKSk7XG4gICAgdmFyIGlzRnVuY3Rpb24gPSBpc0NhbGxhYmxlKG9uRmluYWxseSk7XG4gICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5LFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseVxuICAgICk7XG4gIH1cbn0pO1xuXG4vLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNmaW5hbGx5YCBwcm9wZXJseSB3b3JrcyB3aXRoIHBhdGNoZWQgYFByb21pc2UjdGhlbmBcbmlmICghSVNfUFVSRSAmJiBpc0NhbGxhYmxlKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcikpIHtcbiAgdmFyIG1ldGhvZCA9IGdldEJ1aWx0SW4oJ1Byb21pc2UnKS5wcm90b3R5cGVbJ2ZpbmFsbHknXTtcbiAgaWYgKE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2ZpbmFsbHknXSAhPT0gbWV0aG9kKSB7XG4gICAgZGVmaW5lQnVpbHRJbihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnZmluYWxseScsIG1ldGhvZCwgeyB1bnNhZmU6IHRydWUgfSk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3Mgc3BsaXQgdG8gbW9kdWxlcyBsaXN0ZWQgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5jb25zdHJ1Y3RvcicpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNhdGNoJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmFjZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlamVjdCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLnJlc29sdmUnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbi8vIGBQcm9taXNlLnJhY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJhY2VcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIHJhY2U6IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xuXG4vLyBgUHJvbWlzZS5yZWplY3RgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlamVjdFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIH0sIHtcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocikge1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZih0aGlzKTtcbiAgICB2YXIgY2FwYWJpbGl0eVJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIGNhcGFiaWxpdHlSZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG5cbnZhciBQcm9taXNlQ29uc3RydWN0b3JXcmFwcGVyID0gZ2V0QnVpbHRJbignUHJvbWlzZScpO1xudmFyIENIRUNLX1dSQVBQRVIgPSBJU19QVVJFICYmICFGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUjtcblxuLy8gYFByb21pc2UucmVzb2x2ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVzb2x2ZVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElTX1BVUkUgfHwgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQ0hFQ0tfV1JBUFBFUiAmJiB0aGlzID09PSBQcm9taXNlQ29uc3RydWN0b3JXcmFwcGVyID8gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yIDogdGhpcywgeCk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGFwcGx5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5Jyk7XG52YXIgc2xpY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc2xpY2UnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcblxudmFyIFByb21pc2UgPSBnbG9iYWxUaGlzLlByb21pc2U7XG5cbnZhciBBQ0NFUFRfQVJHVU1FTlRTID0gZmFsc2U7XG4vLyBBdm9pZGluZyB0aGUgdXNlIG9mIHBvbHlmaWxscyBvZiB0aGUgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoaXMgcHJvcG9zYWxcbi8vIHRoYXQgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50cyBvZiB0aGUgY2FsbGJhY2tcbnZhciBGT1JDRUQgPSAhUHJvbWlzZSB8fCAhUHJvbWlzZVsndHJ5J10gfHwgcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gIFByb21pc2VbJ3RyeSddKGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICAgIEFDQ0VQVF9BUkdVTUVOVFMgPSBhcmd1bWVudCA9PT0gODtcbiAgfSwgOCk7XG59KS5lcnJvciB8fCAhQUNDRVBUX0FSR1VNRU5UUztcblxuLy8gYFByb21pc2UudHJ5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS50cnlcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAndHJ5JzogZnVuY3Rpb24gKGNhbGxiYWNrZm4gLyogLCAuLi5hcmdzICovKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHNsaWNlKGFyZ3VtZW50cywgMSkgOiBbXTtcbiAgICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcHBseShhQ2FsbGFibGUoY2FsbGJhY2tmbiksIHVuZGVmaW5lZCwgYXJncyk7XG4gICAgfSk7XG4gICAgKHJlc3VsdC5lcnJvciA/IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdCA6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpKHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG4vLyBgUHJvbWlzZS53aXRoUmVzb2x2ZXJzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS53aXRoUmVzb2x2ZXJzXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUgfSwge1xuICB3aXRoUmVzb2x2ZXJzOiBmdW5jdGlvbiB3aXRoUmVzb2x2ZXJzKCkge1xuICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYodGhpcyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb21pc2U6IHByb21pc2VDYXBhYmlsaXR5LnByb21pc2UsXG4gICAgICByZXNvbHZlOiBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlLFxuICAgICAgcmVqZWN0OiBwcm9taXNlQ2FwYWJpbGl0eS5yZWplY3RcbiAgICB9O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG52YXIgJFJhbmdlRXJyb3IgPSBSYW5nZUVycm9yO1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tc3RyaW5nLWZyb21jb2RlcG9pbnQgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50O1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcblxuLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbVxudmFyIElOQ09SUkVDVF9MRU5HVEggPSAhISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPT0gMTtcblxuLy8gYFN0cmluZy5mcm9tQ29kZVBvaW50YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLmZyb21jb2RlcG9pbnRcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBzdGF0OiB0cnVlLCBhcml0eTogMSwgZm9yY2VkOiBJTkNPUlJFQ1RfTEVOR1RIIH0sIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzIC0tIHJlcXVpcmVkIGZvciBgLmxlbmd0aGBcbiAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gZnJvbUNvZGVQb2ludCh4KSB7XG4gICAgdmFyIGVsZW1lbnRzID0gW107XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBjb2RlO1xuICAgIHdoaWxlIChsZW5ndGggPiBpKSB7XG4gICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdO1xuICAgICAgaWYgKHRvQWJzb2x1dGVJbmRleChjb2RlLCAweDEwRkZGRikgIT09IGNvZGUpIHRocm93IG5ldyAkUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICBlbGVtZW50c1tpXSA9IGNvZGUgPCAweDEwMDAwXG4gICAgICAgID8gZnJvbUNoYXJDb2RlKGNvZGUpXG4gICAgICAgIDogZnJvbUNoYXJDb2RlKCgoY29kZSAtPSAweDEwMDAwKSA+PiAxMCkgKyAweEQ4MDAsIGNvZGUgJSAweDQwMCArIDB4REMwMCk7XG4gICAgfSByZXR1cm4gam9pbihlbGVtZW50cywgJycpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS1AQGl0ZXJhdG9yXG5kZWZpbmVJdGVyYXRvcihTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogU1RSSU5HX0lURVJBVE9SLFxuICAgIHN0cmluZzogdG9TdHJpbmcoaXRlcmF0ZWQpLFxuICAgIGluZGV4OiAwXG4gIH0pO1xuLy8gYCVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIHBvaW50ID0gY2hhckF0KHN0cmluZywgaW5kZXgpO1xuICBzdGF0ZS5pbmRleCArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHBvaW50LCBmYWxzZSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbnknKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UudHJ5LmpzJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLndpdGgtcmVzb2x2ZXJzJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS10b2tlbi1saXN0LXByb3RvdHlwZScpO1xudmFyIEFycmF5SXRlcmF0b3JNZXRob2RzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvcicpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQXJyYXlWYWx1ZXMgPSBBcnJheUl0ZXJhdG9yTWV0aG9kcy52YWx1ZXM7XG5cbnZhciBoYW5kbGVQcm90b3R5cGUgPSBmdW5jdGlvbiAoQ29sbGVjdGlvblByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKSB7XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlKSB7XG4gICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdICE9PSBBcnJheVZhbHVlcykgdHJ5IHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBDb2xsZWN0aW9uUHJvdG90eXBlW0lURVJBVE9SXSA9IEFycmF5VmFsdWVzO1xuICAgIH1cbiAgICBzZXRUb1N0cmluZ1RhZyhDb2xsZWN0aW9uUHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUsIHRydWUpO1xuICAgIGlmIChET01JdGVyYWJsZXNbQ09MTEVDVElPTl9OQU1FXSkgZm9yICh2YXIgTUVUSE9EX05BTUUgaW4gQXJyYXlJdGVyYXRvck1ldGhvZHMpIHtcbiAgICAgIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICAgICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdICE9PSBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV0pIHRyeSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBNRVRIT0RfTkFNRSwgQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdID0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICBoYW5kbGVQcm90b3R5cGUoZ2xvYmFsVGhpc1tDT0xMRUNUSU9OX05BTUVdICYmIGdsb2JhbFRoaXNbQ09MTEVDVElPTl9OQU1FXS5wcm90b3R5cGUsIENPTExFQ1RJT05fTkFNRSk7XG59XG5cbmhhbmRsZVByb3RvdHlwZShET01Ub2tlbkxpc3RQcm90b3R5cGUsICdET01Ub2tlbkxpc3QnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IGluIGNvcmUtanNANCwgbW92ZSAvbW9kdWxlcy8gZGVwZW5kZW5jaWVzIHRvIHB1YmxpYyBlbnRyaWVzIGZvciBiZXR0ZXIgb3B0aW1pemF0aW9uIGJ5IHRvb2xzIGxpa2UgYHByZXNldC1lbnZgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnN0cmluZy5mcm9tLWNvZGUtcG9pbnQnKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBzYWZlR2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zYWZlLWdldC1idWlsdC1pbicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgZGVmaW5lQnVpbHRJbnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWlucycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXItcmVzdWx0LW9iamVjdCcpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBhcnJheVNvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc29ydCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgVVJMX1NFQVJDSF9QQVJBTVMgPSAnVVJMU2VhcmNoUGFyYW1zJztcbnZhciBVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiA9IFVSTF9TRUFSQ0hfUEFSQU1TICsgJ0l0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TKTtcbnZhciBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUik7XG5cbnZhciBuYXRpdmVGZXRjaCA9IHNhZmVHZXRCdWlsdEluKCdmZXRjaCcpO1xudmFyIE5hdGl2ZVJlcXVlc3QgPSBzYWZlR2V0QnVpbHRJbignUmVxdWVzdCcpO1xudmFyIEhlYWRlcnMgPSBzYWZlR2V0QnVpbHRJbignSGVhZGVycycpO1xudmFyIFJlcXVlc3RQcm90b3R5cGUgPSBOYXRpdmVSZXF1ZXN0ICYmIE5hdGl2ZVJlcXVlc3QucHJvdG90eXBlO1xudmFyIEhlYWRlcnNQcm90b3R5cGUgPSBIZWFkZXJzICYmIEhlYWRlcnMucHJvdG90eXBlO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbFRoaXMuVHlwZUVycm9yO1xudmFyIGVuY29kZVVSSUNvbXBvbmVudCA9IGdsb2JhbFRoaXMuZW5jb2RlVVJJQ29tcG9uZW50O1xudmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG52YXIgZnJvbUNvZGVQb2ludCA9IGdldEJ1aWx0SW4oJ1N0cmluZycsICdmcm9tQ29kZVBvaW50Jyk7XG52YXIgJHBhcnNlSW50ID0gcGFyc2VJbnQ7XG52YXIgY2hhckF0ID0gdW5jdXJyeVRoaXMoJycuY2hhckF0KTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzaGlmdCA9IHVuY3VycnlUaGlzKFtdLnNoaWZ0KTtcbnZhciBzcGxpY2UgPSB1bmN1cnJ5VGhpcyhbXS5zcGxpY2UpO1xudmFyIHNwbGl0ID0gdW5jdXJyeVRoaXMoJycuc3BsaXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG5cbnZhciBwbHVzID0gL1xcKy9nO1xudmFyIEZBTExCQUNLX1JFUExBQ0VSID0gJ1xcdUZGRkQnO1xudmFyIFZBTElEX0hFWCA9IC9eWzAtOWEtZl0rJC9pO1xuXG52YXIgcGFyc2VIZXhPY3RldCA9IGZ1bmN0aW9uIChzdHJpbmcsIHN0YXJ0KSB7XG4gIHZhciBzdWJzdHIgPSBzdHJpbmdTbGljZShzdHJpbmcsIHN0YXJ0LCBzdGFydCArIDIpO1xuICBpZiAoIWV4ZWMoVkFMSURfSEVYLCBzdWJzdHIpKSByZXR1cm4gTmFOO1xuXG4gIHJldHVybiAkcGFyc2VJbnQoc3Vic3RyLCAxNik7XG59O1xuXG52YXIgZ2V0TGVhZGluZ09uZXMgPSBmdW5jdGlvbiAob2N0ZXQpIHtcbiAgdmFyIGNvdW50ID0gMDtcbiAgZm9yICh2YXIgbWFzayA9IDB4ODA7IG1hc2sgPiAwICYmIChvY3RldCAmIG1hc2spICE9PSAwOyBtYXNrID4+PSAxKSB7XG4gICAgY291bnQrKztcbiAgfVxuICByZXR1cm4gY291bnQ7XG59O1xuXG52YXIgdXRmOERlY29kZSA9IGZ1bmN0aW9uIChvY3RldHMpIHtcbiAgdmFyIGNvZGVQb2ludCA9IG51bGw7XG5cbiAgc3dpdGNoIChvY3RldHMubGVuZ3RoKSB7XG4gICAgY2FzZSAxOlxuICAgICAgY29kZVBvaW50ID0gb2N0ZXRzWzBdO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgY29kZVBvaW50ID0gKG9jdGV0c1swXSAmIDB4MUYpIDw8IDYgfCAob2N0ZXRzWzFdICYgMHgzRik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICBjb2RlUG9pbnQgPSAob2N0ZXRzWzBdICYgMHgwRikgPDwgMTIgfCAob2N0ZXRzWzFdICYgMHgzRikgPDwgNiB8IChvY3RldHNbMl0gJiAweDNGKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNDpcbiAgICAgIGNvZGVQb2ludCA9IChvY3RldHNbMF0gJiAweDA3KSA8PCAxOCB8IChvY3RldHNbMV0gJiAweDNGKSA8PCAxMiB8IChvY3RldHNbMl0gJiAweDNGKSA8PCA2IHwgKG9jdGV0c1szXSAmIDB4M0YpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gY29kZVBvaW50ID4gMHgxMEZGRkYgPyBudWxsIDogY29kZVBvaW50O1xufTtcblxudmFyIGRlY29kZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIHBsdXMsICcgJyk7XG4gIHZhciBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgdmFyIGkgPSAwO1xuXG4gIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgdmFyIGRlY29kZWRDaGFyID0gY2hhckF0KGlucHV0LCBpKTtcblxuICAgIGlmIChkZWNvZGVkQ2hhciA9PT0gJyUnKSB7XG4gICAgICBpZiAoY2hhckF0KGlucHV0LCBpICsgMSkgPT09ICclJyB8fCBpICsgMyA+IGxlbmd0aCkge1xuICAgICAgICByZXN1bHQgKz0gJyUnO1xuICAgICAgICBpKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgb2N0ZXQgPSBwYXJzZUhleE9jdGV0KGlucHV0LCBpICsgMSk7XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAob2N0ZXQgIT09IG9jdGV0KSB7XG4gICAgICAgIHJlc3VsdCArPSBkZWNvZGVkQ2hhcjtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaSArPSAyO1xuICAgICAgdmFyIGJ5dGVTZXF1ZW5jZUxlbmd0aCA9IGdldExlYWRpbmdPbmVzKG9jdGV0KTtcblxuICAgICAgaWYgKGJ5dGVTZXF1ZW5jZUxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkZWNvZGVkQ2hhciA9IGZyb21DaGFyQ29kZShvY3RldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYnl0ZVNlcXVlbmNlTGVuZ3RoID09PSAxIHx8IGJ5dGVTZXF1ZW5jZUxlbmd0aCA+IDQpIHtcbiAgICAgICAgICByZXN1bHQgKz0gRkFMTEJBQ0tfUkVQTEFDRVI7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG9jdGV0cyA9IFtvY3RldF07XG4gICAgICAgIHZhciBzZXF1ZW5jZUluZGV4ID0gMTtcblxuICAgICAgICB3aGlsZSAoc2VxdWVuY2VJbmRleCA8IGJ5dGVTZXF1ZW5jZUxlbmd0aCkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgICBpZiAoaSArIDMgPiBsZW5ndGggfHwgY2hhckF0KGlucHV0LCBpKSAhPT0gJyUnKSBicmVhaztcblxuICAgICAgICAgIHZhciBuZXh0Qnl0ZSA9IHBhcnNlSGV4T2N0ZXQoaW5wdXQsIGkgKyAxKTtcblxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICAgICAgaWYgKG5leHRCeXRlICE9PSBuZXh0Qnl0ZSkge1xuICAgICAgICAgICAgaSArPSAzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXh0Qnl0ZSA+IDE5MSB8fCBuZXh0Qnl0ZSA8IDEyOCkgYnJlYWs7XG5cbiAgICAgICAgICBwdXNoKG9jdGV0cywgbmV4dEJ5dGUpO1xuICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgICBzZXF1ZW5jZUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2N0ZXRzLmxlbmd0aCAhPT0gYnl0ZVNlcXVlbmNlTGVuZ3RoKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IEZBTExCQUNLX1JFUExBQ0VSO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGNvZGVQb2ludCA9IHV0ZjhEZWNvZGUob2N0ZXRzKTtcbiAgICAgICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIHJlc3VsdCArPSBGQUxMQkFDS19SRVBMQUNFUjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWNvZGVkQ2hhciA9IGZyb21Db2RlUG9pbnQoY29kZVBvaW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdCArPSBkZWNvZGVkQ2hhcjtcbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxudmFyIGZpbmQgPSAvWyEnKCl+XXwlMjAvZztcblxudmFyIHJlcGxhY2VtZW50cyA9IHtcbiAgJyEnOiAnJTIxJyxcbiAgXCInXCI6ICclMjcnLFxuICAnKCc6ICclMjgnLFxuICAnKSc6ICclMjknLFxuICAnfic6ICclN0UnLFxuICAnJTIwJzogJysnXG59O1xuXG52YXIgcmVwbGFjZXIgPSBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgcmV0dXJuIHJlcGxhY2VtZW50c1ttYXRjaF07XG59O1xuXG52YXIgc2VyaWFsaXplID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiByZXBsYWNlKGVuY29kZVVSSUNvbXBvbmVudChpdCksIGZpbmQsIHJlcGxhY2VyKTtcbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciA9IGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IoZnVuY3Rpb24gSXRlcmF0b3IocGFyYW1zLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SLFxuICAgIHRhcmdldDogZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZShwYXJhbXMpLmVudHJpZXMsXG4gICAgaW5kZXg6IDAsXG4gICAga2luZDoga2luZFxuICB9KTtcbn0sIFVSTF9TRUFSQ0hfUEFSQU1TLCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUodGhpcyk7XG4gIHZhciB0YXJnZXQgPSBzdGF0ZS50YXJnZXQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSBudWxsO1xuICAgIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbiAgdmFyIGVudHJ5ID0gdGFyZ2V0W2luZGV4XTtcbiAgc3dpdGNoIChzdGF0ZS5raW5kKSB7XG4gICAgY2FzZSAna2V5cyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGVudHJ5LmtleSwgZmFsc2UpO1xuICAgIGNhc2UgJ3ZhbHVlcyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGVudHJ5LnZhbHVlLCBmYWxzZSk7XG4gIH0gcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoW2VudHJ5LmtleSwgZW50cnkudmFsdWVdLCBmYWxzZSk7XG59LCB0cnVlKTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1N0YXRlID0gZnVuY3Rpb24gKGluaXQpIHtcbiAgdGhpcy5lbnRyaWVzID0gW107XG4gIHRoaXMudXJsID0gbnVsbDtcblxuICBpZiAoaW5pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGlzT2JqZWN0KGluaXQpKSB0aGlzLnBhcnNlT2JqZWN0KGluaXQpO1xuICAgIGVsc2UgdGhpcy5wYXJzZVF1ZXJ5KHR5cGVvZiBpbml0ID09ICdzdHJpbmcnID8gY2hhckF0KGluaXQsIDApID09PSAnPycgPyBzdHJpbmdTbGljZShpbml0LCAxKSA6IGluaXQgOiAkdG9TdHJpbmcoaW5pdCkpO1xuICB9XG59O1xuXG5VUkxTZWFyY2hQYXJhbXNTdGF0ZS5wcm90b3R5cGUgPSB7XG4gIHR5cGU6IFVSTF9TRUFSQ0hfUEFSQU1TLFxuICBiaW5kVVJMOiBmdW5jdGlvbiAodXJsKSB7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy51cGRhdGUoKTtcbiAgfSxcbiAgcGFyc2VPYmplY3Q6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICB2YXIgZW50cmllcyA9IHRoaXMuZW50cmllcztcbiAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBnZXRJdGVyYXRvck1ldGhvZChvYmplY3QpO1xuICAgIHZhciBpdGVyYXRvciwgbmV4dCwgc3RlcCwgZW50cnlJdGVyYXRvciwgZW50cnlOZXh0LCBmaXJzdCwgc2Vjb25kO1xuXG4gICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKG9iamVjdCwgaXRlcmF0b3JNZXRob2QpO1xuICAgICAgbmV4dCA9IGl0ZXJhdG9yLm5leHQ7XG4gICAgICB3aGlsZSAoIShzdGVwID0gY2FsbChuZXh0LCBpdGVyYXRvcikpLmRvbmUpIHtcbiAgICAgICAgZW50cnlJdGVyYXRvciA9IGdldEl0ZXJhdG9yKGFuT2JqZWN0KHN0ZXAudmFsdWUpKTtcbiAgICAgICAgZW50cnlOZXh0ID0gZW50cnlJdGVyYXRvci5uZXh0O1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGZpcnN0ID0gY2FsbChlbnRyeU5leHQsIGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgKHNlY29uZCA9IGNhbGwoZW50cnlOZXh0LCBlbnRyeUl0ZXJhdG9yKSkuZG9uZSB8fFxuICAgICAgICAgICFjYWxsKGVudHJ5TmV4dCwgZW50cnlJdGVyYXRvcikuZG9uZVxuICAgICAgICApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHNlcXVlbmNlIHdpdGggbGVuZ3RoIDInKTtcbiAgICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogJHRvU3RyaW5nKGZpcnN0LnZhbHVlKSwgdmFsdWU6ICR0b1N0cmluZyhzZWNvbmQudmFsdWUpIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSBpZiAoaGFzT3duKG9iamVjdCwga2V5KSkge1xuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleToga2V5LCB2YWx1ZTogJHRvU3RyaW5nKG9iamVjdFtrZXldKSB9KTtcbiAgICB9XG4gIH0sXG4gIHBhcnNlUXVlcnk6IGZ1bmN0aW9uIChxdWVyeSkge1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgdmFyIGVudHJpZXMgPSB0aGlzLmVudHJpZXM7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHNwbGl0KHF1ZXJ5LCAnJicpO1xuICAgICAgdmFyIGluZGV4ID0gMDtcbiAgICAgIHZhciBhdHRyaWJ1dGUsIGVudHJ5O1xuICAgICAgd2hpbGUgKGluZGV4IDwgYXR0cmlidXRlcy5sZW5ndGgpIHtcbiAgICAgICAgYXR0cmlidXRlID0gYXR0cmlidXRlc1tpbmRleCsrXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5sZW5ndGgpIHtcbiAgICAgICAgICBlbnRyeSA9IHNwbGl0KGF0dHJpYnV0ZSwgJz0nKTtcbiAgICAgICAgICBwdXNoKGVudHJpZXMsIHtcbiAgICAgICAgICAgIGtleTogZGVjb2RlKHNoaWZ0KGVudHJ5KSksXG4gICAgICAgICAgICB2YWx1ZTogZGVjb2RlKGpvaW4oZW50cnksICc9JykpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBlbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgcHVzaChyZXN1bHQsIHNlcmlhbGl6ZShlbnRyeS5rZXkpICsgJz0nICsgc2VyaWFsaXplKGVudHJ5LnZhbHVlKSk7XG4gICAgfSByZXR1cm4gam9pbihyZXN1bHQsICcmJyk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZW50cmllcy5sZW5ndGggPSAwO1xuICAgIHRoaXMucGFyc2VRdWVyeSh0aGlzLnVybC5xdWVyeSk7XG4gIH0sXG4gIHVwZGF0ZVVSTDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnVybCkgdGhpcy51cmwudXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXNgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS11cmxzZWFyY2hwYXJhbXNcbnZhciBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTFNlYXJjaFBhcmFtcygvKiBpbml0ICovKSB7XG4gIGFuSW5zdGFuY2UodGhpcywgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlKTtcbiAgdmFyIGluaXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHN0YXRlID0gc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCBuZXcgVVJMU2VhcmNoUGFyYW1zU3RhdGUoaW5pdCkpO1xuICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLnNpemUgPSBzdGF0ZS5lbnRyaWVzLmxlbmd0aDtcbn07XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbmRlZmluZUJ1aWx0SW5zKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwge1xuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5hcHBlbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtYXBwZW5kXG4gIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAyKTtcbiAgICBwdXNoKHN0YXRlLmVudHJpZXMsIHsga2V5OiAkdG9TdHJpbmcobmFtZSksIHZhbHVlOiAkdG9TdHJpbmcodmFsdWUpIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMubGVuZ3RoKys7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmRlbGV0ZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1kZWxldGVcbiAgJ2RlbGV0ZSc6IGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICB2YXIgdmFsdWUgPSAkdmFsdWUgPT09IHVuZGVmaW5lZCA/ICR2YWx1ZSA6ICR0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllcy5sZW5ndGgpIHtcbiAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5ICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIHtcbiAgICAgICAgc3BsaWNlKGVudHJpZXMsIGluZGV4LCAxKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgfSBlbHNlIGluZGV4Kys7XG4gICAgfVxuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0XG4gIGdldDogZnVuY3Rpb24gZ2V0KG5hbWUpIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgZm9yICg7IGluZGV4IDwgZW50cmllcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChlbnRyaWVzW2luZGV4XS5rZXkgPT09IGtleSkgcmV0dXJuIGVudHJpZXNbaW5kZXhdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZ2V0QWxsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWdldGFsbFxuICBnZXRBbGw6IGZ1bmN0aW9uIGdldEFsbChuYW1lKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSBwdXNoKHJlc3VsdCwgZW50cmllc1tpbmRleF0udmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5oYXNgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtaGFzXG4gIGhhczogZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWx1ZSA9ICR2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJHZhbHVlIDogJHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChlbnRyeS5rZXkgPT09IGtleSAmJiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zZXRgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtc2V0XG4gIHNldDogZnVuY3Rpb24gc2V0KG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZW50cmllcyA9IHN0YXRlLmVudHJpZXM7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGtleSA9ICR0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsID0gJHRvU3RyaW5nKHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgIGlmIChlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBpZiAoZm91bmQpIHNwbGljZShlbnRyaWVzLCBpbmRleC0tLCAxKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgIGVudHJ5LnZhbHVlID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICghZm91bmQpIHB1c2goZW50cmllcywgeyBrZXk6IGtleSwgdmFsdWU6IHZhbCB9KTtcbiAgICBpZiAoIURFU0NSSVBUT1JTKSB0aGlzLnNpemUgPSBlbnRyaWVzLmxlbmd0aDtcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc29ydGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zb3J0XG4gIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKTtcbiAgICBhcnJheVNvcnQoc3RhdGUuZW50cmllcywgZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBhLmtleSA+IGIua2V5ID8gMSA6IC0xO1xuICAgIH0pO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFjayAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2ssIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBlbnRyeTtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgYm91bmRGdW5jdGlvbihlbnRyeS52YWx1ZSwgZW50cnkua2V5LCB0aGlzKTtcbiAgICB9XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuICBrZXlzOiBmdW5jdGlvbiBrZXlzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2tleXMnKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUudmFsdWVzYCBtZXRob2RcbiAgdmFsdWVzOiBmdW5jdGlvbiB2YWx1ZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAndmFsdWVzJyk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCkge1xuICAgIHJldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IodGhpcywgJ2VudHJpZXMnKTtcbiAgfVxufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG5kZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgSVRFUkFUT1IsIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5lbnRyaWVzLCB7IG5hbWU6ICdlbnRyaWVzJyB9KTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmxzZWFyY2hwYXJhbXMtc3RyaW5naWZpY2F0aW9uLWJlaGF2aW9yXG5kZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLnNlcmlhbGl6ZSgpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zaXplYCBnZXR0ZXJcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvdXJsL3B1bGwvNzM0XG5pZiAoREVTQ1JJUFRPUlMpIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICBnZXQ6IGZ1bmN0aW9uIHNpemUoKSB7XG4gICAgcmV0dXJuIGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcy5sZW5ndGg7XG4gIH0sXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZW51bWVyYWJsZTogdHJ1ZVxufSk7XG5cbnNldFRvU3RyaW5nVGFnKFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLCBVUkxfU0VBUkNIX1BBUkFNUyk7XG5cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCB9LCB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3Jcbn0pO1xuXG4vLyBXcmFwIGBmZXRjaGAgYW5kIGBSZXF1ZXN0YCBmb3IgY29ycmVjdCB3b3JrIHdpdGggcG9seWZpbGxlZCBgVVJMU2VhcmNoUGFyYW1zYFxuaWYgKCFVU0VfTkFUSVZFX1VSTCAmJiBpc0NhbGxhYmxlKEhlYWRlcnMpKSB7XG4gIHZhciBoZWFkZXJzSGFzID0gdW5jdXJyeVRoaXMoSGVhZGVyc1Byb3RvdHlwZS5oYXMpO1xuICB2YXIgaGVhZGVyc1NldCA9IHVuY3VycnlUaGlzKEhlYWRlcnNQcm90b3R5cGUuc2V0KTtcblxuICB2YXIgd3JhcFJlcXVlc3RPcHRpb25zID0gZnVuY3Rpb24gKGluaXQpIHtcbiAgICBpZiAoaXNPYmplY3QoaW5pdCkpIHtcbiAgICAgIHZhciBib2R5ID0gaW5pdC5ib2R5O1xuICAgICAgdmFyIGhlYWRlcnM7XG4gICAgICBpZiAoY2xhc3NvZihib2R5KSA9PT0gVVJMX1NFQVJDSF9QQVJBTVMpIHtcbiAgICAgICAgaGVhZGVycyA9IGluaXQuaGVhZGVycyA/IG5ldyBIZWFkZXJzKGluaXQuaGVhZGVycykgOiBuZXcgSGVhZGVycygpO1xuICAgICAgICBpZiAoIWhlYWRlcnNIYXMoaGVhZGVycywgJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgICAgaGVhZGVyc1NldChoZWFkZXJzLCAnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZShpbml0LCB7XG4gICAgICAgICAgYm9keTogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsICR0b1N0cmluZyhib2R5KSksXG4gICAgICAgICAgaGVhZGVyczogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDAsIGhlYWRlcnMpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gcmV0dXJuIGluaXQ7XG4gIH07XG5cbiAgaWYgKGlzQ2FsbGFibGUobmF0aXZlRmV0Y2gpKSB7XG4gICAgJCh7IGdsb2JhbDogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgZG9udENhbGxHZXRTZXQ6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBmZXRjaDogZnVuY3Rpb24gZmV0Y2goaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVGZXRjaChpbnB1dCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyB3cmFwUmVxdWVzdE9wdGlvbnMoYXJndW1lbnRzWzFdKSA6IHt9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChpc0NhbGxhYmxlKE5hdGl2ZVJlcXVlc3QpKSB7XG4gICAgdmFyIFJlcXVlc3RDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICBhbkluc3RhbmNlKHRoaXMsIFJlcXVlc3RQcm90b3R5cGUpO1xuICAgICAgcmV0dXJuIG5ldyBOYXRpdmVSZXF1ZXN0KGlucHV0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHdyYXBSZXF1ZXN0T3B0aW9ucyhhcmd1bWVudHNbMV0pIDoge30pO1xuICAgIH07XG5cbiAgICBSZXF1ZXN0UHJvdG90eXBlLmNvbnN0cnVjdG9yID0gUmVxdWVzdENvbnN0cnVjdG9yO1xuICAgIFJlcXVlc3RDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBSZXF1ZXN0UHJvdG90eXBlO1xuXG4gICAgJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGRvbnRDYWxsR2V0U2V0OiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgUmVxdWVzdDogUmVxdWVzdENvbnN0cnVjdG9yXG4gICAgfSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFVSTFNlYXJjaFBhcmFtczogVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsXG4gIGdldFN0YXRlOiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBhcHBlbmQgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuYXBwZW5kKTtcbnZhciAkZGVsZXRlID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlWydkZWxldGUnXSk7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MSZhPTImYj0zJyk7XG5cbnBhcmFtc1snZGVsZXRlJ10oJ2EnLCAxKTtcbi8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0xNDIyMlxucGFyYW1zWydkZWxldGUnXSgnYicsIHVuZGVmaW5lZCk7XG5cbmlmIChwYXJhbXMgKyAnJyAhPT0gJ2E9MicpIHtcbiAgZGVmaW5lQnVpbHRJbihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdkZWxldGUnLCBmdW5jdGlvbiAobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgaWYgKGxlbmd0aCAmJiAkdmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICRkZWxldGUodGhpcywgbmFtZSk7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICh2LCBrKSB7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgICAgcHVzaChlbnRyaWVzLCB7IGtleTogaywgdmFsdWU6IHYgfSk7XG4gICAgfSk7XG4gICAgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgobGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBkaW5kZXggPSAwO1xuICAgIHZhciBmb3VuZCA9IGZhbHNlO1xuICAgIHZhciBlbnRyaWVzTGVuZ3RoID0gZW50cmllcy5sZW5ndGg7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tpbmRleCsrXTtcbiAgICAgIGlmIChmb3VuZCB8fCBlbnRyeS5rZXkgPT09IGtleSkge1xuICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICRkZWxldGUodGhpcywgZW50cnkua2V5KTtcbiAgICAgIH0gZWxzZSBkaW5kZXgrKztcbiAgICB9XG4gICAgd2hpbGUgKGRpbmRleCA8IGVudHJpZXNMZW5ndGgpIHtcbiAgICAgIGVudHJ5ID0gZW50cmllc1tkaW5kZXgrK107XG4gICAgICBpZiAoIShlbnRyeS5rZXkgPT09IGtleSAmJiBlbnRyeS52YWx1ZSA9PT0gdmFsdWUpKSBhcHBlbmQodGhpcywgZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7XG4gICAgfVxuICB9LCB7IGVudW1lcmFibGU6IHRydWUsIHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcblxudmFyICRVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXM7XG52YXIgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlID0gJFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZ2V0QWxsID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmdldEFsbCk7XG52YXIgJGhhcyA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5oYXMpO1xudmFyIHBhcmFtcyA9IG5ldyAkVVJMU2VhcmNoUGFyYW1zKCdhPTEnKTtcblxuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5pZiAocGFyYW1zLmhhcygnYScsIDIpIHx8ICFwYXJhbXMuaGFzKCdhJywgdW5kZWZpbmVkKSkge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2hhcycsIGZ1bmN0aW9uIGhhcyhuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGhhcyh0aGlzLCBuYW1lKTtcbiAgICB2YXIgdmFsdWVzID0gZ2V0QWxsKHRoaXMsIG5hbWUpOyAvLyBhbHNvIHZhbGlkYXRlcyBgdGhpc2BcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciB2YWx1ZSA9IHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICBpZiAodmFsdWVzW2luZGV4KytdID09PSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgfSByZXR1cm4gZmFsc2U7XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG5cbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGZvckVhY2ggPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZm9yRWFjaCk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUyAmJiAhKCdzaXplJyBpbiBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpKSB7XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUsICdzaXplJywge1xuICAgIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG4gICAgICBmb3JFYWNoKHRoaXMsIGZ1bmN0aW9uICgpIHsgY291bnQrKzsgfSk7XG4gICAgICByZXR1cm4gY291bnQ7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG52YXIgVVJMID0gZ2V0QnVpbHRJbignVVJMJyk7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvNDc1MDVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kZW5vbGFuZC9kZW5vL2lzc3Vlcy8xODg5M1xudmFyIFRIUk9XU19XSVRIT1VUX0FSR1VNRU5UUyA9IFVTRV9OQVRJVkVfVVJMICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgVVJMLmNhblBhcnNlKCk7XG59KTtcblxuLy8gQnVuIH4gMS4wLjMwIGJ1Z1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL292ZW4tc2gvYnVuL2lzc3Vlcy85MjUwXG52YXIgV1JPTkdfQVJJVFkgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBVUkwuY2FuUGFyc2UubGVuZ3RoICE9PSAxO1xufSk7XG5cbi8vIGBVUkwuY2FuUGFyc2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWNhbnBhcnNlXG4kKHsgdGFyZ2V0OiAnVVJMJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhVEhST1dTX1dJVEhPVVRfQVJHVU1FTlRTIHx8IFdST05HX0FSSVRZIH0sIHtcbiAgY2FuUGFyc2U6IGZ1bmN0aW9uIGNhblBhcnNlKHVybCkge1xuICAgIHZhciBsZW5ndGggPSB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgdXJsU3RyaW5nID0gdG9TdHJpbmcodXJsKTtcbiAgICB2YXIgYmFzZSA9IGxlbmd0aCA8IDIgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0b1N0cmluZyhhcmd1bWVudHNbMV0pO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gISFuZXcgVVJMKHVybFN0cmluZywgYmFzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xudmFyIGFycmF5RnJvbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mcm9tJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNvZGVBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY29kZUF0O1xudmFyIHRvQVNDSUkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLXB1bnljb2RlLXRvLWFzY2lpJyk7XG52YXIgJHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIFVSTFNlYXJjaFBhcmFtc01vZHVsZSA9IHJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xuXG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsVVJMU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcignVVJMJyk7XG52YXIgVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zTW9kdWxlLlVSTFNlYXJjaFBhcmFtcztcbnZhciBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlID0gVVJMU2VhcmNoUGFyYW1zTW9kdWxlLmdldFN0YXRlO1xuXG52YXIgTmF0aXZlVVJMID0gZ2xvYmFsVGhpcy5VUkw7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgcGFyc2VJbnQgPSBnbG9iYWxUaGlzLnBhcnNlSW50O1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBwb3cgPSBNYXRoLnBvdztcbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcygvLi8uZXhlYyk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIG51bWJlclRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcbnZhciBwb3AgPSB1bmN1cnJ5VGhpcyhbXS5wb3ApO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciByZXBsYWNlID0gdW5jdXJyeVRoaXMoJycucmVwbGFjZSk7XG52YXIgc2hpZnQgPSB1bmN1cnJ5VGhpcyhbXS5zaGlmdCk7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgdG9Mb3dlckNhc2UgPSB1bmN1cnJ5VGhpcygnJy50b0xvd2VyQ2FzZSk7XG52YXIgdW5zaGlmdCA9IHVuY3VycnlUaGlzKFtdLnVuc2hpZnQpO1xuXG52YXIgSU5WQUxJRF9BVVRIT1JJVFkgPSAnSW52YWxpZCBhdXRob3JpdHknO1xudmFyIElOVkFMSURfU0NIRU1FID0gJ0ludmFsaWQgc2NoZW1lJztcbnZhciBJTlZBTElEX0hPU1QgPSAnSW52YWxpZCBob3N0JztcbnZhciBJTlZBTElEX1BPUlQgPSAnSW52YWxpZCBwb3J0JztcblxudmFyIEFMUEhBID0gL1thLXpdL2k7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLW9ic2N1cmUtcmFuZ2UgLS0gc2FmZVxudmFyIEFMUEhBTlVNRVJJQyA9IC9bXFxkKy0uYS16XS9pO1xudmFyIERJR0lUID0gL1xcZC87XG52YXIgSEVYX1NUQVJUID0gL14weC9pO1xudmFyIE9DVCA9IC9eWzAtN10rJC87XG52YXIgREVDID0gL15cXGQrJC87XG52YXIgSEVYID0gL15bXFxkYS1mXSskL2k7XG4vKiBlc2xpbnQtZGlzYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlQgPSAvW1xcMFxcdFxcblxcciAjJS86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5UID0gL1tcXDBcXHRcXG5cXHIgIy86PD4/QFtcXFxcXFxdXnxdLztcbnZhciBMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UgPSAvXltcXHUwMDAwLVxcdTAwMjBdKy87XG52YXIgVFJBSUxJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSA9IC8oXnxbXlxcdTAwMDAtXFx1MDAyMF0pW1xcdTAwMDAtXFx1MDAyMF0rJC87XG52YXIgVEFCX0FORF9ORVdfTElORSA9IC9bXFx0XFxuXFxyXS9nO1xuLyogZXNsaW50LWVuYWJsZSByZWdleHAvbm8tY29udHJvbC1jaGFyYWN0ZXIgLS0gc2FmZSAqL1xudmFyIEVPRjtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpcHY0LW51bWJlci1wYXJzZXJcbnZhciBwYXJzZUlQdjQgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgdmFyIHBhcnRzID0gc3BsaXQoaW5wdXQsICcuJyk7XG4gIHZhciBwYXJ0c0xlbmd0aCwgbnVtYmVycywgaW5kZXgsIHBhcnQsIHJhZGl4LCBudW1iZXIsIGlwdjQ7XG4gIGlmIChwYXJ0cy5sZW5ndGggJiYgcGFydHNbcGFydHMubGVuZ3RoIC0gMV0gPT09ICcnKSB7XG4gICAgcGFydHMubGVuZ3RoLS07XG4gIH1cbiAgcGFydHNMZW5ndGggPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChwYXJ0c0xlbmd0aCA+IDQpIHJldHVybiBpbnB1dDtcbiAgbnVtYmVycyA9IFtdO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIHBhcnQgPSBwYXJ0c1tpbmRleF07XG4gICAgaWYgKHBhcnQgPT09ICcnKSByZXR1cm4gaW5wdXQ7XG4gICAgcmFkaXggPSAxMDtcbiAgICBpZiAocGFydC5sZW5ndGggPiAxICYmIGNoYXJBdChwYXJ0LCAwKSA9PT0gJzAnKSB7XG4gICAgICByYWRpeCA9IGV4ZWMoSEVYX1NUQVJULCBwYXJ0KSA/IDE2IDogODtcbiAgICAgIHBhcnQgPSBzdHJpbmdTbGljZShwYXJ0LCByYWRpeCA9PT0gOCA/IDEgOiAyKTtcbiAgICB9XG4gICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICBudW1iZXIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWV4ZWMocmFkaXggPT09IDEwID8gREVDIDogcmFkaXggPT09IDggPyBPQ1QgOiBIRVgsIHBhcnQpKSByZXR1cm4gaW5wdXQ7XG4gICAgICBudW1iZXIgPSBwYXJzZUludChwYXJ0LCByYWRpeCk7XG4gICAgfVxuICAgIHB1c2gobnVtYmVycywgbnVtYmVyKTtcbiAgfVxuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBwYXJ0c0xlbmd0aDsgaW5kZXgrKykge1xuICAgIG51bWJlciA9IG51bWJlcnNbaW5kZXhdO1xuICAgIGlmIChpbmRleCA9PT0gcGFydHNMZW5ndGggLSAxKSB7XG4gICAgICBpZiAobnVtYmVyID49IHBvdygyNTYsIDUgLSBwYXJ0c0xlbmd0aCkpIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyID4gMjU1KSByZXR1cm4gbnVsbDtcbiAgfVxuICBpcHY0ID0gcG9wKG51bWJlcnMpO1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlwdjQgKz0gbnVtYmVyc1tpbmRleF0gKiBwb3coMjU2LCAzIC0gaW5kZXgpO1xuICB9XG4gIHJldHVybiBpcHY0O1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LWlwdjYtcGFyc2VyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xudmFyIHBhcnNlSVB2NiA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgYWRkcmVzcyA9IFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwXTtcbiAgdmFyIHBpZWNlSW5kZXggPSAwO1xuICB2YXIgY29tcHJlc3MgPSBudWxsO1xuICB2YXIgcG9pbnRlciA9IDA7XG4gIHZhciB2YWx1ZSwgbGVuZ3RoLCBudW1iZXJzU2VlbiwgaXB2NFBpZWNlLCBudW1iZXIsIHN3YXBzLCBzd2FwO1xuXG4gIHZhciBjaHIgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNoYXJBdChpbnB1dCwgcG9pbnRlcik7XG4gIH07XG5cbiAgaWYgKGNocigpID09PSAnOicpIHtcbiAgICBpZiAoY2hhckF0KGlucHV0LCAxKSAhPT0gJzonKSByZXR1cm47XG4gICAgcG9pbnRlciArPSAyO1xuICAgIHBpZWNlSW5kZXgrKztcbiAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gIH1cbiAgd2hpbGUgKGNocigpKSB7XG4gICAgaWYgKHBpZWNlSW5kZXggPT09IDgpIHJldHVybjtcbiAgICBpZiAoY2hyKCkgPT09ICc6Jykge1xuICAgICAgaWYgKGNvbXByZXNzICE9PSBudWxsKSByZXR1cm47XG4gICAgICBwb2ludGVyKys7XG4gICAgICBwaWVjZUluZGV4Kys7XG4gICAgICBjb21wcmVzcyA9IHBpZWNlSW5kZXg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgdmFsdWUgPSBsZW5ndGggPSAwO1xuICAgIHdoaWxlIChsZW5ndGggPCA0ICYmIGV4ZWMoSEVYLCBjaHIoKSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgKiAxNiArIHBhcnNlSW50KGNocigpLCAxNik7XG4gICAgICBwb2ludGVyKys7XG4gICAgICBsZW5ndGgrKztcbiAgICB9XG4gICAgaWYgKGNocigpID09PSAnLicpIHtcbiAgICAgIGlmIChsZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHBvaW50ZXIgLT0gbGVuZ3RoO1xuICAgICAgaWYgKHBpZWNlSW5kZXggPiA2KSByZXR1cm47XG4gICAgICBudW1iZXJzU2VlbiA9IDA7XG4gICAgICB3aGlsZSAoY2hyKCkpIHtcbiAgICAgICAgaXB2NFBpZWNlID0gbnVsbDtcbiAgICAgICAgaWYgKG51bWJlcnNTZWVuID4gMCkge1xuICAgICAgICAgIGlmIChjaHIoKSA9PT0gJy4nICYmIG51bWJlcnNTZWVuIDwgNCkgcG9pbnRlcisrO1xuICAgICAgICAgIGVsc2UgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXhlYyhESUdJVCwgY2hyKCkpKSByZXR1cm47XG4gICAgICAgIHdoaWxlIChleGVjKERJR0lULCBjaHIoKSkpIHtcbiAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChjaHIoKSwgMTApO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPT09IG51bGwpIGlwdjRQaWVjZSA9IG51bWJlcjtcbiAgICAgICAgICBlbHNlIGlmIChpcHY0UGllY2UgPT09IDApIHJldHVybjtcbiAgICAgICAgICBlbHNlIGlwdjRQaWVjZSA9IGlwdjRQaWVjZSAqIDEwICsgbnVtYmVyO1xuICAgICAgICAgIGlmIChpcHY0UGllY2UgPiAyNTUpIHJldHVybjtcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgIH1cbiAgICAgICAgYWRkcmVzc1twaWVjZUluZGV4XSA9IGFkZHJlc3NbcGllY2VJbmRleF0gKiAyNTYgKyBpcHY0UGllY2U7XG4gICAgICAgIG51bWJlcnNTZWVuKys7XG4gICAgICAgIGlmIChudW1iZXJzU2VlbiA9PT0gMiB8fCBudW1iZXJzU2VlbiA9PT0gNCkgcGllY2VJbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKG51bWJlcnNTZWVuICE9PSA0KSByZXR1cm47XG4gICAgICBicmVhaztcbiAgICB9IGVsc2UgaWYgKGNocigpID09PSAnOicpIHtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIGlmICghY2hyKCkpIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGNocigpKSByZXR1cm47XG4gICAgYWRkcmVzc1twaWVjZUluZGV4KytdID0gdmFsdWU7XG4gIH1cbiAgaWYgKGNvbXByZXNzICE9PSBudWxsKSB7XG4gICAgc3dhcHMgPSBwaWVjZUluZGV4IC0gY29tcHJlc3M7XG4gICAgcGllY2VJbmRleCA9IDc7XG4gICAgd2hpbGUgKHBpZWNlSW5kZXggIT09IDAgJiYgc3dhcHMgPiAwKSB7XG4gICAgICBzd2FwID0gYWRkcmVzc1twaWVjZUluZGV4XTtcbiAgICAgIGFkZHJlc3NbcGllY2VJbmRleC0tXSA9IGFkZHJlc3NbY29tcHJlc3MgKyBzd2FwcyAtIDFdO1xuICAgICAgYWRkcmVzc1tjb21wcmVzcyArIC0tc3dhcHNdID0gc3dhcDtcbiAgICB9XG4gIH0gZWxzZSBpZiAocGllY2VJbmRleCAhPT0gOCkgcmV0dXJuO1xuICByZXR1cm4gYWRkcmVzcztcbn07XG5cbnZhciBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSA9IGZ1bmN0aW9uIChpcHY2KSB7XG4gIHZhciBtYXhJbmRleCA9IG51bGw7XG4gIHZhciBtYXhMZW5ndGggPSAxO1xuICB2YXIgY3VyclN0YXJ0ID0gbnVsbDtcbiAgdmFyIGN1cnJMZW5ndGggPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuICBmb3IgKDsgaW5kZXggPCA4OyBpbmRleCsrKSB7XG4gICAgaWYgKGlwdjZbaW5kZXhdICE9PSAwKSB7XG4gICAgICBpZiAoY3Vyckxlbmd0aCA+IG1heExlbmd0aCkge1xuICAgICAgICBtYXhJbmRleCA9IGN1cnJTdGFydDtcbiAgICAgICAgbWF4TGVuZ3RoID0gY3Vyckxlbmd0aDtcbiAgICAgIH1cbiAgICAgIGN1cnJTdGFydCA9IG51bGw7XG4gICAgICBjdXJyTGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGN1cnJTdGFydCA9PT0gbnVsbCkgY3VyclN0YXJ0ID0gaW5kZXg7XG4gICAgICArK2N1cnJMZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiBjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoID8gY3VyclN0YXJ0IDogbWF4SW5kZXg7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2hvc3Qtc2VyaWFsaXppbmdcbnZhciBzZXJpYWxpemVIb3N0ID0gZnVuY3Rpb24gKGhvc3QpIHtcbiAgdmFyIHJlc3VsdCwgaW5kZXgsIGNvbXByZXNzLCBpZ25vcmUwO1xuXG4gIC8vIGlwdjRcbiAgaWYgKHR5cGVvZiBob3N0ID09ICdudW1iZXInKSB7XG4gICAgcmVzdWx0ID0gW107XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgNDsgaW5kZXgrKykge1xuICAgICAgdW5zaGlmdChyZXN1bHQsIGhvc3QgJSAyNTYpO1xuICAgICAgaG9zdCA9IGZsb29yKGhvc3QgLyAyNTYpO1xuICAgIH1cbiAgICByZXR1cm4gam9pbihyZXN1bHQsICcuJyk7XG4gIH1cblxuICAvLyBpcHY2XG4gIGlmICh0eXBlb2YgaG9zdCA9PSAnb2JqZWN0Jykge1xuICAgIHJlc3VsdCA9ICcnO1xuICAgIGNvbXByZXNzID0gZmluZExvbmdlc3RaZXJvU2VxdWVuY2UoaG9zdCk7XG4gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgODsgaW5kZXgrKykge1xuICAgICAgaWYgKGlnbm9yZTAgJiYgaG9zdFtpbmRleF0gPT09IDApIGNvbnRpbnVlO1xuICAgICAgaWYgKGlnbm9yZTApIGlnbm9yZTAgPSBmYWxzZTtcbiAgICAgIGlmIChjb21wcmVzcyA9PT0gaW5kZXgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGluZGV4ID8gJzonIDogJzo6JztcbiAgICAgICAgaWdub3JlMCA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQgKz0gbnVtYmVyVG9TdHJpbmcoaG9zdFtpbmRleF0sIDE2KTtcbiAgICAgICAgaWYgKGluZGV4IDwgNykgcmVzdWx0ICs9ICc6JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICdbJyArIHJlc3VsdCArICddJztcbiAgfVxuXG4gIHJldHVybiBob3N0O1xufTtcblxudmFyIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQgPSB7fTtcbnZhciBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyAnOiAxLCAnXCInOiAxLCAnPCc6IDEsICc+JzogMSwgJ2AnOiAxXG59KTtcbnZhciBwYXRoUGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcjJzogMSwgJz8nOiAxLCAneyc6IDEsICd9JzogMVxufSk7XG52YXIgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBwYXRoUGVyY2VudEVuY29kZVNldCwge1xuICAnLyc6IDEsICc6JzogMSwgJzsnOiAxLCAnPSc6IDEsICdAJzogMSwgJ1snOiAxLCAnXFxcXCc6IDEsICddJzogMSwgJ14nOiAxLCAnfCc6IDFcbn0pO1xuXG52YXIgcGVyY2VudEVuY29kZSA9IGZ1bmN0aW9uIChjaHIsIHNldCkge1xuICB2YXIgY29kZSA9IGNvZGVBdChjaHIsIDApO1xuICByZXR1cm4gY29kZSA+IDB4MjAgJiYgY29kZSA8IDB4N0YgJiYgIWhhc093bihzZXQsIGNocikgPyBjaHIgOiBlbmNvZGVVUklDb21wb25lbnQoY2hyKTtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc3BlY2lhbC1zY2hlbWVcbnZhciBzcGVjaWFsU2NoZW1lcyA9IHtcbiAgZnRwOiAyMSxcbiAgZmlsZTogbnVsbCxcbiAgaHR0cDogODAsXG4gIGh0dHBzOiA0NDMsXG4gIHdzOiA4MCxcbiAgd3NzOiA0NDNcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jd2luZG93cy1kcml2ZS1sZXR0ZXJcbnZhciBpc1dpbmRvd3NEcml2ZUxldHRlciA9IGZ1bmN0aW9uIChzdHJpbmcsIG5vcm1hbGl6ZWQpIHtcbiAgdmFyIHNlY29uZDtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPT09IDIgJiYgZXhlYyhBTFBIQSwgY2hhckF0KHN0cmluZywgMCkpXG4gICAgJiYgKChzZWNvbmQgPSBjaGFyQXQoc3RyaW5nLCAxKSkgPT09ICc6JyB8fCAoIW5vcm1hbGl6ZWQgJiYgc2Vjb25kID09PSAnfCcpKTtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc3RhcnQtd2l0aC1hLXdpbmRvd3MtZHJpdmUtbGV0dGVyXG52YXIgc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgdmFyIHRoaXJkO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA+IDEgJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoc3RyaW5nU2xpY2Uoc3RyaW5nLCAwLCAyKSkgJiYgKFxuICAgIHN0cmluZy5sZW5ndGggPT09IDIgfHxcbiAgICAoKHRoaXJkID0gY2hhckF0KHN0cmluZywgMikpID09PSAnLycgfHwgdGhpcmQgPT09ICdcXFxcJyB8fCB0aGlyZCA9PT0gJz8nIHx8IHRoaXJkID09PSAnIycpXG4gICk7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3NpbmdsZS1kb3QtcGF0aC1zZWdtZW50XG52YXIgaXNTaW5nbGVEb3QgPSBmdW5jdGlvbiAoc2VnbWVudCkge1xuICByZXR1cm4gc2VnbWVudCA9PT0gJy4nIHx8IHRvTG93ZXJDYXNlKHNlZ21lbnQpID09PSAnJTJlJztcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG91YmxlLWRvdC1wYXRoLXNlZ21lbnRcbnZhciBpc0RvdWJsZURvdCA9IGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gIHNlZ21lbnQgPSB0b0xvd2VyQ2FzZShzZWdtZW50KTtcbiAgcmV0dXJuIHNlZ21lbnQgPT09ICcuLicgfHwgc2VnbWVudCA9PT0gJyUyZS4nIHx8IHNlZ21lbnQgPT09ICcuJTJlJyB8fCBzZWdtZW50ID09PSAnJTJlJTJlJztcbn07XG5cbi8vIFN0YXRlczpcbnZhciBTQ0hFTUVfU1RBUlQgPSB7fTtcbnZhciBTQ0hFTUUgPSB7fTtcbnZhciBOT19TQ0hFTUUgPSB7fTtcbnZhciBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWSA9IHt9O1xudmFyIFBBVEhfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUkVMQVRJVkUgPSB7fTtcbnZhciBSRUxBVElWRV9TTEFTSCA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVMgPSB7fTtcbnZhciBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUyA9IHt9O1xudmFyIEFVVEhPUklUWSA9IHt9O1xudmFyIEhPU1QgPSB7fTtcbnZhciBIT1NUTkFNRSA9IHt9O1xudmFyIFBPUlQgPSB7fTtcbnZhciBGSUxFID0ge307XG52YXIgRklMRV9TTEFTSCA9IHt9O1xudmFyIEZJTEVfSE9TVCA9IHt9O1xudmFyIFBBVEhfU1RBUlQgPSB7fTtcbnZhciBQQVRIID0ge307XG52YXIgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSCA9IHt9O1xudmFyIFFVRVJZID0ge307XG52YXIgRlJBR01FTlQgPSB7fTtcblxudmFyIFVSTFN0YXRlID0gZnVuY3Rpb24gKHVybCwgaXNCYXNlLCBiYXNlKSB7XG4gIHZhciB1cmxTdHJpbmcgPSAkdG9TdHJpbmcodXJsKTtcbiAgdmFyIGJhc2VTdGF0ZSwgZmFpbHVyZSwgc2VhcmNoUGFyYW1zO1xuICBpZiAoaXNCYXNlKSB7XG4gICAgZmFpbHVyZSA9IHRoaXMucGFyc2UodXJsU3RyaW5nKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcyA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJhc2UgIT09IHVuZGVmaW5lZCkgYmFzZVN0YXRlID0gbmV3IFVSTFN0YXRlKGJhc2UsIHRydWUpO1xuICAgIGZhaWx1cmUgPSB0aGlzLnBhcnNlKHVybFN0cmluZywgbnVsbCwgYmFzZVN0YXRlKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICBzZWFyY2hQYXJhbXMgPSBnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlKG5ldyBVUkxTZWFyY2hQYXJhbXMoKSk7XG4gICAgc2VhcmNoUGFyYW1zLmJpbmRVUkwodGhpcyk7XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMgPSBzZWFyY2hQYXJhbXM7XG4gIH1cbn07XG5cblVSTFN0YXRlLnByb3RvdHlwZSA9IHtcbiAgdHlwZTogJ1VSTCcsXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsLXBhcnNpbmdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1zdGF0ZW1lbnRzIC0tIFRPRE9cbiAgcGFyc2U6IGZ1bmN0aW9uIChpbnB1dCwgc3RhdGVPdmVycmlkZSwgYmFzZSkge1xuICAgIHZhciB1cmwgPSB0aGlzO1xuICAgIHZhciBzdGF0ZSA9IHN0YXRlT3ZlcnJpZGUgfHwgU0NIRU1FX1NUQVJUO1xuICAgIHZhciBwb2ludGVyID0gMDtcbiAgICB2YXIgYnVmZmVyID0gJyc7XG4gICAgdmFyIHNlZW5BdCA9IGZhbHNlO1xuICAgIHZhciBzZWVuQnJhY2tldCA9IGZhbHNlO1xuICAgIHZhciBzZWVuUGFzc3dvcmRUb2tlbiA9IGZhbHNlO1xuICAgIHZhciBjb2RlUG9pbnRzLCBjaHIsIGJ1ZmZlckNvZGVQb2ludHMsIGZhaWx1cmU7XG5cbiAgICBpbnB1dCA9ICR0b1N0cmluZyhpbnB1dCk7XG5cbiAgICBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgIHVybC5zY2hlbWUgPSAnJztcbiAgICAgIHVybC51c2VybmFtZSA9ICcnO1xuICAgICAgdXJsLnBhc3N3b3JkID0gJyc7XG4gICAgICB1cmwuaG9zdCA9IG51bGw7XG4gICAgICB1cmwucG9ydCA9IG51bGw7XG4gICAgICB1cmwucGF0aCA9IFtdO1xuICAgICAgdXJsLnF1ZXJ5ID0gbnVsbDtcbiAgICAgIHVybC5mcmFnbWVudCA9IG51bGw7XG4gICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IGZhbHNlO1xuICAgICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UsICcnKTtcbiAgICAgIGlucHV0ID0gcmVwbGFjZShpbnB1dCwgVFJBSUxJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSwgJyQxJyk7XG4gICAgfVxuXG4gICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBUQUJfQU5EX05FV19MSU5FLCAnJyk7XG5cbiAgICBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKGlucHV0KTtcblxuICAgIHdoaWxlIChwb2ludGVyIDw9IGNvZGVQb2ludHMubGVuZ3RoKSB7XG4gICAgICBjaHIgPSBjb2RlUG9pbnRzW3BvaW50ZXJdO1xuICAgICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgICBjYXNlIFNDSEVNRV9TVEFSVDpcbiAgICAgICAgICBpZiAoY2hyICYmIGV4ZWMoQUxQSEEsIGNocikpIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSB0b0xvd2VyQ2FzZShjaHIpO1xuICAgICAgICAgICAgc3RhdGUgPSBTQ0hFTUU7XG4gICAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0NIRU1FOlxuICAgICAgICAgIGlmIChjaHIgJiYgKGV4ZWMoQUxQSEFOVU1FUklDLCBjaHIpIHx8IGNociA9PT0gJysnIHx8IGNociA9PT0gJy0nIHx8IGNociA9PT0gJy4nKSkge1xuICAgICAgICAgICAgYnVmZmVyICs9IHRvTG93ZXJDYXNlKGNocik7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICc6Jykge1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgKFxuICAgICAgICAgICAgICAodXJsLmlzU3BlY2lhbCgpICE9PSBoYXNPd24oc3BlY2lhbFNjaGVtZXMsIGJ1ZmZlcikpIHx8XG4gICAgICAgICAgICAgIChidWZmZXIgPT09ICdmaWxlJyAmJiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHx8XG4gICAgICAgICAgICAgICh1cmwuc2NoZW1lID09PSAnZmlsZScgJiYgIXVybC5ob3N0KVxuICAgICAgICAgICAgKSkgcmV0dXJuO1xuICAgICAgICAgICAgdXJsLnNjaGVtZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0gPT09IHVybC5wb3J0KSB1cmwucG9ydCA9IG51bGw7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgICBzdGF0ZSA9IEZJTEU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiBiYXNlICYmIGJhc2Uuc2NoZW1lID09PSB1cmwuc2NoZW1lKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHVybC5pc1NwZWNpYWwoKSkge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVQb2ludHNbcG9pbnRlciArIDFdID09PSAnLycpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIX09SX0FVVEhPUklUWTtcbiAgICAgICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIHN0YXRlID0gQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gTk9fU0NIRU1FO1xuICAgICAgICAgICAgcG9pbnRlciA9IDA7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2UgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgTk9fU0NIRU1FOlxuICAgICAgICAgIGlmICghYmFzZSB8fCAoYmFzZS5jYW5ub3RCZUFCYXNlVVJMICYmIGNociAhPT0gJyMnKSkgcmV0dXJuIElOVkFMSURfU0NIRU1FO1xuICAgICAgICAgIGlmIChiYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgdXJsLmNhbm5vdEJlQUJhc2VVUkwgPSB0cnVlO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBzdGF0ZSA9IGJhc2Uuc2NoZW1lID09PSAnZmlsZScgPyBGSUxFIDogUkVMQVRJVkU7XG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycgJiYgY29kZVBvaW50c1twb2ludGVyICsgMV0gPT09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUgPSBSRUxBVElWRTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIX09SX0FVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICBjYXNlIFJFTEFUSVZFOlxuICAgICAgICAgIHVybC5zY2hlbWUgPSBiYXNlLnNjaGVtZTtcbiAgICAgICAgICBpZiAoY2hyID09PSBFT0YpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJy8nIHx8IChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFJFTEFUSVZFX1NMQVNIO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHVybC5wYXRoID0gYXJyYXlTbGljZShiYXNlLnBhdGgpO1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucGF0aC5sZW5ndGgtLTtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBSRUxBVElWRV9TTEFTSDpcbiAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpICYmIChjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJykpIHtcbiAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVybC51c2VybmFtZSA9IGJhc2UudXNlcm5hbWU7XG4gICAgICAgICAgICB1cmwucGFzc3dvcmQgPSBiYXNlLnBhc3N3b3JkO1xuICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICB1cmwucG9ydCA9IGJhc2UucG9ydDtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTOlxuICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVM7XG4gICAgICAgICAgaWYgKGNociAhPT0gJy8nIHx8IGNoYXJBdChidWZmZXIsIHBvaW50ZXIgKyAxKSAhPT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUzpcbiAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgY2hyICE9PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIHN0YXRlID0gQVVUSE9SSVRZO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIEFVVEhPUklUWTpcbiAgICAgICAgICBpZiAoY2hyID09PSAnQCcpIHtcbiAgICAgICAgICAgIGlmIChzZWVuQXQpIGJ1ZmZlciA9ICclNDAnICsgYnVmZmVyO1xuICAgICAgICAgICAgc2VlbkF0ID0gdHJ1ZTtcbiAgICAgICAgICAgIGJ1ZmZlckNvZGVQb2ludHMgPSBhcnJheUZyb20oYnVmZmVyKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyQ29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICB2YXIgY29kZVBvaW50ID0gYnVmZmVyQ29kZVBvaW50c1tpXTtcbiAgICAgICAgICAgICAgaWYgKGNvZGVQb2ludCA9PT0gJzonICYmICFzZWVuUGFzc3dvcmRUb2tlbikge1xuICAgICAgICAgICAgICAgIHNlZW5QYXNzd29yZFRva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB2YXIgZW5jb2RlZENvZGVQb2ludHMgPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludCwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICAgICAgaWYgKHNlZW5QYXNzd29yZFRva2VuKSB1cmwucGFzc3dvcmQgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgICAgIGVsc2UgdXJsLnVzZXJuYW1lICs9IGVuY29kZWRDb2RlUG9pbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHNlZW5BdCAmJiBidWZmZXIgPT09ICcnKSByZXR1cm4gSU5WQUxJRF9BVVRIT1JJVFk7XG4gICAgICAgICAgICBwb2ludGVyIC09IGFycmF5RnJvbShidWZmZXIpLmxlbmd0aCArIDE7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gSE9TVDtcbiAgICAgICAgICB9IGVsc2UgYnVmZmVyICs9IGNocjtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEhPU1Q6XG4gICAgICAgIGNhc2UgSE9TVE5BTUU6XG4gICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgdXJsLnNjaGVtZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEZJTEVfSE9TVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnOicgJiYgIXNlZW5CcmFja2V0KSB7XG4gICAgICAgICAgICBpZiAoYnVmZmVyID09PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICAgIGZhaWx1cmUgPSB1cmwucGFyc2VIb3N0KGJ1ZmZlcik7XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUE9SVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlID09PSBIT1NUTkFNRSkgcmV0dXJuO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgYnVmZmVyID09PSAnJykgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlICYmIGJ1ZmZlciA9PT0gJycgJiYgKHVybC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkgfHwgdXJsLnBvcnQgIT09IG51bGwpKSByZXR1cm47XG4gICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUpIHJldHVybiBmYWlsdXJlO1xuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjaHIgPT09ICdbJykgc2VlbkJyYWNrZXQgPSB0cnVlO1xuICAgICAgICAgICAgZWxzZSBpZiAoY2hyID09PSAnXScpIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQT1JUOlxuICAgICAgICAgIGlmIChleGVjKERJR0lULCBjaHIpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkgfHxcbiAgICAgICAgICAgIHN0YXRlT3ZlcnJpZGVcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGlmIChidWZmZXIgIT09ICcnKSB7XG4gICAgICAgICAgICAgIHZhciBwb3J0ID0gcGFyc2VJbnQoYnVmZmVyLCAxMCk7XG4gICAgICAgICAgICAgIGlmIChwb3J0ID4gMHhGRkZGKSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgICAgICB1cmwucG9ydCA9ICh1cmwuaXNTcGVjaWFsKCkgJiYgcG9ydCA9PT0gc3BlY2lhbFNjaGVtZXNbdXJsLnNjaGVtZV0pID8gbnVsbCA6IHBvcnQ7XG4gICAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9QT1JUO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRTpcbiAgICAgICAgICB1cmwuc2NoZW1lID0gJ2ZpbGUnO1xuICAgICAgICAgIGlmIChjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJykgc3RhdGUgPSBGSUxFX1NMQVNIO1xuICAgICAgICAgIGVsc2UgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT09ICdmaWxlJykge1xuICAgICAgICAgICAgc3dpdGNoIChjaHIpIHtcbiAgICAgICAgICAgICAgY2FzZSBFT0Y6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnPyc6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnIyc6XG4gICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gYmFzZS5xdWVyeTtcbiAgICAgICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICghc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcihqb2luKGFycmF5U2xpY2UoY29kZVBvaW50cywgcG9pbnRlciksICcnKSkpIHtcbiAgICAgICAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICAgICAgICB1cmwuc2hvcnRlblBhdGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgRklMRV9TTEFTSDpcbiAgICAgICAgICBpZiAoY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcpIHtcbiAgICAgICAgICAgIHN0YXRlID0gRklMRV9IT1NUO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChiYXNlICYmIGJhc2Uuc2NoZW1lID09PSAnZmlsZScgJiYgIXN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIoam9pbihhcnJheVNsaWNlKGNvZGVQb2ludHMsIHBvaW50ZXIpLCAnJykpKSB7XG4gICAgICAgICAgICBpZiAoaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYmFzZS5wYXRoWzBdLCB0cnVlKSkgcHVzaCh1cmwucGF0aCwgYmFzZS5wYXRoWzBdKTtcbiAgICAgICAgICAgIGVsc2UgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIEZJTEVfSE9TVDpcbiAgICAgICAgICBpZiAoY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHwgY2hyID09PSAnXFxcXCcgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIGlmICghc3RhdGVPdmVycmlkZSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYnVmZmVyID09PSAnJykge1xuICAgICAgICAgICAgICB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBmYWlsdXJlID0gdXJsLnBhcnNlSG9zdChidWZmZXIpO1xuICAgICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICAgIGlmICh1cmwuaG9zdCA9PT0gJ2xvY2FsaG9zdCcpIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfU1RBUlQ7XG4gICAgICAgICAgICB9IGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSF9TVEFSVDpcbiAgICAgICAgICBpZiAodXJsLmlzU3BlY2lhbCgpKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgY2hyICE9PSAnXFxcXCcpIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT09IEVPRikge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgaWYgKGNociAhPT0gJy8nKSBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUEFUSDpcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fFxuICAgICAgICAgICAgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkgfHxcbiAgICAgICAgICAgICghc3RhdGVPdmVycmlkZSAmJiAoY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGlzRG91YmxlRG90KGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgdXJsLnNob3J0ZW5QYXRoKCk7XG4gICAgICAgICAgICAgIGlmIChjaHIgIT09ICcvJyAmJiAhKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkpIHtcbiAgICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNTaW5nbGVEb3QoYnVmZmVyKSkge1xuICAgICAgICAgICAgICBpZiAoY2hyICE9PSAnLycgJiYgIShjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpKSB7XG4gICAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgJycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PT0gJ2ZpbGUnICYmICF1cmwucGF0aC5sZW5ndGggJiYgaXNXaW5kb3dzRHJpdmVMZXR0ZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGlmICh1cmwuaG9zdCkgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgICBidWZmZXIgPSBjaGFyQXQoYnVmZmVyLCAwKSArICc6JzsgLy8gbm9ybWFsaXplIHdpbmRvd3MgZHJpdmUgbGV0dGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcHVzaCh1cmwucGF0aCwgYnVmZmVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgaWYgKHVybC5zY2hlbWUgPT09ICdmaWxlJyAmJiAoY2hyID09PSBFT0YgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycpKSB7XG4gICAgICAgICAgICAgIHdoaWxlICh1cmwucGF0aC5sZW5ndGggPiAxICYmIHVybC5wYXRoWzBdID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNoaWZ0KHVybC5wYXRoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZmVyICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBwYXRoUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIENBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEg6XG4gICAgICAgICAgaWYgKGNociA9PT0gJz8nKSB7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyICE9PSBFT0YpIHtcbiAgICAgICAgICAgIHVybC5wYXRoWzBdICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgUVVFUlk6XG4gICAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT09IEVPRikge1xuICAgICAgICAgICAgaWYgKGNociA9PT0gXCInXCIgJiYgdXJsLmlzU3BlY2lhbCgpKSB1cmwucXVlcnkgKz0gJyUyNyc7XG4gICAgICAgICAgICBlbHNlIGlmIChjaHIgPT09ICcjJykgdXJsLnF1ZXJ5ICs9ICclMjMnO1xuICAgICAgICAgICAgZWxzZSB1cmwucXVlcnkgKz0gcGVyY2VudEVuY29kZShjaHIsIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGUkFHTUVOVDpcbiAgICAgICAgICBpZiAoY2hyICE9PSBFT0YpIHVybC5mcmFnbWVudCArPSBwZXJjZW50RW5jb2RlKGNociwgZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcG9pbnRlcisrO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNob3N0LXBhcnNpbmdcbiAgcGFyc2VIb3N0OiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICB2YXIgcmVzdWx0LCBjb2RlUG9pbnRzLCBpbmRleDtcbiAgICBpZiAoY2hhckF0KGlucHV0LCAwKSA9PT0gJ1snKSB7XG4gICAgICBpZiAoY2hhckF0KGlucHV0LCBpbnB1dC5sZW5ndGggLSAxKSAhPT0gJ10nKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY2KHN0cmluZ1NsaWNlKGlucHV0LCAxLCAtMSkpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgLy8gb3BhcXVlIGhvc3RcbiAgICB9IGVsc2UgaWYgKCF0aGlzLmlzU3BlY2lhbCgpKSB7XG4gICAgICBpZiAoZXhlYyhGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UX0VYQ0xVRElOR19QRVJDRU5ULCBpbnB1dCkpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICByZXN1bHQgPSAnJztcbiAgICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgY29kZVBvaW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpbmRleF0sIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgfVxuICAgICAgdGhpcy5ob3N0ID0gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dCA9IHRvQVNDSUkoaW5wdXQpO1xuICAgICAgaWYgKGV4ZWMoRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCwgaW5wdXQpKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgcmVzdWx0ID0gcGFyc2VJUHY0KGlucHV0KTtcbiAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2Nhbm5vdC1oYXZlLWEtdXNlcm5hbWUtcGFzc3dvcmQtcG9ydFxuICBjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaG9zdCB8fCB0aGlzLmNhbm5vdEJlQUJhc2VVUkwgfHwgdGhpcy5zY2hlbWUgPT09ICdmaWxlJztcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbmNsdWRlLWNyZWRlbnRpYWxzXG4gIGluY2x1ZGVzQ3JlZGVudGlhbHM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZSAhPT0gJycgfHwgdGhpcy5wYXNzd29yZCAhPT0gJyc7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaXMtc3BlY2lhbFxuICBpc1NwZWNpYWw6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaGFzT3duKHNwZWNpYWxTY2hlbWVzLCB0aGlzLnNjaGVtZSk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc2hvcnRlbi1hLXVybHMtcGF0aFxuICBzaG9ydGVuUGF0aDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXRoID0gdGhpcy5wYXRoO1xuICAgIHZhciBwYXRoU2l6ZSA9IHBhdGgubGVuZ3RoO1xuICAgIGlmIChwYXRoU2l6ZSAmJiAodGhpcy5zY2hlbWUgIT09ICdmaWxlJyB8fCBwYXRoU2l6ZSAhPT0gMSB8fCAhaXNXaW5kb3dzRHJpdmVMZXR0ZXIocGF0aFswXSwgdHJ1ZSkpKSB7XG4gICAgICBwYXRoLmxlbmd0aC0tO1xuICAgIH1cbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LXVybC1zZXJpYWxpemVyXG4gIHNlcmlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB1cmwgPSB0aGlzO1xuICAgIHZhciBzY2hlbWUgPSB1cmwuc2NoZW1lO1xuICAgIHZhciB1c2VybmFtZSA9IHVybC51c2VybmFtZTtcbiAgICB2YXIgcGFzc3dvcmQgPSB1cmwucGFzc3dvcmQ7XG4gICAgdmFyIGhvc3QgPSB1cmwuaG9zdDtcbiAgICB2YXIgcG9ydCA9IHVybC5wb3J0O1xuICAgIHZhciBwYXRoID0gdXJsLnBhdGg7XG4gICAgdmFyIHF1ZXJ5ID0gdXJsLnF1ZXJ5O1xuICAgIHZhciBmcmFnbWVudCA9IHVybC5mcmFnbWVudDtcbiAgICB2YXIgb3V0cHV0ID0gc2NoZW1lICsgJzonO1xuICAgIGlmIChob3N0ICE9PSBudWxsKSB7XG4gICAgICBvdXRwdXQgKz0gJy8vJztcbiAgICAgIGlmICh1cmwuaW5jbHVkZXNDcmVkZW50aWFscygpKSB7XG4gICAgICAgIG91dHB1dCArPSB1c2VybmFtZSArIChwYXNzd29yZCA/ICc6JyArIHBhc3N3b3JkIDogJycpICsgJ0AnO1xuICAgICAgfVxuICAgICAgb3V0cHV0ICs9IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gICAgICBpZiAocG9ydCAhPT0gbnVsbCkgb3V0cHV0ICs9ICc6JyArIHBvcnQ7XG4gICAgfSBlbHNlIGlmIChzY2hlbWUgPT09ICdmaWxlJykgb3V0cHV0ICs9ICcvLyc7XG4gICAgb3V0cHV0ICs9IHVybC5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgam9pbihwYXRoLCAnLycpIDogJyc7XG4gICAgaWYgKHF1ZXJ5ICE9PSBudWxsKSBvdXRwdXQgKz0gJz8nICsgcXVlcnk7XG4gICAgaWYgKGZyYWdtZW50ICE9PSBudWxsKSBvdXRwdXQgKz0gJyMnICsgZnJhZ21lbnQ7XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhyZWZcbiAgc2V0SHJlZjogZnVuY3Rpb24gKGhyZWYpIHtcbiAgICB2YXIgZmFpbHVyZSA9IHRoaXMucGFyc2UoaHJlZik7XG4gICAgaWYgKGZhaWx1cmUpIHRocm93IG5ldyBUeXBlRXJyb3IoZmFpbHVyZSk7XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1vcmlnaW5cbiAgZ2V0T3JpZ2luOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNjaGVtZSA9IHRoaXMuc2NoZW1lO1xuICAgIHZhciBwb3J0ID0gdGhpcy5wb3J0O1xuICAgIGlmIChzY2hlbWUgPT09ICdibG9iJykgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMQ29uc3RydWN0b3Ioc2NoZW1lLnBhdGhbMF0pLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuICdudWxsJztcbiAgICB9XG4gICAgaWYgKHNjaGVtZSA9PT0gJ2ZpbGUnIHx8ICF0aGlzLmlzU3BlY2lhbCgpKSByZXR1cm4gJ251bGwnO1xuICAgIHJldHVybiBzY2hlbWUgKyAnOi8vJyArIHNlcmlhbGl6ZUhvc3QodGhpcy5ob3N0KSArIChwb3J0ICE9PSBudWxsID8gJzonICsgcG9ydCA6ICcnKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXByb3RvY29sXG4gIGdldFByb3RvY29sOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1lICsgJzonO1xuICB9LFxuICBzZXRQcm90b2NvbDogZnVuY3Rpb24gKHByb3RvY29sKSB7XG4gICAgdGhpcy5wYXJzZSgkdG9TdHJpbmcocHJvdG9jb2wpICsgJzonLCBTQ0hFTUVfU1RBUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdXNlcm5hbWVcbiAgZ2V0VXNlcm5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy51c2VybmFtZTtcbiAgfSxcbiAgc2V0VXNlcm5hbWU6IGZ1bmN0aW9uICh1c2VybmFtZSkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyh1c2VybmFtZSkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy51c2VybmFtZSA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy51c2VybmFtZSArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmRcbiAgZ2V0UGFzc3dvcmQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXNzd29yZDtcbiAgfSxcbiAgc2V0UGFzc3dvcmQ6IGZ1bmN0aW9uIChwYXNzd29yZCkge1xuICAgIHZhciBjb2RlUG9pbnRzID0gYXJyYXlGcm9tKCR0b1N0cmluZyhwYXNzd29yZCkpO1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgdGhpcy5wYXNzd29yZCA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5wYXNzd29yZCArPSBwZXJjZW50RW5jb2RlKGNvZGVQb2ludHNbaV0sIHVzZXJpbmZvUGVyY2VudEVuY29kZVNldCk7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdFxuICBnZXRIb3N0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJ1xuICAgICAgOiBwb3J0ID09PSBudWxsID8gc2VyaWFsaXplSG9zdChob3N0KVxuICAgICAgOiBzZXJpYWxpemVIb3N0KGhvc3QpICsgJzonICsgcG9ydDtcbiAgfSxcbiAgc2V0SG9zdDogZnVuY3Rpb24gKGhvc3QpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0LCBIT1NUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RuYW1lXG4gIGdldEhvc3RuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhvc3QgPSB0aGlzLmhvc3Q7XG4gICAgcmV0dXJuIGhvc3QgPT09IG51bGwgPyAnJyA6IHNlcmlhbGl6ZUhvc3QoaG9zdCk7XG4gIH0sXG4gIHNldEhvc3RuYW1lOiBmdW5jdGlvbiAoaG9zdG5hbWUpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXJzZShob3N0bmFtZSwgSE9TVE5BTUUpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydFxuICBnZXRQb3J0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgcmV0dXJuIHBvcnQgPT09IG51bGwgPyAnJyA6ICR0b1N0cmluZyhwb3J0KTtcbiAgfSxcbiAgc2V0UG9ydDogZnVuY3Rpb24gKHBvcnQpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQoKSkgcmV0dXJuO1xuICAgIHBvcnQgPSAkdG9TdHJpbmcocG9ydCk7XG4gICAgaWYgKHBvcnQgPT09ICcnKSB0aGlzLnBvcnQgPSBudWxsO1xuICAgIGVsc2UgdGhpcy5wYXJzZShwb3J0LCBQT1JUKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhdGhuYW1lXG4gIGdldFBhdGhuYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLnBhdGg7XG4gICAgcmV0dXJuIHRoaXMuY2Fubm90QmVBQmFzZVVSTCA/IHBhdGhbMF0gOiBwYXRoLmxlbmd0aCA/ICcvJyArIGpvaW4ocGF0aCwgJy8nKSA6ICcnO1xuICB9LFxuICBzZXRQYXRobmFtZTogZnVuY3Rpb24gKHBhdGhuYW1lKSB7XG4gICAgaWYgKHRoaXMuY2Fubm90QmVBQmFzZVVSTCkgcmV0dXJuO1xuICAgIHRoaXMucGF0aCA9IFtdO1xuICAgIHRoaXMucGFyc2UocGF0aG5hbWUsIFBBVEhfU1RBUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNoXG4gIGdldFNlYXJjaDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBxdWVyeSA9IHRoaXMucXVlcnk7XG4gICAgcmV0dXJuIHF1ZXJ5ID8gJz8nICsgcXVlcnkgOiAnJztcbiAgfSxcbiAgc2V0U2VhcmNoOiBmdW5jdGlvbiAoc2VhcmNoKSB7XG4gICAgc2VhcmNoID0gJHRvU3RyaW5nKHNlYXJjaCk7XG4gICAgaWYgKHNlYXJjaCA9PT0gJycpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2hhckF0KHNlYXJjaCwgMCkgPT09ICc/Jykgc2VhcmNoID0gc3RyaW5nU2xpY2Uoc2VhcmNoLCAxKTtcbiAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgIHRoaXMucGFyc2Uoc2VhcmNoLCBRVUVSWSk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoUGFyYW1zLnVwZGF0ZSgpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNocGFyYW1zXG4gIGdldFNlYXJjaFBhcmFtczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnNlYXJjaFBhcmFtcy5mYWNhZGU7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gIGdldEhhc2g6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZnJhZ21lbnQgPSB0aGlzLmZyYWdtZW50O1xuICAgIHJldHVybiBmcmFnbWVudCA/ICcjJyArIGZyYWdtZW50IDogJyc7XG4gIH0sXG4gIHNldEhhc2g6IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgaGFzaCA9ICR0b1N0cmluZyhoYXNoKTtcbiAgICBpZiAoaGFzaCA9PT0gJycpIHtcbiAgICAgIHRoaXMuZnJhZ21lbnQgPSBudWxsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhckF0KGhhc2gsIDApID09PSAnIycpIGhhc2ggPSBzdHJpbmdTbGljZShoYXNoLCAxKTtcbiAgICB0aGlzLmZyYWdtZW50ID0gJyc7XG4gICAgdGhpcy5wYXJzZShoYXNoLCBGUkFHTUVOVCk7XG4gIH0sXG4gIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlYXJjaFBhcmFtcy5zZXJpYWxpemUoKSB8fCBudWxsO1xuICB9XG59O1xuXG4vLyBgVVJMYCBjb25zdHJ1Y3RvclxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtY2xhc3NcbnZhciBVUkxDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFVSTCh1cmwgLyogLCBiYXNlICovKSB7XG4gIHZhciB0aGF0ID0gYW5JbnN0YW5jZSh0aGlzLCBVUkxQcm90b3R5cGUpO1xuICB2YXIgYmFzZSA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIHN0YXRlID0gc2V0SW50ZXJuYWxTdGF0ZSh0aGF0LCBuZXcgVVJMU3RhdGUodXJsLCBmYWxzZSwgYmFzZSkpO1xuICBpZiAoIURFU0NSSVBUT1JTKSB7XG4gICAgdGhhdC5ocmVmID0gc3RhdGUuc2VyaWFsaXplKCk7XG4gICAgdGhhdC5vcmlnaW4gPSBzdGF0ZS5nZXRPcmlnaW4oKTtcbiAgICB0aGF0LnByb3RvY29sID0gc3RhdGUuZ2V0UHJvdG9jb2woKTtcbiAgICB0aGF0LnVzZXJuYW1lID0gc3RhdGUuZ2V0VXNlcm5hbWUoKTtcbiAgICB0aGF0LnBhc3N3b3JkID0gc3RhdGUuZ2V0UGFzc3dvcmQoKTtcbiAgICB0aGF0Lmhvc3QgPSBzdGF0ZS5nZXRIb3N0KCk7XG4gICAgdGhhdC5ob3N0bmFtZSA9IHN0YXRlLmdldEhvc3RuYW1lKCk7XG4gICAgdGhhdC5wb3J0ID0gc3RhdGUuZ2V0UG9ydCgpO1xuICAgIHRoYXQucGF0aG5hbWUgPSBzdGF0ZS5nZXRQYXRobmFtZSgpO1xuICAgIHRoYXQuc2VhcmNoID0gc3RhdGUuZ2V0U2VhcmNoKCk7XG4gICAgdGhhdC5zZWFyY2hQYXJhbXMgPSBzdGF0ZS5nZXRTZWFyY2hQYXJhbXMoKTtcbiAgICB0aGF0Lmhhc2ggPSBzdGF0ZS5nZXRIYXNoKCk7XG4gIH1cbn07XG5cbnZhciBVUkxQcm90b3R5cGUgPSBVUkxDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbnZhciBhY2Nlc3NvckRlc2NyaXB0b3IgPSBmdW5jdGlvbiAoZ2V0dGVyLCBzZXR0ZXIpIHtcbiAgcmV0dXJuIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpW2dldHRlcl0oKTtcbiAgICB9LFxuICAgIHNldDogc2V0dGVyICYmIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcylbc2V0dGVyXSh2YWx1ZSk7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9O1xufTtcblxuaWYgKERFU0NSSVBUT1JTKSB7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhyZWZgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ocmVmXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdocmVmJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdzZXJpYWxpemUnLCAnc2V0SHJlZicpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUub3JpZ2luYCBnZXR0ZXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLW9yaWdpblxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnb3JpZ2luJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRPcmlnaW4nKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnByb3RvY29sYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcHJvdG9jb2xcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3Byb3RvY29sJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQcm90b2NvbCcsICdzZXRQcm90b2NvbCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUudXNlcm5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC11c2VybmFtZVxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAndXNlcm5hbWUnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFVzZXJuYW1lJywgJ3NldFVzZXJuYW1lJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wYXNzd29yZGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhc3N3b3JkXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwYXNzd29yZCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UGFzc3dvcmQnLCAnc2V0UGFzc3dvcmQnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhvc3RgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0XG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdob3N0JywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIb3N0JywgJ3NldEhvc3QnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhvc3RuYW1lYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdG5hbWVcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ2hvc3RuYW1lJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIb3N0bmFtZScsICdzZXRIb3N0bmFtZScpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucG9ydGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBvcnRcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3BvcnQnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBvcnQnLCAnc2V0UG9ydCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucGF0aG5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXRobmFtZVxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncGF0aG5hbWUnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFBhdGhuYW1lJywgJ3NldFBhdGhuYW1lJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5zZWFyY2hgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3NlYXJjaCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0U2VhcmNoJywgJ3NldFNlYXJjaCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuc2VhcmNoUGFyYW1zYCBnZXR0ZXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaHBhcmFtc1xuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnc2VhcmNoUGFyYW1zJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRTZWFyY2hQYXJhbXMnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLmhhc2hgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1oYXNoXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdoYXNoJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRIYXNoJywgJ3NldEhhc2gnKSk7XG59XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvSlNPTmAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtdG9qc29uXG5kZWZpbmVCdWlsdEluKFVSTFByb3RvdHlwZSwgJ3RvSlNPTicsIGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkwucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jVVJMLXN0cmluZ2lmaWNhdGlvbi1iZWhhdmlvclxuZGVmaW5lQnVpbHRJbihVUkxQcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5zZXJpYWxpemUoKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuaWYgKE5hdGl2ZVVSTCkge1xuICB2YXIgbmF0aXZlQ3JlYXRlT2JqZWN0VVJMID0gTmF0aXZlVVJMLmNyZWF0ZU9iamVjdFVSTDtcbiAgdmFyIG5hdGl2ZVJldm9rZU9iamVjdFVSTCA9IE5hdGl2ZVVSTC5yZXZva2VPYmplY3RVUkw7XG4gIC8vIGBVUkwuY3JlYXRlT2JqZWN0VVJMYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1VSTC9jcmVhdGVPYmplY3RVUkxcbiAgaWYgKG5hdGl2ZUNyZWF0ZU9iamVjdFVSTCkgZGVmaW5lQnVpbHRJbihVUkxDb25zdHJ1Y3RvciwgJ2NyZWF0ZU9iamVjdFVSTCcsIGJpbmQobmF0aXZlQ3JlYXRlT2JqZWN0VVJMLCBOYXRpdmVVUkwpKTtcbiAgLy8gYFVSTC5yZXZva2VPYmplY3RVUkxgIG1ldGhvZFxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML3Jldm9rZU9iamVjdFVSTFxuICBpZiAobmF0aXZlUmV2b2tlT2JqZWN0VVJMKSBkZWZpbmVCdWlsdEluKFVSTENvbnN0cnVjdG9yLCAncmV2b2tlT2JqZWN0VVJMJywgYmluZChuYXRpdmVSZXZva2VPYmplY3RVUkwsIE5hdGl2ZVVSTCkpO1xufVxuXG5zZXRUb1N0cmluZ1RhZyhVUkxDb25zdHJ1Y3RvciwgJ1VSTCcpO1xuXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIFVSTDogVVJMQ29uc3RydWN0b3Jcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyByZXBsYWNlZCB0byBtb2R1bGUgYmVsb3dcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3RvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xuXG52YXIgVVJMID0gZ2V0QnVpbHRJbignVVJMJyk7XG5cbi8vIGBVUkwucGFyc2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWNhbnBhcnNlXG4kKHsgdGFyZ2V0OiAnVVJMJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiAhVVNFX05BVElWRV9VUkwgfSwge1xuICBwYXJzZTogZnVuY3Rpb24gcGFyc2UodXJsKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciB1cmxTdHJpbmcgPSB0b1N0cmluZyh1cmwpO1xuICAgIHZhciBiYXNlID0gbGVuZ3RoIDwgMiB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvU3RyaW5nKGFyZ3VtZW50c1sxXSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgVVJMKHVybFN0cmluZywgYmFzZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcblxuLy8gYFVSTC5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC10b2pzb25cbiQoeyB0YXJnZXQ6ICdVUkwnLCBwcm90bzogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9LCB7XG4gIHRvSlNPTjogZnVuY3Rpb24gdG9KU09OKCkge1xuICAgIHJldHVybiBjYWxsKFVSTC5wcm90b3R5cGUudG9TdHJpbmcsIHRoaXMpO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9hcnJheS9pbmNsdWRlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvYXNzaWduJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL3Byb21pc2UnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi93ZWIvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuaGFzJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5zaXplJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5VUkxTZWFyY2hQYXJhbXM7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuL3VybC1zZWFyY2gtcGFyYW1zJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5jYW4tcGFyc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC5wYXJzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLnRvLWpzb24nKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLlVSTDtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGlzIHJlZmVyZW5jZWQgYnkgb3RoZXIgbW9kdWxlcyBzbyBpdCBjYW4ndCBiZSBpbmxpbmVkXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oODE1Nik7XG4iXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJCYXNlNjJTdHIiLCJhbHBoYWJldCIsInRoaXMiLCJsb29rdXAiLCJjcmVhdGVMb29rdXBUYWJsZSIsImdldEJ5dGVzIiwic3RyIiwiYnl0ZXMiLCJpIiwibGVuZ3RoIiwiY2hhciIsImNoYXJDb2RlQXQiLCJwdXNoIiwiZ2V0U3RyaW5nIiwiYXJyIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYXBwbHkiLCJjcmVhdGVJbnN0YW5jZSIsImNyZWF0ZUluc3RhbmNlV2l0aEdtcENoYXJhY3RlclNldCIsIkNoYXJhY3RlclNldHMiLCJHTVAiLCJjcmVhdGVJbnN0YW5jZVdpdGhJbnZlcnRlZENoYXJhY3RlclNldCIsIklOVkVSVEVEIiwidHJhbnNsYXRlIiwiaW5kaWNlcyIsImRpY3Rpb25hcnkiLCJ0cmFuc2xhdGlvbiIsIl9pIiwiaW5kaWNlc18xIiwiaW5kaWNlc2kiLCJjb252ZXJ0IiwibWVzc2FnZSIsInNvdXJjZUJhc2UiLCJ0YXJnZXRCYXNlIiwib3V0Iiwic291cmNlIiwicXVvdGllbnQiLCJyZW1haW5kZXIiLCJzb3VyY2VfMSIsImFjY3VtdWxhdG9yIiwiZGlnaXQiLCJyZXZlcnNlIiwicHJvdG90eXBlIiwiZW5jb2RlIiwiU1RBTkRBUkRfQkFTRSIsIlRBUkdFVF9CQVNFIiwiZGVjb2RlIiwiZW5jb2RlZCIsInByZXBhcmVkIiwiZW5jb2RlU3RyIiwiaW5wdXQiLCJkZWNvZGVTdHIiLCJBcnJheSIsIkV4cGlyZVNldCIsImNvbnN0cnVjdG9yIiwidGltZW91dCIsImdjRGVsYXkiLCJkYiIsIk1hcCIsIm5leHRHYyIsInNpemUiLCJhbGwiLCJzIiwiU2V0IiwiZm9yRWFjaCIsIl8iLCJ2IiwiYWRkIiwic2V0IiwiRGF0ZSIsIm5vdyIsInNjaGVkdWxlR2MiLCJoYXMiLCJkZWxldGUiLCJnYyIsInQiLCJmb3JjZSIsImNsZWFyVGltZW91dCIsInRzIiwic2V0VGltZW91dCIsImJpbmQiLCJ3aW5kb3ciLCJGdW5jdGlvbiIsImltcGxlbWVudGF0aW9uIiwiZyIsIk1hdGgiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJuIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJPUEVOX0JST0FEQ0FTVF9DSEFOTkVMUyIsIkJyb2FkY2FzdENoYW5uZWwiLCJjbGVhck5vZGVGb2xkZXIiLCJmaWxsT3B0aW9uc1dpdGhEZWZhdWx0cyIsIm8iLCJjaG9vc2VNZXRob2QiLCJ0eXBlIiwidGhlbiIsInIiLCJQUk9NSVNFX1JFU09MVkVEX0ZBTFNFIiwiZW5mb3JjZU9wdGlvbnMiLCJhIiwidSIsImMiLCJpZCIsIm5hbWUiLCJvcHRpb25zIiwibWV0aG9kIiwiX2lMIiwiX29uTUwiLCJfYWRkRUwiLCJpbnRlcm5hbCIsIl91TVAiLCJfYmVmQyIsIl9wcmVwUCIsImNyZWF0ZSIsImlzUHJvbWlzZSIsIl9zdGF0ZSIsImwiLCJ0aW1lIiwibWljcm9TZWNvbmRzIiwiZGF0YSIsIlBST01JU0VfUkVTT0xWRURfVk9JRCIsInBvc3RNZXNzYWdlIiwiY2F0Y2giLCJkIiwiZiIsImZuIiwib25NZXNzYWdlIiwiaCIsImZpbHRlciIsIl9wdWJrZXkiLCJjbG9zZWQiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJwb3N0SW50ZXJuYWwiLCJvbm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImZpbmQiLCJjbG9zZSIsIlByb21pc2UiLCJmcm9tIiwibWFwIiwiaXNDbG9zZWQiLCJjcmVhdGVMZWFkZXJFbGVjdGlvbiIsImJlTGVhZGVyIiwiZW51bWVyYWJsZSIsImdldCIsIl9sZWFkZXJFbGVjdG9yIiwicGFyc2UiLCJmYWxsYmFja0ludGVydmFsIiwicmVzcG9uc2VUaW1lIiwiYXZlcmFnZVJlc3BvbnNlVGltZSIsImRpZSIsImJyb2FkY2FzdENoYW5uZWwiLCJfb3B0aW9ucyIsImlzTGVhZGVyIiwiaGFzTGVhZGVyIiwiaXNEZWFkIiwidG9rZW4iLCJyYW5kb21Ub2tlbiIsIl9hcGxRIiwiX2FwbFFDIiwiX3VubCIsIl9sc3RucyIsIl9kcEwiLCJfZHBMQyIsImNvbnRleHQiLCJhY3Rpb24iLCJhcHBseU9uY2UiLCJzbGVlcCIsIlBST01JU0VfUkVTT0xWRURfVFJVRSIsInJhY2UiLCJyZWplY3QiLCJhd2FpdExlYWRlcnNoaXAiLCJfYUxQIiwib25kdXBsaWNhdGUiLCJyZW1vdmUiLCJjb25jYXQiLCJtZXRob2RzIiwiQm9vbGVhbiIsIndlYldvcmtlclN1cHBvcnQiLCJpc05vZGUiLCJjYW5CZVVzZWQiLCJ3IiwiQyIsImNsZWFuT2xkTWVzc2FnZXMiLCJwIiwieSIsImNyZWF0ZURhdGFiYXNlIiwiZ2V0QWxsTWVzc2FnZXMiLCJ0cmFuc2FjdGlvbiIsIm9iamVjdFN0b3JlIiwib3BlbkN1cnNvciIsIm9uc3VjY2VzcyIsInRhcmdldCIsInJlc3VsdCIsImNvbnRpbnVlIiwiZ2V0SWRiIiwiZ2V0TWVzc2FnZXNIaWdoZXJUaGFuIiwiZ2V0T2xkTWVzc2FnZXMiLCJiIiwicmVtb3ZlTWVzc2FnZUJ5SWQiLCJ3cml0ZU1lc3NhZ2UiLCJpbmRleGVkREIiLCJtb3pJbmRleGVkREIiLCJ3ZWJraXRJbmRleGVkREIiLCJtc0luZGV4ZWREQiIsIm9wZW4iLCJvbnVwZ3JhZGVuZWVkZWQiLCJjcmVhdGVPYmplY3RTdG9yZSIsImtleVBhdGgiLCJhdXRvSW5jcmVtZW50Iiwib25lcnJvciIsInV1aWQiLCJnZXRUaW1lIiwib25jb21wbGV0ZSIsIklEQktleVJhbmdlIiwiYm91bmQiLCJsYXN0Q3Vyc29ySWQiLCJjaGFubmVsTmFtZSIsImVNSXMiLCJPYmxpdmlvdXNTZXQiLCJpZGIiLCJ0dGwiLCJ3cml0ZUJsb2NrUHJvbWlzZSIsIm1lc3NhZ2VzQ2FsbGJhY2siLCJyZWFkUXVldWVQcm9taXNlcyIsIm9uY2xvc2UiLCJtIiwibWVzc2FnZXNDYWxsYmFja1RpbWUiLCJzb3J0IiwicmFuZG9tSW50IiwiRSIsImFkZFN0b3JhZ2VFdmVudExpc3RlbmVyIiwiZ2V0TG9jYWxTdG9yYWdlIiwicmVtb3ZlU3RvcmFnZUV2ZW50TGlzdGVuZXIiLCJzdG9yYWdlS2V5IiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsImRvY3VtZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJrZXkiLCJuZXdWYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJsb2NhbHN0b3JhZ2UiLCJyZW1vdmVUaW1lb3V0IiwibGlzdGVuZXIiLCJyZW1vdmVJdGVtIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImJjIiwic3ViRm5zIiwiYXJndW1lbnRzIiwibm9kZSIsIm1heFBhcmFsbGVsV3JpdGVzIiwidXNlRmFzdFBhdGgiLCJmbG9vciIsInJhbmRvbSIsInRvU3RyaW5nIiwic3Vic3RyaW5nIiwicmVzb2x2ZSIsImNhbGwiLCJmb3JtYXRBcmdzIiwidXNlQ29sb3JzIiwibmFtZXNwYWNlIiwiaHVtYW5pemUiLCJkaWZmIiwiY29sb3IiLCJzcGxpY2UiLCJyZXBsYWNlIiwic2F2ZSIsInN0b3JhZ2UiLCJsb2FkIiwiZ2V0SXRlbSIsImVudiIsIkRFQlVHIiwicHJvY2VzcyIsIl9fbndqcyIsIm1hdGNoIiwiZG9jdW1lbnRFbGVtZW50Iiwic3R5bGUiLCJXZWJraXRBcHBlYXJhbmNlIiwiY29uc29sZSIsImZpcmVidWciLCJleGNlcHRpb24iLCJ0YWJsZSIsInBhcnNlSW50IiwiUmVnRXhwIiwiJDEiLCJkZXN0cm95Iiwid2FybiIsImNvbG9ycyIsImxvZyIsImRlYnVnIiwiZm9ybWF0dGVycyIsImoiLCJlbmFibGVkIiwiTnVtYmVyIiwicHJldiIsImN1cnIiLCJjb2VyY2UiLCJ1bnNoaWZ0Iiwic2VsZWN0Q29sb3IiLCJleHRlbmQiLCJjb25maWd1cmFibGUiLCJuYW1lc3BhY2VzIiwiaW5pdCIsInN0YWNrIiwiZGlzYWJsZSIsIm5hbWVzIiwic2tpcHMiLCJqb2luIiwiZW5hYmxlIiwic3BsaXQiLCJzbGljZSIsInRlc3QiLCJrZXlzIiwiYWJzIiwicm91bmQiLCJleGVjIiwicGFyc2VGbG9hdCIsImlzRmluaXRlIiwibG9uZyIsInJlbW92ZVRvb09sZFZhbHVlcyIsInRpbWVNYXAiLCJjbGVhciIsIm5leHQiLCJydW4iLCJmdW4iLCJhcnJheSIsIm5leHRUaWNrIiwidGl0bGUiLCJicm93c2VyIiwiYXJndiIsInZlcnNpb24iLCJ2ZXJzaW9ucyIsIm9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJlbWl0IiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsImxpc3RlbmVycyIsImJpbmRpbmciLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiY3R4IiwiVGlueUVtaXR0ZXIiLCJfX2V4dGVuZHMiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImhhc093blByb3BlcnR5IiwiVHlwZUVycm9yIiwiYXNzZXJ0IiwiQXNzZXJ0RXJyb3IiLCJTT1VSQ0VfTkFNRVNQQUNFIiwiSW52b2tlRXJyb3IiLCJNZXNzYWdlVGltZW91dEVycm9yIiwiTWVzc2FnZUVycm9yIiwiX19jcmVhdGVCaW5kaW5nIiwiX19leHBvcnRTdGFyIiwiX19pbXBvcnREZWZhdWx0IiwiT2ZmaWNlU0RLTWVzc2FnZUV2ZW50IiwiaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlIiwiT2ZmaWNlU0RLQnJvYWRjYXN0Q2hhbm5lbCIsIm9yaWdpbiIsImVtaXR0ZXIiLCJjaGFubmVsSWQiLCJhc3NpZ24iLCJtZXNzYWdlSWQiLCJ0cmltIiwiZGVmaW5lUHJvcGVydGllcyIsIl9fYXdhaXRlciIsInRocm93IiwiZG9uZSIsIl9fZ2VuZXJhdG9yIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInJldHVybiIsInBvcCIsIl9fc3ByZWFkQXJyYXkiLCJDb250ZXh0VHlwZSIsIkRFQlVHX05BTUVTUEFDRSIsIklOVk9LRV9ERUZBVVRMX1RJTUVPVVQiLCJpbnZva2VIYW5kbGVycyIsImV2ZW50SGFuZGxlcnMiLCJlbWl0dGVySWQiLCJfZGVidWdOYW1lc3BhY2UiLCJkZWJ1Z05hbWVzcGFjZSIsImF1dG9TdHJ1Y3R1cmVkQ2xvbmUiLCJicm9hZGNhc3RDaGFubmVsT3B0aW9ucyIsImluaXRNZXNzYWdlRXZlbnQiLCJvcmlnaW5NZXNzYWdlIiwiZGlzdHJpYnV0ZU1lc3NhZ2UiLCJjaGFubmVsIiwibG9jYXRpb24iLCJzdHJ1Y3R1cmVkQ2xvbmUiLCJyZXBsYWNlciIsImlzQXJyYXkiLCJoYW5kbGVyIiwiYXVkaWVuY2UiLCJoYW5kbGVycyIsIm1lcmdlQ29udGV4dHMiLCJzdHJ1Y3R1cmVkQ2xvbmVkIiwib25NZXNzYWdlQXJyaXZlIiwiSW52b2tlUmVxdWVzdCIsImhhbmRsZUludm9rZVJlcXVlc3QiLCJJbnZva2VSZXNwb25zZSIsImhhbmRsZUludm9rZVJlc3BvbnNlIiwiYXJncyIsImVycm9yIiwiaW52b2tlIiwicGF5bG9hZCIsImFkZEludm9rZUhhbmRsZXIiLCJyZW1vdmVJbnZva2VIYW5kbGVyIiwiQXJyYXlCdWZmZXIiLCJEYXRhVmlldyIsIkZpbGUiLCJGaWxlTGlzdCIsIkJsb2IiLCJJbWFnZUJpdG1hcCIsIkltYWdlRGF0YSIsImdldFByb3RvdHlwZU9mIiwiVWludDhBcnJheSIsImNyeXB0byIsIm1zQ3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwicGFkU3RhcnQiLCJnZXRTaXplIiwicmVtb3ZlQWxsIiwicnVuQWxsIiwiV29ya2VyR2xvYmFsU2NvcGUiLCJ0b1N0cmluZ1RhZyIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJsZW4iLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwibm9vcCIsImRpciIsInNjb3BlIiwicHJvZHVjdCIsIlByb3h5IiwicmV2b2NhYmxlIiwiUHJveHlQb2x5ZmlsbCIsImxhc3RSZXZva2VGbiIsImlzT2JqZWN0IiwidmFsaWRhdGVQcm90byIsInByb3RvIiwiJE9iamVjdCIsImNhbkNyZWF0ZU51bGxQcm90b09iamVjdHMiLCJvYmplY3RDcmVhdGUiLCJTeW50YXhFcnJvciIsIlQiLCJnZXRQcm90byIsIk8iLCJ1bmRlZmluZWQiLCJ0aHJvd1Jldm9rZWQiLCJ0cmFwIiwidW5zYWZlSGFuZGxlciIsImsiLCJwcm94eSIsImlzTWV0aG9kIiwidXNpbmdOZXciLCJnZXR0ZXIiLCJwcm9wIiwic2V0dGVyIiwicHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJwcm9wZXJ0eU1hcCIsInJlYWwiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwicHJvdG90eXBlT2siLCJzZXRQcm90byIsInNlYWwiLCJjYWxsYmFjayIsImV2dEFyciIsImV2dHMiLCJsaXZlRXZlbnRzIiwiQlJBTkRJTkdfTUVUSE9EIiwiZ2V0RWRpdG9yRm9vdGVyTG9nbyIsInNldEVkaXRvckZvb3RlckxvZ29TcmMiLCJCUkFORElOR19DSEFOR0VEX0VWRU5UIiwiaG9zdCIsImludm9rZUJyYW5kaW5nIiwiY29uZmlnIiwic2V0RWRpdG9yRm9vdGVyTG9nb1N0YXRlIiwiZ2V0RWRpdG9yRm9vdGVyTG9nb1N0YXRlIiwic3JjIiwiZW1pdEJyYW5kaW5nRXJyb3IiLCJlZGl0b3JGb290ZXJMb2dvIiwiY3JlYXRlRG9jc1JhbmdlRmFjYWRlIiwibG9jYXRvciIsImNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlIiwic3RhcnQiLCJlbmQiLCJpc0NhcmV0IiwiY3JlYXRlRG9jc1RhYmxlRmFjYWRlIiwidGFibGVJZCIsImdldENlbGwiLCJyb3ciLCJjb2x1bW4iLCJpbnZva2VFZGl0b3JGYWNhZGUiLCJuZXh0TG9jYXRvciIsImdldFJhbmdlIiwic2VsZWN0aW9uIiwiY3JlYXRlU2hlZXRSYW5nZUZhY2FkZSIsImNyZWF0ZVNoZWV0Q2VsbEZhY2FkZSIsImNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlIiwicmFuZ2VMb2NhdG9yIiwiY2VsbExvY2F0b3IiLCJnZXRBY3RpdmVDZWxsIiwiY3JlYXRlUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIiwiY3JlYXRlUHJlc2VudGF0aW9uU2hhcGVGYWNhZGUiLCJzdGF0aWNGaWVsZHMiLCJzaGFwZUlkIiwidGV4dENvbnRlbnQiLCJjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZSIsInNsaWRlSWQiLCJnZXRTaGFwZXMiLCJzaGFwZSIsImluc2VydFNoYXBlIiwiZmFjYWRlIiwiaW5zZXJ0VGV4dEJveCIsInRpdGxlRmFjYWRlIiwiYWRkQ2hhbmdlZExpc3RlbmVyIiwibGlzdGVuRWRpdG9yRXZlbnQiLCJzZXRUaXRsZSIsImNvbW1lbnRzRmFjYWRlIiwic2hvdyIsImhpZGUiLCJoaXN0b3J5RmFjYWRlIiwiZGlzY3Vzc2lvbkZhY2FkZSIsImNvbGxhYm9yYXRvckZhY2FkZSIsImV4dGVybmFsQXBwRmFjYWRlIiwiaW5zZXJ0IiwidXJsIiwicGFyYW1zIiwibG9ja3NGYWNhZGUiLCJhZGRSYW5nZUxvY2siLCJhZGRTaGVldExvY2siLCJyZW1vdmVSYW5nZUxvY2tzSW5SYW5nZXMiLCJyZW1vdmVTaGVldExvY2siLCJtZW50aW9uRmFjYWRlIiwibG9jYXRlQ2VsbEJ5R3VpZCIsImd1aWQiLCJub3RpZmljYXRpb25UeXBlIiwiY29udGVudEZhY2FkZSIsInNldENvbnRlbnQiLCJjb250ZW50IiwidmVyc2lvbkZhY2FkZSIsImNyZWF0ZVJldmlzaW9uIiwicHJlc2VudGF0aW9uRmFjYWRlIiwiaW5kZXgiLCJxdWl0Iiwic3RhcnRGcm9tQ3VycmVudCIsInN0YXJ0UmVtb3RlTGl2ZSIsInN0YXJ0U3BlYWtlclZpZXciLCJhZGRDaGFuZ2VMaXN0ZW5lciIsInJlZ2lzdGVyRWRpdG9yRmFjYWRlTGlzdGVuZXIiLCJiYXRjaENoYW5nZXNGYWNhZGUiLCJjYWxsYmFja0lkIiwicmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayIsInVucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayIsInByaW50RmFjYWRlIiwiZXhwb3J0RmFjYWRlIiwiZG9jc1NlbGVjdGlvbkZhY2FkZSIsImNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZSIsImdldFdob2xlUmFuZ2UiLCJhZGRSYW5nZUxpc3RlbmVyIiwiZG9jc1RhYmxlc0ZhY2FkZSIsImdldEFsbCIsImdldE9uZSIsInNoZWV0V29ya2Jvb2tGYWNhZGUiLCJnZXRXb3Jrc2hlZXRzIiwic2hlZXQiLCJnZXRXb3Jrc2hlZXRCeUlkIiwic2hlZXRJZCIsIndvcmtzaGVldCIsImdldEFjdGl2ZVdvcmtzaGVldCIsInByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSIsImdldEN1cnJlbnRTbGlkZSIsInNsaWRlIiwiZ2V0U2xpZGVzIiwiZ2V0U2xpZGVCeUlkIiwiZ2V0U2VsZWN0ZWRTbGlkZXMiLCJpZHMiLCJhZGRTbGlkZSIsImR1cGxpY2F0ZVNsaWRlIiwicHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlIiwiZ2V0VGV4dFJhbmdlIiwiZ2V0U2VsZWN0ZWRTaGFwZXMiLCJzaGFwZXMiLCJwcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZSIsImFkZEVycm9yTGlzdGVuZXIiLCJhZGRMb2FkZWRMaXN0ZW5lciIsImRvY3NPdXRsaW5lRmFjYWRlIiwiZmlsZVR5cGUiLCJGaWxlVHlwZSIsIkRvY3VtZW50IiwiaGlzdG9yeSIsImNvbW1lbnRzIiwiZGlzY3Vzc2lvbiIsImNvbGxhYm9yYXRvciIsImV4dGVybmFsQXBwIiwicHJlc2VudGF0aW9uIiwic2V0dGluZ3MiLCJzZWFyY2giLCJvdXRsaW5lIiwic2lkZWJhciIsInRhYmxlcyIsImJhdGNoQ2hhbmdlcyIsInByaW50IiwiU3ByZWFkc2hlZXQiLCJsb2NrcyIsIm1lbnRpb24iLCJ3b3JrYm9vayIsImFjdGl2ZVNoZWV0IiwiYWN0aXZlIiwiY2hhcnRzIiwic2VsZWN0aW9ucyIsImV4cG9ydCIsInNldEZvY3VzIiwiaXNGb2N1cyIsIlByZXNlbnRhdGlvbiIsInNsaWRlcyIsInRleHQiLCJ6b29tIiwiZXZlbnRTdWJzY3JpcHRpb24iLCJNZW50aW9uVHlwZXMiLCJQZXJtaXNzaW9uTGV2ZWwiLCJTaGVldFJhbmdlVHlwZSIsIkVkaXRvclNhdmVTdGF0dXMiLCJlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24iLCJpc1RpdGxlU3Vic2NyaWJlZCIsInNldFRpdGxlU3Vic2NyaWJlZCIsIm9uSW50ZXJuYWxUaXRsZUNoYW5nZSIsImdldFRpdGxlSGFuZGxlciIsInN1YnNjcmliZUVkaXRvclRpdGxlQ2hhbmdlIiwic3luY0hlYWRlckJhcnNDb21tYW5kcyIsImNvbW1hbmRzIiwiY29tbWFuZE1hcCIsImdldENvbW1hbmRzTWFwIiwiY29tbWFuZCIsInN5bmNIZWFkZXJCYXJzVmlzaWJsZSIsImludm9rZUhlYWRlckJhcnMiLCJIRUFERVJfQkFSU19NRVRIT0QiLCJnZXRWaXNpYmxlIiwic2V0VmlzaWJsZVN0YXRlIiwidmlzaWJsZSIsImdldFZpc2libGVTdGF0ZSIsInNldEhlYWRlckJhcnNWaXNpYmxlIiwic2V0VmlzaWJsZSIsImdldEhlYWRlckJhcnNDb21tYW5kUmVmIiwicmVmcyIsImdldFJlZnNNYXAiLCJleGlzdGluZyIsImdldENvbW1hbmQiLCJlcnIiLCJlbWl0SGVhZGVyQmFyc0Vycm9yIiwicmVmIiwiZGlzYWJsZWQiLCJlZGl0YWJsZSIsIm9uQ29tbWFuZENsaWNrIiwiZ2V0U3RhdGUiLCJjdXJyZW50Iiwic2V0Q29tbWFuZFZpc2libGUiLCJzZXRDb21tYW5kRGlzYWJsZWQiLCJzZXRDb21tYW5kQWN0aXZlIiwic2V0Q29tbWFuZFNyYyIsInNldENvbW1hbmRMYWJlbCIsInNldENvbW1hbmRFZGl0YWJsZSIsImdldE92ZXJyaWRlc01hcCIsInNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQiLCJhZGRDb21tYW5kIiwibGlzdFZpZXdDb21tYW5kcyIsImhhbmRsZUNvbW1hbmRDbGljayIsIkhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQiLCJvblRpdGxlQ2hhbmdlIiwicG9zQ29tbWFuZCIsInBvcyIsIm9uQ2xpY2siLCJjb21tYW5kUGF5bG9hZCIsImFkZGVkIiwiY2xpY2tIYW5kbGVyIiwic2V0VGl0bGVIYW5kbGVyIiwic25hcHNob3QiLCJJbnZva2VNZXRob2QiLCJMaXN0ZW5FZGl0b3JFdmVudCIsImdsb2JhbFRoaXMiLCJBVUQiLCJTTV9QQVJBTVNfS0VZIiwiTEVHQUNZX0xBTkdVQUdFX01BUCIsImVuIiwiamEiLCJTVVBQT1JURURfTEFOR1VBR0VTIiwiUFJPTUlTRV9MSUtFX1BST1hZX1BST1BTIiwic2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcCIsIk1lc3NhZ2VFdmVudCIsIl9maWxlVHlwZSIsIlVua25vd24iLCJtZXNzYWdlSGFuZGxlciIsIl9yZWFkeVN0YXRlIiwiUmVhZHlTdGF0ZSIsIkxvYWRpbmciLCJjb2xsYWJvcmF0b3JzIiwiaGVhZGVyQmFyc1Zpc2libGUiLCJoZWFkZXJCYXJzQ29tbWFuZHMiLCJoZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcyIsInNsYXNoTWVudUNhbGxiYWNrcyIsImVkaXRvckZhY2FkZUNhbGxiYWNrcyIsImhlYWRlckJhcnNDb21tYW5kUmVmcyIsImhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmliZWQiLCJwcmVsb2FkQWNrVGltZW91dE1zIiwicHJlbG9hZERvbmVUaW1lb3V0TXMiLCJwcmVsb2FkUmVhZHlUaW1lb3V0TXMiLCJjb25uZWN0T3B0aW9ucyIsInVzZXJVdWlkIiwibm9ybWFsaXplZEVtcHR5UGFnZSIsIm5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMiLCJlbXB0eVBhZ2UiLCJjb250YWluZXIiLCJIVE1MRWxlbWVudCIsInRhZ05hbWUiLCJlbmRwb2ludCIsIlVSTCIsInNhbWVPcmlnaW4iLCJwYXRobmFtZSIsImFwaUFkYXB0b3IiLCJhcGlBZGFwdG9yQ29udGV4dCIsInN0YXJ0UGFyYW1zIiwiU3RhcnRQYXJhbXMiLCJzbVBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIm9uVmlld3BvcnRSZXNpemUiLCJldmVudCIsIlNES0V2ZW50IiwiVmlld3BvcnRSZXNpemUiLCJnZXRDb250YWluZXJSZWN0IiwiaW5pdENoYW5uZWwiLCJoZWFkZXJCYXJzIiwiaW5pdEhlYWRlckJhcnNGYWNhZGUiLCJicmFuZGluZyIsImluaXRCcmFuZGluZ0ZhY2FkZSIsIm1lc3NhZ2VFeHBpcmVzIiwiaXNOYU4iLCJoYW5kbGVkTWVzc2FnZUNhY2hlIiwiZXZ0Iiwic2hvdWxkSGFuZGxlTWVzc2FnZSIsInNob3VsZEV4cG9zZVNsYXNoTWVudSIsInNsYXNoTWVudSIsImhpbnRlZFR5cGUiLCJnZXRTbGFzaE1lbnVUeXBlSGludCIsImNyZWF0ZVNlcmlhbGl6ZWRTbGFzaE1lbnUiLCJlbnRyaWVzIiwic2VyaWFsaXplU2xhc2hNZW51SXRlbXMiLCJpdGVtcyIsInBhdGgiLCJpdGVtIiwibmV4dFBhdGgiLCJpc1NsYXNoTWVudUVudHJ5IiwiY2hpbGRyZW4iLCJyZWdpc3RlclNsYXNoTWVudUNhbGxiYWNrIiwic2VyaWFsaXplZEl0ZW0iLCJpY29uIiwiZ2V0RWRpdG9yIiwiZWRpdG9yIiwic2V0Q3JlZGVudGlhbHMiLCJTZXRDcmVkZW50aWFscyIsInNldFNpZ25hdHVyZSIsInNpZ25hdHVyZSIsInNldFRva2VuIiwiZ2V0UGVyZm9ybWFuY2VFbnRyaWVzIiwiUmVxdWVzdFBlcmZvcm1hbmNlRW50cmllcyIsImRpc2Nvbm5lY3QiLCJlbGVtZW50IiwicGFyZW50RWxlbWVudCIsInJlbW92ZUNoaWxkIiwidmlzdWFsVmlld3BvcnQiLCJMb2FkaW5nRWRpdG9yIiwiaW5pdElmcmFtZSIsImFwcGVuZENoaWxkIiwicnVuUHJlbG9hZEhhbmRzaGFrZSIsImluaXRFZGl0b3IiLCJyZWFkeVN0YXRlSGFuZGxlciIsInN0YXRlIiwiUmVhZHkiLCJFdmVudCIsIkRvY3VtZW50UHJvIiwiZG9jdW1lbnRQcm8iLCJzcHJlYWRzaGVldCIsIlRhYmxlIiwiRm9ybSIsImZvcm0iLCJGbG93Y2hhcnQiLCJmbG93Y2hhcnQiLCJpbnN0YWxsUm9vdEZhY2FkZSIsInJlYWR5IiwicmVhZHlTdGF0ZSIsImlmcmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJib3JkZXIiLCJvdmVyZmxvdyIsIndpZHRoIiwiaGVpZ2h0IiwiZGlzcGxheSIsImFsbG93IiwiYWxsb3dQb2xpY3kiLCJhbGxvd0Z1bGxzY3JlZW4iLCJmaWxlSWQiLCJub3RFbXB0eVN0cmluZyIsInNlYXJjaFBhcmFtcyIsImRldmljZU1vZGUiLCJzaG93TG9hZGluZ0VmZmVjdCIsInNob3dMb2FkaW5nIiwibG9hZGluZ09wdGlvbnMiLCJsYW5nIiwibm9ybWFsaXplZExhbmciLCJub3JtYWxpemVkIiwibm9ybWFsaXplTGFuZ3VhZ2UiLCJmaWxlR3VpZCIsInJlcXVlc3RJZCIsInJlYWR5UmVzb2x2ZWQiLCJhY2tSZXNvbHZlZCIsImRvbmVSZXNvbHZlZCIsImFja1RpbWVyIiwiZG9uZVRpbWVyIiwiY2xlYW51cCIsImhhbmRsZU1lc3NhZ2UiLCJzZW5kSW5pdCIsImNvbnRlbnRXaW5kb3ciLCJtb2RlIiwiY29kZSIsIm1zZyIsIkVESVRPUl9SRU5ERVJFRF9FVkVOVCIsIkVkaXRvclJlbmRlcmVkIiwiU0RLSW5pdCIsIm9wdHMiLCJ0b1VwcGVyQ2FzZSIsIkRpc3BhdGNoU0RLRXZlbnQiLCJhcHBseUhlYWRlckJhcnNDaGFuZ2VkIiwiYXBwbHlCcmFuZGluZ0NoYW5nZWQiLCJEaXNwYXRjaEVkaXRvckV2ZW50IiwidXBkYXRlQ29sbGFib3JhdG9ycyIsIkVNUFRZX1BBR0VfRVZFTlRTIiwiaXNFbXB0eVBhZ2VFdmVudCIsImJpbmRDb250YWluZXJNZXRob2RIYW5kbGVycyIsIkNvbnRhaW5lck1ldGhvZCIsIkdlbmVyYXRlVXJsIiwiaW5mbyIsImdlbmVyYXRlVXJsIiwiSGFuZGxlQ3VzdG9tVGFzayIsInRhc2tJZCIsImhhbmRsZUN1c3RvbVRhc2siLCJPcGVuTGluayIsIm9wZW5MaW5rIiwiR2V0RmlsZUluZm9Gcm9tVXJsIiwiZ2V0RmlsZUluZm9Gcm9tVXJsIiwiTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSIsIm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwieCIsImlzTWVudGlvbiIsIm1lbnRpb25JbmZvIiwibGVmdCIsInRvcCIsIkdldENvbnRhaW5lclJlY3QiLCJTaG93VG9hc3QiLCJzaG93VG9hc3QiLCJHZXRDcmVkZW50aWFscyIsImdldENyZWRlbnRpYWxzIiwiaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciIsInN1YnNjcmliZWQiLCJjcmVhdGVCcmFuZGluZ0hvc3QiLCJjcmVhdGVIZWFkZXJCYXJzSG9zdCIsInByZWZpeCIsIm92ZXJyaWRlcyIsImNsZWFyUm9vdEZhY2FkZSIsImJ1aWxkUm9vdEZhY2FkZVN0YXRlIiwiSW52b2tlRWRpdG9yTWV0aG9kIiwiYWRqdXN0RXZlbnROYW1lIiwiaW5zdCIsImdldENvbGxhYm9yYXRvcnMiLCJjcmVhdGVOZXN0ZWRQcm94eSIsIl90YXJnZXQiLCJfdGhpc0FyZyIsInZpZXdwb3J0V2lkdGgiLCJpbm5lcldpZHRoIiwidmlld3BvcnRIZWlnaHQiLCJpbm5lckhlaWdodCIsImJvdHRvbSIsInJpZ2h0Iiwic2Nyb2xsVG9wIiwic2Nyb2xsaW5nRWxlbWVudCIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJwYWdlTGVmdCIsInBhZ2VUb3AiLCJzY2FsZSIsIk9mZmljZVNESyIsImNvbmRpdGlvbiIsInNkayIsIkFMTF9FTVBUWV9QQUdFX1NDRU5FUyIsIlNUQVJUX1BBUkFNU19GSUVMRCIsInJlc29sdmVTY2VuZXMiLCJmaWx0ZXJlZCIsInNjZW5lIiwicmVzb2x2ZVRva2VuRXhwaXJlZFN0cmF0ZWd5IiwicGlja1N0cmluZyIsInJlc29sdmVBY3Rpb24iLCJyZXNvbHZlQ29udGVudE92ZXJyaWRlIiwiZGVzY3JpcHRpb24iLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwicmVzb2x2ZU92ZXJyaWRlcyIsInJlc29sdmVkIiwic2NlbmVzIiwidG9rZW5FeHBpcmVkU3RyYXRlZ3kiLCJybmRzOCIsInJuZyIsImJ5dGVUb0hleCIsInN1YnN0ciIsIm9mZnNldCIsIl9ub2RlSWQiLCJfY2xvY2tzZXEiLCJfbGFzdE1TZWNzIiwiX2xhc3ROU2VjcyIsImJ1ZiIsImNsb2Nrc2VxIiwic2VlZEJ5dGVzIiwibXNlY3MiLCJuc2VjcyIsImR0IiwidGwiLCJ0bWgiLCJoYXNoZnVuYyIsImdlbmVyYXRlVVVJRCIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwic3RyaW5nVG9CeXRlcyIsIkROUyIsImdldE91dHB1dExlbmd0aCIsImlucHV0TGVuZ3RoOCIsInNhZmVBZGQiLCJsc3ciLCJtZDVjbW4iLCJxIiwibnVtIiwiY250IiwibWQ1ZmYiLCJtZDVnZyIsIm1kNWhoIiwibWQ1aWkiLCJ2MzUiLCJvdXRwdXQiLCJsZW5ndGgzMiIsImhleFRhYiIsImhleCIsImNoYXJBdCIsIm1kNVRvSGV4RW5jb2RlZEFycmF5Iiwib2xkYSIsIm9sZGIiLCJvbGRjIiwib2xkZCIsIndvcmRzVG9NZDUiLCJsZW5ndGg4IiwiVWludDMyQXJyYXkiLCJieXRlc1RvV29yZHMiLCJybmRzIiwieiIsIlJPVEwiLCJLIiwiSCIsIk4iLCJjZWlsIiwiTSIsInBvdyIsIl9pMiIsIlciLCJfdCIsIl90MiIsIl9hIiwiX192YWx1ZXMiLCJfX3JlYWQiLCJhciIsImNvbnZlcnRGaWxlVHlwZSIsIkZpbGVUeXBlQWxpYXMiLCJNaW5kbWFwIiwiQm9hcmQiLCJlXzEiLCJlXzIiLCJfYiIsIl9jIiwiX2QiLCJfZSIsImVfMV8xIiwiX2YiLCJfZyIsIl9oIiwiZV8yXzEiLCJpc1NES0V2ZW50TWVzc2FnZSIsImZyZWV6ZSIsImsyIiwid3JpdGFibGUiLCJVcmxTaGFyaW5nVHlwZSIsIlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20iLCJtb2QiLCJpc19wbGFpbl9vYmpfMSIsImJhc2U2MiIsInBhcmFtc18xIiwicGFyYW0iLCJwYXJhbVN0ciIsInBhcmVudCIsImVudHJ5VW5iaW5kIiwiaXNDYWxsYWJsZSIsInRyeVRvU3RyaW5nIiwiJFR5cGVFcnJvciIsImFyZ3VtZW50IiwiaXNDb25zdHJ1Y3RvciIsImlzUG9zc2libGVQcm90b3R5cGUiLCIkU3RyaW5nIiwid2VsbEtub3duU3ltYm9sIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJpdCIsIlByb3RvdHlwZSIsInRvT2JqZWN0IiwiY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImxlbmd0aE9mQXJyYXlMaWtlIiwiY3JlYXRlUHJvcGVydHkiLCJnZXRJdGVyYXRvciIsImdldEl0ZXJhdG9yTWV0aG9kIiwiJEFycmF5IiwiYXJyYXlMaWtlIiwiSVNfQ09OU1RSVUNUT1IiLCJhcmd1bWVudHNMZW5ndGgiLCJtYXBmbiIsIm1hcHBpbmciLCJzdGVwIiwiaXRlcmF0b3JNZXRob2QiLCJ0b0luZGV4ZWRPYmplY3QiLCJ0b0Fic29sdXRlSW5kZXgiLCJjcmVhdGVNZXRob2QiLCJJU19JTkNMVURFUyIsIiR0aGlzIiwiZWwiLCJmcm9tSW5kZXgiLCJpbmRleE9mIiwidW5jdXJyeVRoaXMiLCJhcnJheVNsaWNlIiwiY29tcGFyZWZuIiwibWlkZGxlIiwibGxlbmd0aCIsInJsZW5ndGgiLCJsaW5kZXgiLCJyaW5kZXgiLCJhbk9iamVjdCIsIml0ZXJhdG9yQ2xvc2UiLCJFTlRSSUVTIiwiSVRFUkFUT1IiLCJTQUZFX0NMT1NJTkciLCJjYWxsZWQiLCJpdGVyYXRvcldpdGhSZXR1cm4iLCJTS0lQX0NMT1NJTkciLCJJVEVSQVRJT05fU1VQUE9SVCIsIm9iamVjdCIsInN0cmluZ1NsaWNlIiwiVE9fU1RSSU5HX1RBR19TVVBQT1JUIiwiY2xhc3NvZlJhdyIsIlRPX1NUUklOR19UQUciLCJDT1JSRUNUX0FSR1VNRU5UUyIsInRhZyIsInRyeUdldCIsImNhbGxlZSIsImhhc093biIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJkZWZpbmVQcm9wZXJ0eU1vZHVsZSIsImV4Y2VwdGlvbnMiLCJmYWlscyIsIkYiLCJERVNDUklQVE9SUyIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsImJpdG1hcCIsIm1ha2VCdWlsdEluIiwiZGVzY3JpcHRvciIsImRlZmluZUdsb2JhbFByb3BlcnR5Iiwic2ltcGxlIiwiZ2xvYmFsIiwidW5zYWZlIiwibm9uQ29uZmlndXJhYmxlIiwibm9uV3JpdGFibGUiLCJkZWZpbmVCdWlsdEluIiwiRVhJU1RTIiwiQ1NTUnVsZUxpc3QiLCJDU1NTdHlsZURlY2xhcmF0aW9uIiwiQ1NTVmFsdWVMaXN0IiwiQ2xpZW50UmVjdExpc3QiLCJET01SZWN0TGlzdCIsIkRPTVN0cmluZ0xpc3QiLCJET01Ub2tlbkxpc3QiLCJEYXRhVHJhbnNmZXJJdGVtTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiY2xhc3NMaXN0IiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiRE9NVG9rZW5MaXN0UHJvdG90eXBlIiwiQ09OU1RSVUNUT1IiLCJNRVRIT0QiLCJQZWJibGUiLCJFTlZJUk9OTUVOVCIsIkRlbm8iLCJ2OCIsImNsYXNzb2YiLCJ1c2VyQWdlbnRTdGFydHNXaXRoIiwic3RyaW5nIiwiQnVuIiwiJEVycm9yIiwiVEVTVCIsIlY4X09SX0NIQUtSQV9TVEFDS19FTlRSWSIsIklTX1Y4X09SX0NIQUtSQV9TVEFDSyIsImRyb3BFbnRyaWVzIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJjbGVhckVycm9yU3RhY2siLCJFUlJPUl9TVEFDS19JTlNUQUxMQUJMRSIsImNhcHR1cmVTdGFja1RyYWNlIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsImlzRm9yY2VkIiwidGFyZ2V0UHJvcGVydHkiLCJzb3VyY2VQcm9wZXJ0eSIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJkb250Q2FsbEdldFNldCIsImZvcmNlZCIsInNoYW0iLCJOQVRJVkVfQklORCIsIkZ1bmN0aW9uUHJvdG90eXBlIiwiUmVmbGVjdCIsImFDYWxsYWJsZSIsInRoYXQiLCJnZXREZXNjcmlwdG9yIiwiUFJPUEVSIiwiQ09ORklHVVJBQkxFIiwidW5jdXJyeVRoaXNXaXRoQmluZCIsImdldE1ldGhvZCIsImlzTnVsbE9yVW5kZWZpbmVkIiwiSXRlcmF0b3JzIiwidXNpbmdJdGVyYXRvciIsIlYiLCJQIiwiZnVuYyIsImNoZWNrIiwiZ2V0QnVpbHRJbiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic3RvcmUiLCJmdW5jdGlvblRvU3RyaW5nIiwiaW5zcGVjdFNvdXJjZSIsImNhdXNlIiwiTkFUSVZFX1dFQUtfTUFQIiwic2hhcmVkIiwic2hhcmVkS2V5IiwiaGlkZGVuS2V5cyIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwiV2Vha01hcCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJlbmZvcmNlIiwiZ2V0dGVyRm9yIiwiVFlQRSIsImRvY3VtZW50QWxsIiwiY29uc3RydWN0IiwiY29uc3RydWN0b3JSZWdFeHAiLCJJTkNPUlJFQ1RfVE9fU1RSSU5HIiwiaXNDb25zdHJ1Y3Rvck1vZGVybiIsImlzQ29uc3RydWN0b3JMZWdhY3kiLCJyZXBsYWNlbWVudCIsImZlYXR1cmUiLCJkZXRlY3Rpb24iLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsIlJlc3VsdCIsInN0b3BwZWQiLCJSZXN1bHRQcm90b3R5cGUiLCJpdGVyYWJsZSIsInVuYm91bmRGdW5jdGlvbiIsIml0ZXJGbiIsIkFTX0VOVFJJRVMiLCJJU19SRUNPUkQiLCJJU19JVEVSQVRPUiIsIklOVEVSUlVQVEVEIiwic3RvcCIsImNhbGxGbiIsImtpbmQiLCJpbm5lclJlc3VsdCIsImlubmVyRXJyb3IiLCJJdGVyYXRvclByb3RvdHlwZSIsInNldFRvU3RyaW5nVGFnIiwicmV0dXJuVGhpcyIsIkl0ZXJhdG9yQ29uc3RydWN0b3IiLCJOQU1FIiwiRU5VTUVSQUJMRV9ORVhUIiwiJCIsIklTX1BVUkUiLCJGdW5jdGlvbk5hbWUiLCJjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yIiwiSXRlcmF0b3JzQ29yZSIsIlBST1BFUl9GVU5DVElPTl9OQU1FIiwiQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUiLCJCVUdHWV9TQUZBUklfSVRFUkFUT1JTIiwiS0VZUyIsIlZBTFVFUyIsIkl0ZXJhYmxlIiwiREVGQVVMVCIsIklTX1NFVCIsIkZPUkNFRCIsIkN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSIsIktFWSIsImdldEl0ZXJhdGlvbk1ldGhvZCIsIktJTkQiLCJkZWZhdWx0SXRlcmF0b3IiLCJJdGVyYWJsZVByb3RvdHlwZSIsIklOQ09SUkVDVF9WQUxVRVNfTkFNRSIsIm5hdGl2ZUl0ZXJhdG9yIiwiYW55TmF0aXZlSXRlcmF0b3IiLCJ2YWx1ZXMiLCJQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUiLCJhcnJheUl0ZXJhdG9yIiwidG9MZW5ndGgiLCJvYmoiLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZW5mb3JjZUludGVybmFsU3RhdGUiLCJnZXRJbnRlcm5hbFN0YXRlIiwiQ09ORklHVVJBQkxFX0xFTkdUSCIsIlRFTVBMQVRFIiwiYXJpdHkiLCJ0cnVuYyIsIm5vdGlmeSIsInRvZ2dsZSIsInByb21pc2UiLCJzYWZlR2V0QnVpbHRJbiIsIm1hY3JvdGFzayIsIlF1ZXVlIiwiSVNfSU9TIiwiSVNfSU9TX1BFQkJMRSIsIklTX1dFQk9TX1dFQktJVCIsIklTX05PREUiLCJNdXRhdGlvbk9ic2VydmVyIiwiV2ViS2l0TXV0YXRpb25PYnNlcnZlciIsIm1pY3JvdGFzayIsImZsdXNoIiwiZG9tYWluIiwiZXhpdCIsImhlYWQiLCJlbnRlciIsImNyZWF0ZVRleHROb2RlIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJQcm9taXNlQ2FwYWJpbGl0eSIsIiQkcmVzb2x2ZSIsIiQkcmVqZWN0IiwiJGRlZmF1bHQiLCJvYmplY3RLZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJJbmRleGVkT2JqZWN0IiwiJGFzc2lnbiIsIkEiLCJCIiwic3ltYm9sIiwiY2hyIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiUyIsImFjdGl2ZVhEb2N1bWVudCIsImRlZmluZVByb3BlcnRpZXNNb2R1bGUiLCJlbnVtQnVnS2V5cyIsImh0bWwiLCJQUk9UT1RZUEUiLCJTQ1JJUFQiLCJJRV9QUk9UTyIsIkVtcHR5Q29uc3RydWN0b3IiLCJzY3JpcHRUYWciLCJMVCIsIk51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgiLCJ3cml0ZSIsInRlbXAiLCJwYXJlbnRXaW5kb3ciLCJOdWxsUHJvdG9PYmplY3QiLCJBY3RpdmVYT2JqZWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJKUyIsIlByb3BlcnRpZXMiLCJWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyIsInByb3BzIiwiSUU4X0RPTV9ERUZJTkUiLCJ0b1Byb3BlcnR5S2V5IiwiJGRlZmluZVByb3BlcnR5IiwiJGdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkVOVU1FUkFCTEUiLCJXUklUQUJMRSIsIkF0dHJpYnV0ZXMiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIiLCJPYmplY3RQcm90b3R5cGUiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsInVuY3VycnlUaGlzQWNjZXNzb3IiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwiYVBvc3NpYmxlUHJvdG90eXBlIiwiQ09SUkVDVF9TRVRURVIiLCJwcmVmIiwidmFsIiwidmFsdWVPZiIsImdldE93blByb3BlcnR5TmFtZXNNb2R1bGUiLCJOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IiLCJWOF9WRVJTSU9OIiwiTmF0aXZlUHJvbWlzZVByb3RvdHlwZSIsIlNQRUNJRVMiLCJTVUJDTEFTU0lORyIsIk5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsIkZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SIiwiUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UiLCJHTE9CQUxfQ09SRV9KU19QUk9NSVNFIiwiRmFrZVByb21pc2UiLCJSRUpFQ1RJT05fRVZFTlQiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eSIsInByb21pc2VDYXBhYmlsaXR5IiwiY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uIiwidGFpbCIsImVudHJ5IiwiZGVmaW5lQnVpbHRJbkFjY2Vzc29yIiwiQ09OU1RSVUNUT1JfTkFNRSIsIkNvbnN0cnVjdG9yIiwiVEFHIiwidWlkIiwiU0hBUkVEIiwiY29weXJpZ2h0IiwibGljZW5zZSIsImFDb25zdHJ1Y3RvciIsImRlZmF1bHRDb25zdHJ1Y3RvciIsInRvSW50ZWdlck9ySW5maW5pdHkiLCJDT05WRVJUX1RPX1NUUklORyIsImZpcnN0Iiwic2Vjb25kIiwicG9zaXRpb24iLCJjb2RlQXQiLCJtYXhJbnQiLCJyZWdleE5vbkFTQ0lJIiwicmVnZXhTZXBhcmF0b3JzIiwiT1ZFUkZMT1dfRVJST1IiLCIkUmFuZ2VFcnJvciIsIlJhbmdlRXJyb3IiLCJkaWdpdFRvQmFzaWMiLCJhZGFwdCIsImRlbHRhIiwibnVtUG9pbnRzIiwiZmlyc3RUaW1lIiwiYmFzZU1pbnVzVE1pbiIsImJhc2UiLCJjb3VudGVyIiwiZXh0cmEiLCJ1Y3MyZGVjb2RlIiwiY3VycmVudFZhbHVlIiwiaW5wdXRMZW5ndGgiLCJiaWFzIiwiYmFzaWNMZW5ndGgiLCJoYW5kbGVkQ1BDb3VudCIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsInFNaW51c1QiLCJiYXNlTWludXNUIiwibGFiZWxzIiwiJGxvY2F0aW9uIiwiZGVmZXIiLCJwb3J0IiwidmFsaWRhdGVBcmd1bWVudHNMZW5ndGgiLCJzZXRJbW1lZGlhdGUiLCJjbGVhckltbWVkaWF0ZSIsIkRpc3BhdGNoIiwiTWVzc2FnZUNoYW5uZWwiLCJPTlJFQURZU1RBVEVDSEFOR0UiLCJydW5uZXIiLCJldmVudExpc3RlbmVyIiwiZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlciIsInByb3RvY29sIiwicG9ydDIiLCJwb3J0MSIsImltcG9ydFNjcmlwdHMiLCJtYXgiLCJtaW4iLCJpbnRlZ2VyIiwibnVtYmVyIiwiaXNTeW1ib2wiLCJvcmRpbmFyeVRvUHJpbWl0aXZlIiwiVE9fUFJJTUlUSVZFIiwiZXhvdGljVG9QcmltIiwidG9QcmltaXRpdmUiLCJwb3N0Zml4IiwicGFyYW1zMiIsInRvSlNPTiIsImhyZWYiLCJ1c2VybmFtZSIsImhhc2giLCJOQVRJVkVfU1lNQk9MIiwicGFzc2VkIiwicmVxdWlyZWQiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwiaW5zdGFsbEVycm9yQ2F1c2UiLCJpbnN0YWxsRXJyb3JTdGFjayIsIml0ZXJhdGUiLCJub3JtYWxpemVTdHJpbmdBcmd1bWVudCIsIiRBZ2dyZWdhdGVFcnJvciIsImVycm9ycyIsImlzSW5zdGFuY2UiLCJBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSIsImVycm9yc0FycmF5IiwiQWdncmVnYXRlRXJyb3IiLCIkaW5jbHVkZXMiLCJhZGRUb1Vuc2NvcGFibGVzIiwiZGVmaW5lSXRlcmF0b3IiLCJjcmVhdGVJdGVyUmVzdWx0T2JqZWN0IiwiQVJSQVlfSVRFUkFUT1IiLCJzZXRJbnRlcm5hbFN0YXRlIiwiaXRlcmF0ZWQiLCJBcmd1bWVudHMiLCJuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSIsInBlcmZvcm0iLCJhbGxTZXR0bGVkIiwiY2FwYWJpbGl0eSIsInByb21pc2VSZXNvbHZlIiwicmVtYWluaW5nIiwiYWxyZWFkeUNhbGxlZCIsInN0YXR1cyIsInJlYXNvbiIsIiRwcm9taXNlUmVzb2x2ZSIsIlBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIiwiUFJPTUlTRV9BTllfRVJST1IiLCJhbnkiLCJhbHJlYWR5UmVzb2x2ZWQiLCJhbHJlYWR5UmVqZWN0ZWQiLCJvblJlamVjdGVkIiwiSW50ZXJuYWwiLCJPd25Qcm9taXNlQ2FwYWJpbGl0eSIsIm5hdGl2ZVRoZW4iLCJzZXRTcGVjaWVzIiwiYW5JbnN0YW5jZSIsInNwZWNpZXNDb25zdHJ1Y3RvciIsInRhc2siLCJob3N0UmVwb3J0RXJyb3JzIiwiUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uIiwiUFJPTUlTRSIsIk5BVElWRV9QUk9NSVNFX1NVQkNMQVNTSU5HIiwiZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUiLCJQcm9taXNlQ29uc3RydWN0b3IiLCJQcm9taXNlUHJvdG90eXBlIiwibmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5IiwiRElTUEFUQ0hfRVZFTlQiLCJVTkhBTkRMRURfUkVKRUNUSU9OIiwiaXNUaGVuYWJsZSIsImNhbGxSZWFjdGlvbiIsInJlYWN0aW9uIiwiZXhpdGVkIiwib2siLCJmYWlsIiwicmVqZWN0aW9uIiwib25IYW5kbGVVbmhhbmRsZWQiLCJpc1JlamVjdCIsIm5vdGlmaWVkIiwicmVhY3Rpb25zIiwib25VbmhhbmRsZWQiLCJpc1VuaGFuZGxlZCIsInVud3JhcCIsImludGVybmFsUmVqZWN0IiwiaW50ZXJuYWxSZXNvbHZlIiwid3JhcHBlciIsImV4ZWN1dG9yIiwib25GdWxmaWxsZWQiLCJQcm9taXNlV3JhcHBlciIsIndyYXAiLCJvbkZpbmFsbHkiLCJpc0Z1bmN0aW9uIiwiY2FwYWJpbGl0eVJlamVjdCIsIlByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIiLCJDSEVDS19XUkFQUEVSIiwiQUNDRVBUX0FSR1VNRU5UUyIsImNhbGxiYWNrZm4iLCJ3aXRoUmVzb2x2ZXJzIiwiJGZyb21Db2RlUG9pbnQiLCJmcm9tQ29kZVBvaW50IiwiZWxlbWVudHMiLCJTVFJJTkdfSVRFUkFUT1IiLCJwb2ludCIsIkRPTUl0ZXJhYmxlcyIsIkFycmF5SXRlcmF0b3JNZXRob2RzIiwiQXJyYXlWYWx1ZXMiLCJoYW5kbGVQcm90b3R5cGUiLCJDb2xsZWN0aW9uUHJvdG90eXBlIiwiQ09MTEVDVElPTl9OQU1FIiwiTUVUSE9EX05BTUUiLCJVU0VfTkFUSVZFX1VSTCIsImRlZmluZUJ1aWx0SW5zIiwiJHRvU3RyaW5nIiwiYXJyYXlTb3J0IiwiVVJMX1NFQVJDSF9QQVJBTVMiLCJVUkxfU0VBUkNIX1BBUkFNU19JVEVSQVRPUiIsImdldEludGVybmFsUGFyYW1zU3RhdGUiLCJnZXRJbnRlcm5hbEl0ZXJhdG9yU3RhdGUiLCJuYXRpdmVGZXRjaCIsIk5hdGl2ZVJlcXVlc3QiLCJIZWFkZXJzIiwiUmVxdWVzdFByb3RvdHlwZSIsIkhlYWRlcnNQcm90b3R5cGUiLCIkcGFyc2VJbnQiLCJzaGlmdCIsInBsdXMiLCJWQUxJRF9IRVgiLCJwYXJzZUhleE9jdGV0IiwiTmFOIiwiZ2V0TGVhZGluZ09uZXMiLCJvY3RldCIsImNvdW50IiwibWFzayIsInV0ZjhEZWNvZGUiLCJvY3RldHMiLCJjb2RlUG9pbnQiLCJkZWNvZGVkQ2hhciIsImJ5dGVTZXF1ZW5jZUxlbmd0aCIsInNlcXVlbmNlSW5kZXgiLCJuZXh0Qnl0ZSIsInJlcGxhY2VtZW50cyIsInNlcmlhbGl6ZSIsIlVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yIiwiVVJMU2VhcmNoUGFyYW1zU3RhdGUiLCJwYXJzZU9iamVjdCIsInBhcnNlUXVlcnkiLCJiaW5kVVJMIiwidXBkYXRlIiwiZW50cnlJdGVyYXRvciIsImVudHJ5TmV4dCIsInF1ZXJ5IiwiYXR0cmlidXRlIiwiYXR0cmlidXRlcyIsInVwZGF0ZVVSTCIsIlVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yIiwiVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlIiwiYXBwZW5kIiwiJHZhbHVlIiwiZm91bmQiLCJib3VuZEZ1bmN0aW9uIiwiaGVhZGVyc0hhcyIsImhlYWRlcnNTZXQiLCJ3cmFwUmVxdWVzdE9wdGlvbnMiLCJoZWFkZXJzIiwiYm9keSIsImZldGNoIiwiUmVxdWVzdENvbnN0cnVjdG9yIiwiUmVxdWVzdCIsIiRVUkxTZWFyY2hQYXJhbXMiLCIkZGVsZXRlIiwiZGluZGV4IiwiZW50cmllc0xlbmd0aCIsIiRoYXMiLCJUSFJPV1NfV0lUSE9VVF9BUkdVTUVOVFMiLCJjYW5QYXJzZSIsIldST05HX0FSSVRZIiwidXJsU3RyaW5nIiwiRU9GIiwiYXJyYXlGcm9tIiwidG9BU0NJSSIsIlVSTFNlYXJjaFBhcmFtc01vZHVsZSIsImdldEludGVybmFsVVJMU3RhdGUiLCJnZXRJbnRlcm5hbFNlYXJjaFBhcmFtc1N0YXRlIiwiTmF0aXZlVVJMIiwibnVtYmVyVG9TdHJpbmciLCJJTlZBTElEX1NDSEVNRSIsIklOVkFMSURfSE9TVCIsIklOVkFMSURfUE9SVCIsIkFMUEhBIiwiQUxQSEFOVU1FUklDIiwiRElHSVQiLCJIRVhfU1RBUlQiLCJPQ1QiLCJERUMiLCJIRVgiLCJGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5UIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVF9FWENMVURJTkdfUEVSQ0VOVCIsIkxFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSIsIlRSQUlMSU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UiLCJUQUJfQU5EX05FV19MSU5FIiwic2VyaWFsaXplSG9zdCIsImNvbXByZXNzIiwiaWdub3JlMCIsImlwdjYiLCJtYXhJbmRleCIsIm1heExlbmd0aCIsImN1cnJTdGFydCIsImN1cnJMZW5ndGgiLCJmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZSIsIkMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQiLCJmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQiLCJwYXRoUGVyY2VudEVuY29kZVNldCIsInVzZXJpbmZvUGVyY2VudEVuY29kZVNldCIsInBlcmNlbnRFbmNvZGUiLCJzcGVjaWFsU2NoZW1lcyIsImZ0cCIsImZpbGUiLCJodHRwIiwiaHR0cHMiLCJ3cyIsIndzcyIsImlzV2luZG93c0RyaXZlTGV0dGVyIiwic3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlciIsInRoaXJkIiwiaXNTaW5nbGVEb3QiLCJzZWdtZW50IiwiU0NIRU1FX1NUQVJUIiwiU0NIRU1FIiwiTk9fU0NIRU1FIiwiU1BFQ0lBTF9SRUxBVElWRV9PUl9BVVRIT1JJVFkiLCJQQVRIX09SX0FVVEhPUklUWSIsIlJFTEFUSVZFIiwiUkVMQVRJVkVfU0xBU0giLCJTUEVDSUFMX0FVVEhPUklUWV9TTEFTSEVTIiwiU1BFQ0lBTF9BVVRIT1JJVFlfSUdOT1JFX1NMQVNIRVMiLCJBVVRIT1JJVFkiLCJIT1NUIiwiSE9TVE5BTUUiLCJQT1JUIiwiRklMRSIsIkZJTEVfU0xBU0giLCJGSUxFX0hPU1QiLCJQQVRIX1NUQVJUIiwiUEFUSCIsIkNBTk5PVF9CRV9BX0JBU0VfVVJMX1BBVEgiLCJRVUVSWSIsIkZSQUdNRU5UIiwiVVJMU3RhdGUiLCJpc0Jhc2UiLCJiYXNlU3RhdGUiLCJmYWlsdXJlIiwic3RhdGVPdmVycmlkZSIsImNvZGVQb2ludHMiLCJidWZmZXJDb2RlUG9pbnRzIiwicG9pbnRlciIsImJ1ZmZlciIsInNlZW5BdCIsInNlZW5CcmFja2V0Iiwic2VlblBhc3N3b3JkVG9rZW4iLCJzY2hlbWUiLCJwYXNzd29yZCIsImZyYWdtZW50IiwiY2Fubm90QmVBQmFzZVVSTCIsImlzU3BlY2lhbCIsImluY2x1ZGVzQ3JlZGVudGlhbHMiLCJlbmNvZGVkQ29kZVBvaW50cyIsInBhcnNlSG9zdCIsInNob3J0ZW5QYXRoIiwibnVtYmVyc1NlZW4iLCJpcHY0UGllY2UiLCJzd2FwcyIsInN3YXAiLCJhZGRyZXNzIiwicGllY2VJbmRleCIsInBhcnNlSVB2NiIsInBhcnRzTGVuZ3RoIiwibnVtYmVycyIsInBhcnQiLCJyYWRpeCIsImlwdjQiLCJwYXJ0cyIsInBhcnNlSVB2NCIsImNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCIsInBhdGhTaXplIiwic2V0SHJlZiIsImdldE9yaWdpbiIsIlVSTENvbnN0cnVjdG9yIiwiZ2V0UHJvdG9jb2wiLCJzZXRQcm90b2NvbCIsImdldFVzZXJuYW1lIiwic2V0VXNlcm5hbWUiLCJnZXRQYXNzd29yZCIsInNldFBhc3N3b3JkIiwiZ2V0SG9zdCIsInNldEhvc3QiLCJnZXRIb3N0bmFtZSIsInNldEhvc3RuYW1lIiwiaG9zdG5hbWUiLCJnZXRQb3J0Iiwic2V0UG9ydCIsImdldFBhdGhuYW1lIiwic2V0UGF0aG5hbWUiLCJnZXRTZWFyY2giLCJzZXRTZWFyY2giLCJnZXRTZWFyY2hQYXJhbXMiLCJnZXRIYXNoIiwic2V0SGFzaCIsIlVSTFByb3RvdHlwZSIsImFjY2Vzc29yRGVzY3JpcHRvciIsIm5hdGl2ZUNyZWF0ZU9iamVjdFVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIm5hdGl2ZVJldm9rZU9iamVjdFVSTCIsInJldm9rZU9iamVjdFVSTCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJkZWZpbml0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==