aem-core-components-contributions-react-core
Version:
AEM - React Wrapper components - for the OOTB AEM Core Components
2 lines • 30 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.cqCoreComponents=t():e.cqCoreComponents=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}({0:function(e,t){e.exports=require("react")},1:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),o=n.n(r);class s extends r.Component{render(){const e=(null!=this.props.componentTitle&&this.props.componentTitle.length>0?this.props.componentTitle+" - ":"")+(null!=this.props.emptyTextAppend?this.props.emptyTextAppend:s.DEFAULT_EMPTY_TEXT_LABEL);return this.renderPlaceHolder(e)}renderPlaceHolder(e){return o.a.createElement("div",{className:"cq-placeholder"+(null!=this.props.classAppend?" "+this.props.classAppend:"")},e)}}s.DEFAULT_EMPTY_TEXT_LABEL="Please configure the component";class i extends o.a.Component{constructor(e,t,n){super(e),this.baseCssCls=t,this.emptyPlaceHolderText=n}__hidePlaceHolder(){return this.props.hidePlaceHolder}__renderPlaceHolder(e,t){return o.a.createElement(s,{emptyTextAppend:t,componentTitle:e})}render(){const e=this.isEmpty();return o.a.createElement(o.a.Fragment,null,!e&&this.renderComponent(),e&&this.props.isInEditor&&!this.__hidePlaceHolder()&&this.__renderPlaceHolder(this.emptyPlaceHolderText))}}i.defaultProps={hidePlaceHolder:!1,isInEditor:!1}},2:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0),o=n.n(r),s=n(4);const i=e=>{const{to:t,isRouted:n,...r}=e;if(void 0===t)return o.a.createElement("a",Object.assign({href:"#"},e));return/^https?:\/\//.test(t)||!n?o.a.createElement("a",Object.assign({href:t},e)):o.a.createElement(s.Link,Object.assign({},r,{to:t}))}},20:function(e,t,n){e.exports=n(5)},4:function(e,t){e.exports=require("react-router-dom")},5:function(e,t,n){"use strict";n.r(t),n.d(t,"TitleV2IsEmptyFn",(function(){return l})),n.d(t,"TitleV2",(function(){return p}));var r=n(0),o=n.n(r),s=n(1),i=n(2);function l(e){return null==e.text||0===e.text.length}class p extends s.a{constructor(e){super(e,"cmp-title","TitleV2")}isEmpty(){return l(this.props)}generateLink(){return o.a.createElement(i.a,{className:this.baseCssCls+"__link",isRouted:this.props.routed,to:this.props.linkURL},this.props.text)}getContents(){return this.props.linkDisabled?o.a.createElement(o.a.Fragment,null,this.props.text):this.generateLink()}renderComponent(){return o.a.createElement("div",{className:this.baseCssCls},o.a.createElement(this.props.type||"h3",{className:this.baseCssCls+"__text"},this.getContents()))}}p.defaultProps={isInEditor:!1,hidePlaceHolder:!1}}})}));
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvLi9zcmMvY29tbW9uL3BsYWNlaG9sZGVyLnRzeCIsIndlYnBhY2s6Ly9jcUNvcmVDb21wb25lbnRzLy4vc3JjL0Fic3RyYWN0Q29yZUNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9yb3V0aW5nL1JvdXRlZExpbmsudHN4Iiwid2VicGFjazovL2NxQ29yZUNvbXBvbmVudHMvZXh0ZXJuYWwgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vY3FDb3JlQ29tcG9uZW50cy8uL3NyYy9hdXRob3JpbmcvdGl0bGUvdjIvVGl0bGVWMi50c3giXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwic2VsZiIsInRoaXMiLCJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImVtcHR5VGV4dCIsInByb3BzIiwiY29tcG9uZW50VGl0bGUiLCJsZW5ndGgiLCJlbXB0eVRleHRBcHBlbmQiLCJERUZBVUxUX0VNUFRZX1RFWFRfTEFCRUwiLCJyZW5kZXJQbGFjZUhvbGRlciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjbGFzc0FwcGVuZCIsIkNvbXBvbmVudCIsImJhc2VDc3NDbHMiLCJlbXB0eVBsYWNlSG9sZGVyVGV4dCIsInN1cGVyIiwiaGlkZVBsYWNlSG9sZGVyIiwidGl0bGUiLCJpc0VtcHR5IiwiRnJhZ21lbnQiLCJyZW5kZXJDb21wb25lbnQiLCJpc0luRWRpdG9yIiwiX19oaWRlUGxhY2VIb2xkZXIiLCJfX3JlbmRlclBsYWNlSG9sZGVyIiwiZGVmYXVsdFByb3BzIiwiUm91dGVkTGluayIsInRvIiwiaXNSb3V0ZWQiLCJvdGhlclByb3BzIiwidW5kZWZpbmVkIiwiYXNzaWduIiwiaHJlZiIsInRlc3QiLCJUaXRsZVYySXNFbXB0eUZuIiwidGV4dCIsIlRpdGxlVjIiLCJyb3V0ZWQiLCJsaW5rVVJMIiwibGlua0Rpc2FibGVkIiwiZ2VuZXJhdGVMaW5rIiwidHlwZSIsImdldENvbnRlbnRzIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLEdBQUlILEdBQ2UsaUJBQVpDLFFBQ2RBLFFBQTBCLGlCQUFJRCxJQUU5QkQsRUFBdUIsaUJBQUlDLElBUjdCLENBU21CLG9CQUFUSyxLQUF1QkEsS0FBT0MsTUFBTSxXQUM5QyxPLFlDVEUsSUFBSUMsRUFBbUIsR0FHdkIsU0FBU0MsRUFBb0JDLEdBRzVCLEdBQUdGLEVBQWlCRSxHQUNuQixPQUFPRixFQUFpQkUsR0FBVVIsUUFHbkMsSUFBSUMsRUFBU0ssRUFBaUJFLEdBQVksQ0FDekNDLEVBQUdELEVBQ0hFLEdBQUcsRUFDSFYsUUFBUyxJQVVWLE9BTkFXLEVBQVFILEdBQVVJLEtBQUtYLEVBQU9ELFFBQVNDLEVB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UVgsYUFBZSxDQUNuQkgsWUFBWSxFQUNaTCxpQkFBaUIiLCJmaWxlIjoiVGl0bGVWMi5qcyIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcImNxQ29yZUNvbXBvbmVudHNcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiY3FDb3JlQ29tcG9uZW50c1wiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjApO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwiLypcbiAqICBDb3B5cmlnaHQgMjAyMCBBZG9iZVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmV4cG9ydCBjbGFzcyBFZGl0b3JQbGFjZUhvbGRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBjb25zdCBwYXJ0MSA9ICh0aGlzLnByb3BzLmNvbXBvbmVudFRpdGxlICE9IG51bGwgJiYgdGhpcy5wcm9wcy5jb21wb25lbnRUaXRsZS5sZW5ndGggPiAwKSA/IHRoaXMucHJvcHMuY29tcG9uZW50VGl0bGUgKyAnIC0gJyA6ICcnO1xuICAgICAgICBjb25zdCBwYXJ0MiA9ICh0aGlzLnByb3BzLmVtcHR5VGV4dEFwcGVuZCAhPSBudWxsKSA/IHRoaXMucHJvcHMuZW1wdHlUZXh0QXBwZW5kIDogRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMO1xuICAgICAgICBjb25zdCBlbXB0eVRleHQgPSBwYXJ0MSArIHBhcnQyO1xuICAgICAgICByZXR1cm4gKHRoaXMucmVuZGVyUGxhY2VIb2xkZXIoZW1wdHlUZXh0KSk7XG4gICAgfVxuICAgIHJlbmRlclBsYWNlSG9sZGVyKGVtcHR5VGV4dCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7IGNsYXNzTmFtZTogJ2NxLXBsYWNlaG9sZGVyJyArICh0aGlzLnByb3BzLmNsYXNzQXBwZW5kICE9IG51bGwgPyAnICcgKyB0aGlzLnByb3BzLmNsYXNzQXBwZW5kIDogJycpIH0sIGVtcHR5VGV4dCk7XG4gICAgfVxufVxuRWRpdG9yUGxhY2VIb2xkZXIuREVGQVVMVF9FTVBUWV9URVhUX0xBQkVMID0gJ1BsZWFzZSBjb25maWd1cmUgdGhlIGNvbXBvbmVudCc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljR3hoWTJWb2IyeGtaWEl1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SndiR0ZqWldodmJHUmxjaTUwYzNnaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlEwRTdPenM3T3pzN096czdPenM3TzBkQlkwYzdRVUZEU0N4UFFVRlBMRXRCUVVzc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eE5RVUZOTEU5QlFVOHNRMEZCUXp0QlFWRjJReXhOUVVGTkxFOUJRVThzYVVKQlFXdENMRk5CUVZFc1UwRkJaME03U1VGSmJrVXNUVUZCVFR0UlFVTkdMRTFCUVUwc1MwRkJTeXhIUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4alFVRmpMRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhqUVVGakxFZEJRVWtzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkROMGtzVFVGQlRTeExRVUZMTEVkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExHVkJRV1VzU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMR2xDUVVGcFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRE8xRkJRM1JKTEUxQlFVMHNVMEZCVXl4SFFVRkhMRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU03VVVGRmFFTXNUMEZCVHl4RFFVTklMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkRjRU1zUTBGQlFUdEpRVU5NTEVOQlFVTTdTVUZIUkN4cFFrRkJhVUlzUTBGQlF5eFRRVUZwUWp0UlFVTXZRaXhQUVVGUExEWkNRVU5JTEZOQlFWTXNSVUZCUlN4blFrRkJaMElzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1YwRkJWeXhKUVVGSkxFbEJRVWtzUTBGQlFTeERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkRhRWNzVTBGQlV5eERRVU5TTEVOQlFVTTdTVUZEV0N4RFFVRkRPenRCUVd4Q1RTd3dRMEZCZDBJc1IwRkJWeXhuUTBGQlowTXNRMEZCUXlKOSIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEVkaXRvclBsYWNlSG9sZGVyIH0gZnJvbSBcIi4vY29tbW9uL3BsYWNlaG9sZGVyXCI7XG4vKipcbiAqIEFic3RyYWN0Q29yZUNvbXBvbmVudCAtIHByb3ZpZGVzIGFic3RyYWN0aW9uIGFuZCBoZWxwZXIgbWV0aG9kcyB0byBzaG93IGEgcGxhY2Vob2xkZXIgaWYgdGhlIGNvbXBvbmVudCBpcyBlbXB0eSBhbmQgYXV0aG9yIG1vZGUgaXMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdENvcmVDb21wb25lbnQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEJhc2UgQ29uc3RydWN0b3JcbiAgICAgKiBAcGFyYW0gcHJvcHMgY29tcG9uZW50IHByb3BlcnRpZXNcbiAgICAgKiBAcGFyYW0gYmFzZUNzc0NscyB0aGUgYmFzZSBCRU0gY3NzIGNsYXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBjb21wb25lbnRcbiAgICAgKiBAcGFyYW0gZW1wdHlQbGFjZUhvbGRlclRleHQgZW1wdHkgcGxhY2Vob2xkZXIgbGFiZWwgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBuZWVkcyB0byBiZSBjb25maWd1cmVkIGluIGF1dGhvciBtb2RlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJvcHMsIGJhc2VDc3NDbHMsIGVtcHR5UGxhY2VIb2xkZXJUZXh0KSB7XG4gICAgICAgIHN1cGVyKHByb3BzKTtcbiAgICAgICAgdGhpcy5iYXNlQ3NzQ2xzID0gYmFzZUNzc0NscztcbiAgICAgICAgdGhpcy5lbXB0eVBsYWNlSG9sZGVyVGV4dCA9IGVtcHR5UGxhY2VIb2xkZXJUZXh0O1xuICAgIH1cbiAgICBfX2hpZGVQbGFjZUhvbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaGlkZVBsYWNlSG9sZGVyO1xuICAgIH1cbiAgICBfX3JlbmRlclBsYWNlSG9sZGVyKHRpdGxlLCBlbXB0eVRleHQpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KEVkaXRvclBsYWNlSG9sZGVyLCB7IGVtcHR5VGV4dEFwcGVuZDogZW1wdHlUZXh0LCBjb21wb25lbnRUaXRsZTogdGl0bGUgfSkpO1xuICAgIH1cbiAgICByZW5kZXIoKSB7XG4gICAgICAgIGNvbnN0IGlzRW1wdHkgPSB0aGlzLmlzRW1wdHkoKTtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICAgICAgIWlzRW1wdHkgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudCgpLFxuICAgICAgICAgICAgKGlzRW1wdHkgJiYgdGhpcy5wcm9wcy5pc0luRWRpdG9yICYmICF0aGlzLl9faGlkZVBsYWNlSG9sZGVyKCkpICYmIHRoaXMuX19yZW5kZXJQbGFjZUhvbGRlcih0aGlzLmVtcHR5UGxhY2VIb2xkZXJUZXh0KSkpO1xuICAgIH1cbn1cbkFic3RyYWN0Q29yZUNvbXBvbmVudC5kZWZhdWx0UHJvcHMgPSB7XG4gICAgaGlkZVBsYWNlSG9sZGVyOiBmYWxzZSxcbiAgICBpc0luRWRpdG9yOiBmYWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVFXSnpkSEpoWTNSRGIzSmxRMjl0Y0c5dVpXNTBMblJ6ZUNKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdPenM3T3pzN096czdPenM3UjBGalJ6dEJRVVZJTEU5QlFVOHNTMEZCU3l4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVNeFFpeFBRVUZQTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zVFVGQlRTeHpRa0ZCYzBJc1EwRkJRenRCUVZsMlJEczdSMEZGUnp0QlFVTklMRTFCUVUwc1QwRkJaMElzY1VKQlFUQkdMRk5CUVZFc1MwRkJTeXhEUVVGRExGTkJRWE5DTzBsQlZXaEtPenM3T3p0UFFVdEhPMGxCUTBnc1dVRkJjMElzUzBGQlZ5eEZRVUZETEZWQlFXbENMRVZCUVVNc2IwSkJRVEpDTzFGQlF6TkZMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVU5pTEVsQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1ZVRkJWU3hEUVVGRE8xRkJRemRDTEVsQlFVa3NRMEZCUXl4dlFrRkJiMElzUjBGQlJ5eHZRa0ZCYjBJc1EwRkJRenRKUVVOeVJDeERRVUZETzBsQldVOHNhVUpCUVdsQ08xRkJRM0pDTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhsUVVGbExFTkJRVU03U1VGRGRFTXNRMEZCUXp0SlFVVlBMRzFDUVVGdFFpeERRVUZETEV0QlFXRXNSVUZCUlN4VFFVRnBRanRSUVVONFJDeFBRVUZOTEVOQlEwWXNiMEpCUVVNc2FVSkJRV2xDTEVsQlEyUXNaVUZCWlN4RlFVRkZMRk5CUVZNc1JVRkRNVUlzWTBGQll5eEZRVUZGTEV0QlFVc3NSMEZEZGtJc1EwRkRUQ3hEUVVGQk8wbEJRMHdzUTBGQlF6dEpRVVZFTEUxQlFVMDdVVUZEUml4TlFVRk5MRTlCUVU4c1IwRkJWeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdVVUZGZGtNc1QwRkJUeXhEUVVOSU8xbEJRMDBzUTBGQlF5eFBRVUZQTzJkQ1FVTk9MRWxCUVVrc1EwRkJReXhsUVVGbExFVkJRVVU3V1VGSGRFSXNRMEZCUXl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFZRVUZWTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXh0UWtGQmJVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNRMEZGTTBnc1EwRkRUaXhEUVVGQk8wbEJRMHdzUTBGQlF6czdRVUY0UkdFc2EwTkJRVmtzUjBGQlJ6dEpRVU42UWl4bFFVRmxMRVZCUVVVc1MwRkJTenRKUVVOMFFpeFZRVUZWTEVWQlFVVXNTMEZCU3p0RFFVTndRaXhEUVVGREluMD0iLCIvKlxuICogIENvcHlyaWdodCAyMDIwIEFkb2JlXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTGluayBhcyBSb3V0ZXJMaW5rIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5leHBvcnQgY29uc3QgUm91dGVkTGluayA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgdG8sIGlzUm91dGVkLCAuLi5vdGhlclByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAodG8gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7IGhyZWY6ICcjJyB9LCBwcm9wcykpO1xuICAgIH1cbiAgICBjb25zdCBpc0V4dGVybmFsID0gL15odHRwcz86XFwvXFwvLy50ZXN0KHRvKTtcbiAgICByZXR1cm4gaXNFeHRlcm5hbCB8fCAhaXNSb3V0ZWQgP1xuICAgICAgICAoUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwgT2JqZWN0LmFzc2lnbih7IGhyZWY6IHRvIH0sIHByb3BzKSkpXG4gICAgICAgIDpcbiAgICAgICAgICAgIChSZWFjdC5jcmVhdGVFbGVtZW50KFJvdXRlckxpbmssIE9iamVjdC5hc3NpZ24oe30sIG90aGVyUHJvcHMsIHsgdG86IHRvIH0pKSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVW05MWRHVmtUR2x1YXk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbEp2ZFhSbFpFeHBibXN1ZEhONElsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN096czdPenM3T3p0SFFXTkhPMEZCUlVnc1QwRkJUeXhMUVVGTExFMUJRVTBzVDBGQlR5eERRVUZETzBGQlF6RkNMRTlCUVU4c1JVRkJReXhKUVVGSkxFbEJRVWtzVlVGQlZTeEZRVUZETEUxQlFVMHNhMEpCUVd0Q0xFTkJRVU03UVVGUGNFUXNUVUZCVFN4RFFVRkRMRTFCUVUwc1ZVRkJWU3hIUVVGSExFTkJRVU1zUzBGQlpTeEZRVUZGTEVWQlFVVTdTVUZETVVNc1RVRkJUU3hGUVVGRExFVkJRVVVzUlVGQlJTeFJRVUZSTEVWQlFVVXNSMEZCUnl4VlFVRlZMRVZCUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03U1VGRk5VTXNTVUZCUnl4RlFVRkZMRXRCUVVzc1UwRkJVeXhGUVVGRE8xRkJRMmhDTEU5QlFVOHNlVU5CUVVjc1NVRkJTU3hGUVVGRkxFZEJRVWNzU1VGRFdDeExRVUZMTEVWQlExZ3NRMEZCUXp0TFFVTk9PMGxCUTBRc1RVRkJUU3hWUVVGVkxFZEJRVWNzWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRKUVVVelF5eFBRVUZQTEZWQlFWVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRU3hEUVVGRE8xRkJRek5DTEVOQlFVTXNlVU5CUTBjc1NVRkJTU3hGUVVGRkxFVkJRVVVzU1VGRFNpeExRVUZMTEVWQlExZ3NRMEZCUXp0UlFVTklMRU5CUVVNN1dVRkRSQ3hEUVVGRkxHOUNRVUZETEZWQlFWVXNiMEpCUVVzc1ZVRkJWU3hKUVVOa0xFVkJRVVVzUlVGQlJTeEZRVUZGTEVsQlEyeENMRU5CUVVNc1EwRkJRVHRCUVVOWUxFTkJRVU1zUTBGQlF5SjkiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yb3V0ZXItZG9tXCIpOyIsIi8qXG4gKiAgQ29weXJpZ2h0IDIwMjAgQWRvYmVcbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvcmVDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vLi4vQWJzdHJhY3RDb3JlQ29tcG9uZW50XCI7XG5pbXBvcnQgeyBSb3V0ZWRMaW5rIH0gZnJvbSBcIi4uLy4uLy4uL3JvdXRpbmcvUm91dGVkTGlua1wiO1xuZXhwb3J0IGZ1bmN0aW9uIFRpdGxlVjJJc0VtcHR5Rm4ocHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHMudGV4dCA9PSBudWxsIHx8IHByb3BzLnRleHQubGVuZ3RoID09PSAwO1xufVxuZXhwb3J0IGNsYXNzIFRpdGxlVjIgZXh0ZW5kcyBBYnN0cmFjdENvcmVDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICAgIHN1cGVyKHByb3BzLCAnY21wLXRpdGxlJywgJ1RpdGxlVjInKTtcbiAgICB9XG4gICAgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIFRpdGxlVjJJc0VtcHR5Rm4odGhpcy5wcm9wcyk7XG4gICAgfVxuICAgIGdlbmVyYXRlTGluaygpIHtcbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJvdXRlZExpbmssIHsgY2xhc3NOYW1lOiB0aGlzLmJhc2VDc3NDbHMgKyAnX19saW5rJywgaXNSb3V0ZWQ6IHRoaXMucHJvcHMucm91dGVkLCB0bzogdGhpcy5wcm9wcy5saW5rVVJMIH0sIHRoaXMucHJvcHMudGV4dCkpO1xuICAgIH1cbiAgICBnZXRDb250ZW50cygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb3BzLmxpbmtEaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVMaW5rKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCB0aGlzLnByb3BzLnRleHQpKTtcbiAgICB9XG4gICAgcmVuZGVyQ29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgeyBjbGFzc05hbWU6IHRoaXMuYmFzZUNzc0NscyB9LCBSZWFjdC5jcmVhdGVFbGVtZW50KHRoaXMucHJvcHMudHlwZSB8fCAnaDMnLCB7XG4gICAgICAgICAgICBjbGFzc05hbWU6IHRoaXMuYmFzZUNzc0NscyArICdfX3RleHQnLFxuICAgICAgICB9LCB0aGlzLmdldENvbnRlbnRzKCkpKSk7XG4gICAgfVxufVxuVGl0bGVWMi5kZWZhdWx0UHJvcHMgPSB7XG4gICAgaXNJbkVkaXRvcjogZmFsc2UsXG4gICAgaGlkZVBsYWNlSG9sZGVyOiBmYWxzZVxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVZHbDBiR1ZXTWk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbFJwZEd4bFZqSXVkSE40SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3T3pzN096czdPenRIUVdOSE8wRkJSVWdzVDBGQlR5eExRVUZMTEUxQlFVMHNUMEZCVHl4RFFVRkRPMEZCUXpGQ0xFOUJRVThzUlVGQlF5eHhRa0ZCY1VJc1JVRkJjVUlzVFVGQlRTeG5RMEZCWjBNc1EwRkJRenRCUVVWNlJpeFBRVUZQTEVWQlFVTXNWVUZCVlN4RlFVRkRMRTFCUVUwc05rSkJRVFpDTEVOQlFVTTdRVUZUZGtRc1RVRkJUU3hWUVVGVkxHZENRVUZuUWl4RFFVRkRMRXRCUVd0Q08wbEJReTlETEU5QlFVOHNTMEZCU3l4RFFVRkRMRWxCUVVrc1NVRkJTU3hKUVVGSkxFbEJRVWtzUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM3BFTEVOQlFVTTdRVUZGUkN4TlFVRk5MRTlCUVU4c1QwRkJjMFVzVTBGQlVTeHhRa0ZCYlVNN1NVRlBNVWdzV1VGQldTeExRVUZaTzFGQlEzQkNMRXRCUVVzc1EwRkJReXhMUVVGTExFVkJRVVVzVjBGQlZ5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMGxCUTNwRExFTkJRVU03U1VGRlJDeFBRVUZQTzFGQlEwZ3NUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1NVRkRlRU1zUTBGQlF6dEpRVVZFTEZsQlFWazdVVUZEVWl4UFFVRlBMRU5CUTBnc2IwSkJRVU1zVlVGQlZTeEpRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGRkJRVkVzUlVGQlJTeFJRVUZSTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhKUVVOcVJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkRVQ3hEUVVOb1FpeERRVUZCTzBsQlEwd3NRMEZCUXp0SlFVVkVMRmRCUVZjN1VVRkZVQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4WlFVRlpMRVZCUVVNN1dVRkRla0lzVDBGQlR5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNN1UwRkRPVUk3VVVGRlJDeFBRVUZQTEVOQlEwZ3NNRU5CUTBzc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlEycENMRU5CUTA0c1EwRkJRVHRKUVVOTUxFTkJRVU03U1VGRlJDeGxRVUZsTzFGQlJWZ3NUMEZCVHl4RFFVTklMRFpDUVVGTExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SlFVVjJRaXhMUVVGTExFTkJRVU1zWVVGQllTeERRVU5zUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlEzQkNPMWxCUTBrc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NVVUZCVVR0VFFVTjRReXhGUVVORUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZEY2tJc1EwRkhTQ3hEUVVOVUxFTkJRVUU3U1VGRFRDeERRVUZET3p0QlFXeEVZU3h2UWtGQldTeEhRVUZITzBsQlEzcENMRlZCUVZVc1JVRkJSU3hMUVVGTE8wbEJRMnBDTEdWQlFXVXNSVUZCUlN4TFFVRkxPME5CUTNwQ0xFTkJRVU1pZlE9PSJdLCJzb3VyY2VSb290IjoiIn0=