UNPKG

40.1 kBJavaScriptView Raw
1module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=17)}([function(e,t){e.exports=require("prop-types")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("react")},function(e,t){e.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t){e.exports=require("./representation-html")},function(e,t){e.exports=require("we-edit")},function(e,t){e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},function(e,t){e.exports=require("@babel/runtime/helpers/extends")},function(e,t){e.exports=require("./representation-pagination")},function(e,t){e.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(e,t){e.exports=require("memoize-one")},function(e,t){e.exports=require("@babel/runtime/helpers/slicedToArray")},function(e,t){e.exports=require("@babel/runtime/helpers/get")},function(e,t,r){"use strict";r.r(t);var n=r(10),o=r.n(n),i=r(4),a=r.n(i),s=r(7),u=r.n(s),c=r(5),l=r.n(c),p=r(3),f=r.n(p),h=r(6),y=r.n(h),b=r(1),g=r.n(b),d=r(2),O=r.n(d),m=r(0),v=r.n(m),P=r(9),j=r(12),w=r.n(j),x=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"render",value:function(){return O.a.createElement(d.Fragment,null,this.props.children,"\r\n")}}]),t}(P.dom.Paragraph);function E(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var C=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?E(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):E(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},P.dom,{Paragraph:x}),D=r(8),k=r(11),S=r.n(k),T=r(13),q=r.n(T),z=r(14),N=r.n(z),H=r(15),M=r.n(H),R=r(16),F=r.n(R);function _(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var A=D.Editors.Group,W=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),t}(D.Editors.Document.defaultProps.canvas.type);g()(W,"Canvas",function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"positionPages",value:function(){for(var e,r=this.props.document,n=r.props.margin.top,o=void 0===n?0:n,i=M()(r.pages,1),a=i[0].lines,s=arguments.length,u=new Array(s),c=0;c<s;c++)u[c]=arguments[c];return O.a.createElement(d.Fragment,null,(e=F()(f()(t.prototype),"positionPages",this)).call.apply(e,[this].concat(u)),O.a.createElement(A,{y:o},O.a.createElement(B,{count:a.length,lineHeight:a[0].props.height})))}}]),t}(W.Canvas));var B=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"render",value:function(){var e=this.props,t=e.count,r=e.lineHeight,n=this.context,o=n.fonts,i=n.size,a=n.activeColor,s=n.measure,u=n.lineNo,c=s.defaultStyle.height-s.defaultStyle.descent,l=s.stringWidth("999")+2;return O.a.createElement(d.Fragment,null,O.a.createElement(V,{height:r,fill:a}),u&&O.a.createElement("g",{style:{opacity:.5},fontFamily:o,fontSize:"".concat(i,"pt"),className:"lineNos"},O.a.createElement("rect",{width:l,height:t*r,fill:"lightgray"}),new Array(t).fill(0).map((function(e,t){return O.a.createElement("text",{key:t,x:l-s.stringWidth(t+1)-2,y:t*r+c},t+1)}))))}}]),t}(d.Component);g()(B,"contextTypes",{fonts:v.a.string,size:v.a.number,activeColor:v.a.string,measure:v.a.object,lineNo:v.a.bool});var V=Object(P.whenSelectionChange)((function(e){var t=e.selection;if(t){if(t.isRange)return{isRange:!0};var r=t.props("page");if(r)return{active:r.line}}return{}}))((function(e){e.dispatch;var t=e.active,r=e.height,n=e.isRange,i=o()(e,["dispatch","active","height","isRange"]);return!n&&O.a.createElement("rect",function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?_(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):_(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},i,{height:r,y:t*r,width:99999,style:{opacity:.5,cursor:"text"}}))}));function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function G(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?I(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var J=function(e){function t(){var e,r;a()(this,t);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return r=l()(this,(e=f()(t)).call.apply(e,[this].concat(o))),g()(q()(r),"getMeasure",N()((function(e,t,r){return new e({fonts:t,size:r})}))),r}return y()(t,e),u()(t,[{key:"getChildContext",value:function(){var e=this.props,t=e.colorful,r=e.fonts,n=void 0===r?"arial":r,o=e.size,i=void 0===o?11:o,a=e.lineHeight,s=void 0===a?"140%":a,u=e.background,c=e.activeColor,l=void 0===c?"lightblue":c,p=e.lineNo,f=void 0===p||p;return{colorful:t,fonts:n,size:i,lineHeight:s,background:u,activeColor:l,measure:this.getMeasure(this.context.Measure,n,i),lineNo:f}}},{key:"render",value:function(){var e=this.props,t=e.lineNo,r=void 0===t||t,n=(e.colorful,e.fonts,e.size,e.lineHeight,e.background,e.activeColor,o()(e,["lineNo","colorful","fonts","size","lineHeight","background","activeColor"])),i=n.margin||D.Editors.Document.defaultProps.margin,a=i.left,s=void 0===a?0:a,u=o()(i,["left"]);return r&&(s+=this.getChildContext().measure.stringWidth("999")+2),O.a.createElement(D.Editors.Document,S()({},n,{margin:G({},u,{top:0,left:s})}))}}]),t}(d.Component);g()(J,"displayName","text-document"),g()(J,"propTypes",{colorful:v.a.bool,fonts:v.a.string,size:v.a.number,lineHeight:v.a.string,color:v.a.string,wrap:v.a.bool,background:v.a.string,activeColor:v.a.string,lineNo:v.a.bool}),g()(J,"defaultProps",{canvas:O.a.createElement(W,null)}),g()(J,"childContextTypes",{colorful:v.a.bool,fonts:v.a.string,size:v.a.number,lineHeight:v.a.string,color:v.a.string,wrap:v.a.bool,background:v.a.string,activeColor:v.a.string,measure:v.a.object,lineNo:v.a.bool}),g()(J,"contextTypes",{Measure:v.a.func});var K=D.Editors.Paragraph,L=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"render",value:function(){var e=this.context,t=e.lineHeight,r=void 0===t?"140%":t,n=e.fonts,i=e.size,a=this.props,s=(a.spacing,a.numbering,a.indent,o()(a,["spacing","numbering","indent"]));return O.a.createElement(K,S()({},s,{spacing:{lineHeight:r},defaultStyle:{fonts:n,size:i}}))}}]),t}(d.Component);g()(L,"contextTypes",{lineHeight:v.a.string,fonts:v.a.string,size:v.a.number});var Q=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"render",value:function(){var e=this.props,t=e.color,r=e.vanish,n=e.id,o=e.children,i=e.hash,a=this.context,s={fonts:a.fonts,size:a.size,vanish:r,id:n,children:o,hash:i};return a.colorful&&(s.color=t),O.a.createElement(D.Editors.Text,s)}}]),t}(d.Component);function U(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}g()(Q,"contextTypes",{colorful:v.a.bool,fonts:v.a.string,size:v.a.number});var X=Object.keys(D.Editors).reduce((function(e,t){try{e[t]=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),t}(D.Editors[t])}catch(e){console.error(e)}return e}),{}),Y=function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?U(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):U(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},X,{Document:J,Paragraph:L,Text:Q,Table:X.Container,Row:X.Container,Cell:X.Container,Image:function(){return null}});function Z(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var $=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"output",value:function(e){e.pipe(this.stream)}}]),t}(P.Emitter.Format.Base);function ee(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}g()($,"defaultProps",function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Z(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Z(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},P.Emitter.Format.Base.defaultProps,{representation:"text",type:"text",name:"Plain Text",ext:"txt"})),r.d(t,"default",(function(){return te}));var te=function(e){function t(){return a()(this,t),l()(this,f()(t).apply(this,arguments))}return y()(t,e),u()(t,[{key:"render",value:function(){var e=this.props,t=e.ViewerTypes,r=void 0===t?C:t,n=e.EditorTypes,i=void 0===n?Y:n,a=o()(e,["ViewerTypes","EditorTypes"]);return O.a.createElement(w.a,function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ee(r,!0).forEach((function(t){g()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ee(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({ViewerTypes:r,EditorTypes:i},a))}}]),t}(P.Representation.Base);g()(te,"displayName","text"),g()(te,"propTypes",{type:v.a.string.isRequired}),g()(te,"defaultProps",{type:"text"}),g()(te,"Output",$),function(e){var t=e.install.bind(e);e.install=function(){t.apply(void 0,arguments),e.Output.install()};var r=e.uninstall.bind(e);e.uninstall=function(){r.apply(void 0,arguments),e.Output.uninstall()}}(te),te.install()}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0UHJvdG90eXBlT2ZcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0c1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3NcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLWh0bWxcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3ZS1lZGl0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24tcGFnaW5hdGlvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXNzZXJ0VGhpc0luaXRpYWxpemVkXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibWVtb2l6ZS1vbmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFwiIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtcmVwcmVzZW50YXRpb24tdGV4dC9zcmMvZG9tL3BhcmFncmFwaC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXRleHQvc3JjL2RvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXRleHQvc3JjL2RvbS9lZGl0L3Jlc3BvbnNpYmxlLWNhbnZhcy5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXRleHQvc3JjL2RvbS9lZGl0L2RvY3VtZW50LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtcmVwcmVzZW50YXRpb24tdGV4dC9zcmMvZG9tL2VkaXQvcGFyYWdyYXBoLmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtcmVwcmVzZW50YXRpb24tdGV4dC9zcmMvZG9tL2VkaXQvdGV4dC5qcyIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy93ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXRleHQvc3JjL2RvbS9lZGl0L2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtcmVwcmVzZW50YXRpb24tdGV4dC9zcmMvb3V0cHV0L2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtcmVwcmVzZW50YXRpb24tdGV4dC9zcmMvaW5kZXguanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJyZXF1aXJlIiwiX18kMSIsInRoaXMiLCJwcm9wcyIsImNoaWxkcmVuIiwiZG9tIiwiUGFyYWdyYXBoIiwiR3JvdXAiLCJFZGl0b3JzIiwiTGluZVJlc3BvbnNpYmxlQ2FudmFzIiwiRG9jdW1lbnQiLCJkZWZhdWx0UHJvcHMiLCJjYW52YXMiLCJ0eXBlIiwiZG9jdW1lbnQiLCJtYXJnaW4iLCJ0b3AiLCJwYWdlcyIsImxpbmVzIiwiYXJncyIsInkiLCJjb3VudCIsImxlbmd0aCIsImxpbmVIZWlnaHQiLCJoZWlnaHQiLCJDYW52YXMiLCJMaW5lTm9zIiwiY29udGV4dCIsImZvbnRzIiwic2l6ZSIsImFjdGl2ZUNvbG9yIiwibWVhc3VyZSIsImxpbmVObyIsImJhc2VsaW5lIiwiZGVmYXVsdFN0eWxlIiwiZGVzY2VudCIsImxpbmVOb1dpZHRoIiwic3RyaW5nV2lkdGgiLCJBY3RpdmVMaW5lTm8iLCJmaWxsIiwic3R5bGUiLCJvcGFjaXR5IiwiZm9udEZhbWlseSIsImZvbnRTaXplIiwiY2xhc3NOYW1lIiwid2lkdGgiLCJBcnJheSIsIm1hcCIsImEiLCJ4IiwiQ29tcG9uZW50IiwiUHJvcFR5cGVzIiwic3RyaW5nIiwibnVtYmVyIiwiYm9vbCIsIndoZW5TZWxlY3Rpb25DaGFuZ2UiLCJzZWxlY3Rpb24iLCJpc1JhbmdlIiwicGFnZSIsImFjdGl2ZSIsImxpbmUiLCJkaXNwYXRjaCIsImN1cnNvciIsIm1lbW9pemUiLCJNZWFzdXJlIiwiY29sb3JmdWwiLCJiYWNrZ3JvdW5kIiwiZ2V0TWVhc3VyZSIsImxlZnQiLCJnZXRDaGlsZENvbnRleHQiLCJjb2xvciIsIndyYXAiLCJmdW5jIiwic3BhY2luZyIsIm51bWJlcmluZyIsImluZGVudCIsIlRleHQiLCJ2YW5pc2giLCJpZCIsImhhc2giLCJrZXlzIiwicmVkdWNlIiwiTXkiLCJrIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsIlRhYmxlIiwiQ29udGFpbmVyIiwiUm93IiwiQ2VsbCIsIkltYWdlIiwiT3V0cHV0IiwiY29udGVudCIsInBpcGUiLCJzdHJlYW0iLCJFbWl0dGVyIiwiRm9ybWF0IiwiQmFzZSIsInJlcHJlc2VudGF0aW9uIiwiZXh0IiwiVmlld2VyVHlwZXMiLCJWaWV3ZXJzIiwiRWRpdG9yVHlwZXMiLCJSZXByZXNlbnRhdGlvbiIsImlzUmVxdWlyZWQiLCJBIiwiaW5zdGFsbCIsImFyZ3VtZW50cyIsInVuaW5zdGFsbCJdLCJtYXBwaW5ncyI6IjJCQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQTBEZixPQXJEQUYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVBQUksU0FBU0QsRUFBT0UsR0FFdkMsR0FEVSxFQUFQQSxJQUFVRixFQUFRckIsRUFBb0JxQixJQUMvQixFQUFQRSxFQUFVLE9BQU9GLEVBQ3BCLEdBQVcsRUFBUEUsR0FBOEIsaUJBQVZGLEdBQXNCQSxHQUFTQSxFQUFNRyxXQUFZLE9BQU9ILEVBQ2hGLElBQUlJLEVBQUtYLE9BQU9ZLE9BQU8sTUFHdkIsR0FGQTFCLEVBQW9Ca0IsRUFBRU8sR0FDdEJYLE9BQU9DLGVBQWVVLEVBQUksVUFBVyxDQUFFVCxZQUFZLEVBQU1LLE1BQU9BLElBQ3RELEVBQVBFLEdBQTRCLGlCQUFURixFQUFtQixJQUFJLElBQUlNLEtBQU9OLEVBQU9yQixFQUFvQlUsRUFBRWUsRUFBSUUsRUFBSyxTQUFTQSxHQUFPLE9BQU9OLEVBQU1NLElBQVFDLEtBQUssS0FBTUQsSUFDOUksT0FBT0YsR0FJUnpCLEVBQW9CNkIsRUFBSSxTQUFTMUIsR0FDaEMsSUFBSVMsRUFBU1QsR0FBVUEsRUFBT3FCLFdBQzdCLFdBQXdCLE9BQU9yQixFQUFnQixTQUMvQyxXQUE4QixPQUFPQSxHQUV0QyxPQURBSCxFQUFvQlUsRUFBRUUsRUFBUSxJQUFLQSxHQUM1QkEsR0FJUlosRUFBb0JhLEVBQUksU0FBU2lCLEVBQVFDLEdBQVksT0FBT2pCLE9BQU9rQixVQUFVQyxlQUFlMUIsS0FBS3VCLEVBQVFDLElBR3pHL0IsRUFBb0JrQyxFQUFJLEdBSWpCbEMsRUFBb0JBLEVBQW9CbUMsRUFBSSxJLGdCQ2xGckRoQyxFQUFPRCxRQUFVa0MsUUFBUSxlLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxVLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsMEMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSwwQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLHFELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsb0MsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx1QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGdDLGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsWSxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLG1ELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsbUMsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSxzQyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLGlELGNDQXpCakMsRUFBT0QsUUFBVWtDLFFBQVEsZ0IsY0NBekJqQyxFQUFPRCxRQUFVa0MsUUFBUSx5QyxjQ0F6QmpDLEVBQU9ELFFBQVVrQyxRQUFRLCtCLGlOQ0dKQyxFLHlJQUVuQixPQUFRLGtCQUFDLFdBQUQsS0FBV0MsS0FBS0MsTUFBTUMsU0FBVSxZLEdBRlJDLE1BQUlDLFcsOE5DQXZCLE0saVZBQUEsSUFDWEQsTUFESixDQUVDQyxjLDhUQ0RNQyxFQUFTQyxVQUFURCxNQUljRSxFLHNHQUZHRCxVQUFRRSxTQUFTQyxhQUFhQyxPQUFPQyxNLElBRXhDSixFLHlKQUVTLFlBQ2dDUCxLQUFLQyxNQUFNVyxTQUQzQyxJQUNYWCxNQUFPWSxPQUFRQyxXQURKLE1BQ1EsRUFEUixVQUNlQyxNQURmLEdBQ3VCQyxFQUR2QixLQUN1QkEsTUFEdkIsbUJBQUxDLEVBQUsseUJBQUxBLEVBQUssZ0JBRWxCLE9BQ0ksa0JBQUMsV0FBRCwrRUFDNEJBLElBQ3hCLGtCQUFDWixFQUFELENBQU9hLEVBQUdKLEdBQ04sa0JBQUMsRUFBRCxDQUFTSyxNQUFPSCxFQUFNSSxPQUFRQyxXQUFZTCxFQUFNLEdBQUdmLE1BQU1xQixlLEdBUjVEZixFQUMyQmdCLFMsSUFnQjFDQyxFLHlJQVFNLE1BQ3NCeEIsS0FBS0MsTUFBeEJrQixFQURILEVBQ0dBLE1BQU9FLEVBRFYsRUFDVUEsV0FEVixFQUUyQ3JCLEtBQUt5QixRQUE3Q0MsRUFGSCxFQUVHQSxNQUFPQyxFQUZWLEVBRVVBLEtBQUtDLEVBRmYsRUFFZUEsWUFBWUMsRUFGM0IsRUFFMkJBLFFBQVFDLEVBRm5DLEVBRW1DQSxPQUNqQ0MsRUFBU0YsRUFBUUcsYUFBYVYsT0FBT08sRUFBUUcsYUFBYUMsUUFDMURDLEVBQVlMLEVBQVFNLFlBQVksT0FBTyxFQUM3QyxPQUNRLGtCQUFDLFdBQUQsS0FDSSxrQkFBQ0MsRUFBRCxDQUFjZCxPQUFRRCxFQUFZZ0IsS0FBTVQsSUFDdkNFLEdBQ0QsdUJBQUdRLE1BQU8sQ0FBQ0MsUUFBUSxJQUFNQyxXQUFZZCxFQUFPZSxTQUFRLFVBQUtkLEVBQUwsTUFBZWUsVUFBVSxXQUN6RSwwQkFBTUMsTUFBT1QsRUFBYVosT0FBUUgsRUFBTUUsRUFBWWdCLEtBQUssY0FDeEQsSUFBSU8sTUFBTXpCLEdBQU9rQixLQUFLLEdBQUdRLEtBQUksU0FBQ0MsRUFBRWhGLEdBQUgsT0FDekIsMEJBQU11QixJQUFLdkIsRUFBR2lGLEVBQUdiLEVBQVlMLEVBQVFNLFlBQVlyRSxFQUFFLEdBQUcsRUFBR29ELEVBQUdwRCxFQUFFdUQsRUFBV1UsR0FBV2pFLEVBQUUsWSxHQXBCN0ZrRixhLElBQWhCeEIsRSxlQUNrQixDQUNoQkUsTUFBT3VCLElBQVVDLE9BQ2pCdkIsS0FBTXNCLElBQVVFLE9BQ2hCdkIsWUFBYXFCLElBQVVDLE9BQ3ZCckIsUUFBU29CLElBQVV6RCxPQUNuQnNDLE9BQVFtQixJQUFVRyxPQXNCMUIsSUFBTWhCLEVBQWFpQiwrQkFBb0IsWUFBZSxJQUFiQyxFQUFhLEVBQWJBLFVBQ3JDLEdBQUdBLEVBQVUsQ0FDVCxHQUFHQSxFQUFVQyxRQUNULE1BQU8sQ0FBQ0EsU0FBUSxHQUMxQixJQUFNQyxFQUFLRixFQUFVckQsTUFBTSxRQUMzQixHQUFHdUQsRUFDRixNQUFPLENBQUNDLE9BQU9ELEVBQUtFLE1BR3RCLE1BQU8sS0FUV0wsRUFVaEIsY0FBRU0sU0FBRixJQUFXRixFQUFYLEVBQVdBLE9BQU9uQyxFQUFsQixFQUFrQkEsT0FBT2lDLEVBQXpCLEVBQXlCQSxRQUFZdEQsRUFBckMsdURBQ0VzRCxHQUFXLHlCLGlWQUFBLElBQWN0RCxFQUFkLENBQW9CcUIsU0FBT0osRUFBRXVDLEVBQU9uQyxFQUFPcUIsTUFBTSxNQUFNTCxNQUFNLENBQUNDLFFBQVEsR0FBS3FCLE9BQU8sYyxpd0JDdEJ0RkMsS0FBUSxTQUFDQyxFQUFTcEMsRUFBT0MsR0FBakIsT0FBd0IsSUFBSW1DLEVBQVEsQ0FBQ3BDLFFBQU1DLGEsaUVBRTdDLE1BU2QzQixLQUFLQyxNQVBOOEQsRUFGZSxFQUVmQSxTQUZlLElBR2ZyQyxhQUhlLE1BR1QsUUFIUyxNQUlmQyxZQUplLE1BSVYsR0FKVSxNQUtmTixrQkFMZSxNQUtKLE9BTEksRUFNZjJDLEVBTmUsRUFNZkEsV0FOZSxJQU9mcEMsbUJBUGUsTUFPSCxZQVBHLE1BUWZFLGNBUmUsU0FVaEIsTUFBTyxDQUNOaUMsV0FBVXJDLFFBQU9DLE9BQU1OLGFBQVkyQyxhQUFXcEMsY0FDOUNDLFFBQVE3QixLQUFLaUUsV0FBV2pFLEtBQUt5QixRQUFRcUMsUUFBU3BDLEVBQU9DLEdBQ3JERyxZLCtCQUlNLE1BQ2tGOUIsS0FBS0MsTUFEdkYsSUFDQTZCLGNBREEsU0FDMkU3QixHQUQzRSxFQUNhOEQsU0FEYixFQUN1QnJDLE1BRHZCLEVBQzhCQyxLQUQ5QixFQUNvQ04sV0FEcEMsRUFDZ0QyQyxXQURoRCxFQUMyRHBDLFlBRDNELHVGQUVpQjNCLEVBQU1ZLFFBQVFQLFVBQVFFLFNBQVNDLGFBQWFJLE9BRjdELElBRUZxRCxZQUZFLE1BRUcsRUFGSCxFQUVTckQsRUFGVCxnQkFNUCxPQUhHaUIsSUFDRm9DLEdBQU1sRSxLQUFLbUUsa0JBQWtCdEMsUUFBUU0sWUFBWSxPQUFPLEdBRWpELGtCQUFDLFVBQVEzQixTQUFULE9BQXNCUCxFQUF0QixDQUE2QlksT0FBTSxLQUFNQSxFQUFOLENBQWFDLElBQUksRUFBR29ELGdCLEdBNURuQ2xCLGEsb0JBQ1YsaUIsa0JBQ0YsQ0FDaEJlLFNBQVNkLElBQVVHLEtBQ25CMUIsTUFBT3VCLElBQVVDLE9BQ2pCdkIsS0FBTXNCLElBQVVFLE9BQ2hCOUIsV0FBWTRCLElBQVVDLE9BQ3RCa0IsTUFBT25CLElBQVVDLE9BQ2pCbUIsS0FBTXBCLElBQVVHLEtBQ2hCWSxXQUFZZixJQUFVQyxPQUN0QnRCLFlBQWFxQixJQUFVQyxPQUN2QnBCLE9BQVFtQixJQUFVRyxPLHFCQUdDLENBQ25CMUMsT0FBTyxrQkFBQyxFQUFELFEsMEJBR2lCLENBQ3hCcUQsU0FBU2QsSUFBVUcsS0FDbkIxQixNQUFPdUIsSUFBVUMsT0FDakJ2QixLQUFNc0IsSUFBVUUsT0FDaEI5QixXQUFZNEIsSUFBVUMsT0FDdEJrQixNQUFPbkIsSUFBVUMsT0FDakJtQixLQUFNcEIsSUFBVUcsS0FDaEJZLFdBQVlmLElBQVVDLE9BQ3RCdEIsWUFBYXFCLElBQVVDLE9BQ3ZCckIsUUFBU29CLElBQVV6RCxPQUNuQnNDLE9BQVFtQixJQUFVRyxPLHFCQUdDLENBQ25CVSxRQUFTYixJQUFVcUIsTyxJQ25DZGxFLEVBQVdFLFVBQVhGLFVBQ2NMLEUseUlBTVosTUFDZ0NDLEtBQUt5QixRQURyQyxJQUNBSixrQkFEQSxNQUNXLE9BRFgsRUFDbUJLLEVBRG5CLEVBQ21CQSxNQUFPQyxFQUQxQixFQUMwQkEsS0FEMUIsRUFFcUMzQixLQUFLQyxNQUFaQSxHQUY5QixFQUVBc0UsUUFGQSxFQUVTQyxVQUZULEVBRW1CQyxPQUZuQix5Q0FHUCxPQUFRLGtCQUFDckUsRUFBRCxPQUFlSCxFQUFmLENBQXNCc0UsUUFBUyxDQUFDbEQsY0FBYVcsYUFBYyxDQUFDTixRQUFNQyxlLEdBVDFDcUIsYSxJQUFiakQsRSxlQUNBLENBQ25Cc0IsV0FBWTRCLElBQVVDLE9BQ3RCeEIsTUFBT3VCLElBQVVDLE9BQ2pCdkIsS0FBTXNCLElBQVVFLFMsSUNMR3VCLEUseUlBT1osTUFDaUMxRSxLQUFLQyxNQUF0Q21FLEVBREEsRUFDQUEsTUFBT08sRUFEUCxFQUNPQSxPQUFPQyxFQURkLEVBQ2NBLEdBQUcxRSxFQURqQixFQUNpQkEsU0FBVTJFLEVBRDNCLEVBQzJCQSxLQUQzQixFQUdzQjdFLEtBQUt5QixRQUU1QnhCLEVBQU0sQ0FBQ3lCLE1BTE4sRUFHQUEsTUFFYUMsS0FMYixFQUdPQSxLQUVZZ0QsU0FBUUMsS0FBSTFFLFdBQVMyRSxRQUkvQyxPQVRPLEVBR1lkLFdBSWxCOUQsRUFBTW1FLE1BQU1BLEdBRU4sa0JBQUMsVUFBUU0sS0FBU3pFLE8sR0FoQk8rQyxhLGtPQUFiMEIsRSxlQUNBLENBQ25CWCxTQUFTZCxJQUFVRyxLQUNuQjFCLE1BQU91QixJQUFVQyxPQUNqQnZCLEtBQU1zQixJQUFVRSxTQ0hsQixJQUFNaEQsRUFBSTNCLE9BQU9zRyxLQUFLeEUsV0FBU3lFLFFBQU8sU0FBQ0MsRUFBR0MsR0FDekMsSUFDQ0QsRUFBR0MsR0FBSCxzR0FBeUIzRSxVQUFRMkUsSUFDakMsTUFBTUMsR0FDTkMsUUFBUUMsTUFBTUYsR0FFWixPQUFPRixJQUNULElBRWEsRSxpVkFBQSxJQUNSN0UsRUFEUCxDQUVDSyxXQUNBSixZQUNBc0UsT0FDQVcsTUFBTWxGLEVBQUltRixVQUNWQyxJQUFJcEYsRUFBSW1GLFVBQ1JFLEtBQUtyRixFQUFJbUYsVUFDVEcsTUFBTSxrQkFBSSxRLGtPQ25CVUMsRSx1SUFTYkMsR0FDTkEsRUFBUUMsS0FBSzVGLEtBQUs2RixZLEdBVmdCQyxVQUFRQyxPQUFPQyxNLG1PQUE5Qk4sRSxvV0FFaEJJLFVBQVFDLE9BQU9DLEtBQUt2RixhLENBQ3ZCd0YsZUFBZSxPQUNmdEYsS0FBSyxPQUNMdEMsS0FBSyxhQUNMNkgsSUFBSSxTLDZDQ0VleEIsRyx5SUFZWixNQUNvRDFFLEtBQUtDLE1BRHpELElBQ0FrRyxtQkFEQSxNQUNZQyxFQURaLE1BQ3FCQyxtQkFEckIsTUFDaUMvRixFQURqQyxFQUM2Q0wsRUFEN0MscUNBRVAsT0FBTyxrQkFBQyxJLG1WQUFELEVBQVdrRyxjQUFZRSxlQUFlcEcsUSxHQWRicUcsaUJBQWVOLE0sSUFBNUJ0QixHLGNBQ0QsUSxJQURDQSxHLFlBRUgsQ0FDaEIvRCxLQUFNc0MsSUFBVUMsT0FBT3FELGEsSUFISjdCLEcsZUFNQSxDQUNuQi9ELEtBQUssUyxJQVBjK0QsRyxTQVVOZ0IsR0FRZixTQUFVYyxHQUNULElBQUlDLEVBQVFELEVBQUVDLFFBQVFuSCxLQUFLa0gsR0FDM0JBLEVBQUVDLFFBQVEsV0FDVEEsRUFBTyxXQUFQLEVBQVdDLFdBQ1hGLEVBQUVkLE9BQU9lLFdBR1YsSUFBSUUsRUFBVUgsRUFBRUcsVUFBVXJILEtBQUtrSCxHQUMvQkEsRUFBRUcsVUFBVSxXQUNYQSxFQUFTLFdBQVQsRUFBYUQsV0FDYkYsRUFBRWQsT0FBT2lCLGFBVlgsQ0FZR2pDLElBRUhBLEdBQUsrQiIsImZpbGUiOiJyZXByZXNlbnRhdGlvbi10ZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE3KTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2dldFByb3RvdHlwZU9mXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwid2UtZWRpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLXBhZ2luYXRpb25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibWVtb2l6ZS1vbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZ2V0XCIpOyIsImltcG9ydCBSZWFjdCx7RnJhZ21lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge2RvbX0gZnJvbSAgXCJ3ZS1lZGl0XCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgX18kMSBleHRlbmRzIGRvbS5QYXJhZ3JhcGh7XG5cdHJlbmRlcigpe1xuXHRcdHJldHVybiAoPEZyYWdtZW50Pnt0aGlzLnByb3BzLmNoaWxkcmVufXtcIlxcclxcblwifTwvRnJhZ21lbnQ+KVxuXHR9XG59IiwiaW1wb3J0IHtkb219IGZyb20gXCJ3ZS1lZGl0XCJcbmltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4vcGFyYWdyYXBoXCJcblxuZXhwb3J0IGRlZmF1bHQge1xuXHQuLi5kb20sXG5cdFBhcmFncmFwaCxcbn1cbiIsImltcG9ydCBSZWFjdCx7Q29tcG9uZW50LCBGcmFnbWVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHt3aGVuU2VsZWN0aW9uQ2hhbmdlfSBmcm9tIFwid2UtZWRpdFwiXG5pbXBvcnQge0VkaXRvcnN9IGZyb20gXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLWh0bWxcIlxuY29uc3Qge0dyb3VwLCB9PUVkaXRvcnNcblxuY29uc3QgUmVzcG9uc2libGVDYW52YXM9RWRpdG9ycy5Eb2N1bWVudC5kZWZhdWx0UHJvcHMuY2FudmFzLnR5cGVcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGluZVJlc3BvbnNpYmxlQ2FudmFzIGV4dGVuZHMgUmVzcG9uc2libGVDYW52YXN7XG4gICAgc3RhdGljIENhbnZhcz1jbGFzcyBMaW5lQ2FudmFzIGV4dGVuZHMgdGhpcy5DYW52YXN7XG4gICAgICAgIHBvc2l0aW9uUGFnZXMoLi4uYXJncyl7XG4gICAgICAgICAgICBjb25zdCB7cHJvcHM6e21hcmdpbjp7dG9wPTB9LCB9LCBwYWdlczpbe2xpbmVzfV19PXRoaXMucHJvcHMuZG9jdW1lbnRcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEZyYWdtZW50PlxuICAgICAgICAgICAgICAgICAgICB7c3VwZXIucG9zaXRpb25QYWdlcyguLi5hcmdzKX1cbiAgICAgICAgICAgICAgICAgICAgPEdyb3VwIHk9e3RvcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TGluZU5vcyBjb3VudD17bGluZXMubGVuZ3RofSBsaW5lSGVpZ2h0PXtsaW5lc1swXS5wcm9wcy5oZWlnaHR9Lz5cbiAgICAgICAgICAgICAgICAgICAgPC9Hcm91cD5cbiAgICAgICAgICAgICAgICA8L0ZyYWdtZW50PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBMaW5lTm9zIGV4dGVuZHMgQ29tcG9uZW50e1xuICAgIHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuICAgICAgICBmb250czogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgc2l6ZTogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIG1lYXN1cmU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIGxpbmVObzogUHJvcFR5cGVzLmJvb2wsXG4gICAgfVxuICAgIHJlbmRlcigpe1xuICAgICAgICBjb25zdCB7Y291bnQsIGxpbmVIZWlnaHR9PXRoaXMucHJvcHNcbiAgICAgICAgY29uc3Qge2ZvbnRzLCBzaXplLGFjdGl2ZUNvbG9yLG1lYXN1cmUsbGluZU5vfT10aGlzLmNvbnRleHRcbiAgICAgICAgY29uc3QgYmFzZWxpbmU9bWVhc3VyZS5kZWZhdWx0U3R5bGUuaGVpZ2h0LW1lYXN1cmUuZGVmYXVsdFN0eWxlLmRlc2NlbnQgIFxuICAgICAgICBjb25zdCBsaW5lTm9XaWR0aD1tZWFzdXJlLnN0cmluZ1dpZHRoKFwiOTk5XCIpKzJcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8RnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVMaW5lTm8gaGVpZ2h0PXtsaW5lSGVpZ2h0fSBmaWxsPXthY3RpdmVDb2xvcn0vPlxuICAgICAgICAgICAgICAgICAgICB7bGluZU5vICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGcgc3R5bGU9e3tvcGFjaXR5OjAuNX19IGZvbnRGYW1pbHk9e2ZvbnRzfSBmb250U2l6ZT17YCR7c2l6ZX1wdGB9IGNsYXNzTmFtZT1cImxpbmVOb3NcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPXtsaW5lTm9XaWR0aH0gaGVpZ2h0PXtjb3VudCpsaW5lSGVpZ2h0fSBmaWxsPVwibGlnaHRncmF5XCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAge25ldyBBcnJheShjb3VudCkuZmlsbCgwKS5tYXAoKGEsaSk9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8dGV4dCBrZXk9e2l9IHg9e2xpbmVOb1dpZHRoLW1lYXN1cmUuc3RyaW5nV2lkdGgoaSsxKS0yfSB5PXtpKmxpbmVIZWlnaHQrYmFzZWxpbmV9PntpKzF9PC90ZXh0PilcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvZz4pfVxuICAgICAgICAgICAgICAgIDwvRnJhZ21lbnQ+XG4gICAgICAgICAgICApXG4gICAgfVxufVxuXG5jb25zdCBBY3RpdmVMaW5lTm89d2hlblNlbGVjdGlvbkNoYW5nZSgoe3NlbGVjdGlvbn0pPT57XG4gICAgaWYoc2VsZWN0aW9uKXtcbiAgICAgICAgaWYoc2VsZWN0aW9uLmlzUmFuZ2UpXG4gICAgICAgICAgICByZXR1cm4ge2lzUmFuZ2U6dHJ1ZX1cblx0XHRjb25zdCBwYWdlPXNlbGVjdGlvbi5wcm9wcyhcInBhZ2VcIilcblx0XHRpZihwYWdlKXtcblx0XHRcdHJldHVybiB7YWN0aXZlOnBhZ2UubGluZX1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHt9XG59KSgoe2Rpc3BhdGNoLGFjdGl2ZSxoZWlnaHQsaXNSYW5nZSwgLi4ucHJvcHN9KT0+KFxuICAgICFpc1JhbmdlICYmIDxyZWN0IHsuLi57Li4ucHJvcHMsaGVpZ2h0LHk6YWN0aXZlKmhlaWdodCx3aWR0aDo5OTk5OSxzdHlsZTp7b3BhY2l0eTowLjUsIGN1cnNvcjpcInRleHRcIn19fS8+XG4pKVxuIiwiaW1wb3J0IFJlYWN0LHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBtZW1vaXplIGZyb20gXCJtZW1vaXplLW9uZVwiXG5cbmltcG9ydCB7RWRpdG9yc30gZnJvbSBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24taHRtbFwiXG5pbXBvcnQgVGV4dExpbmVDYW52YXMgZnJvbSBcIi4vcmVzcG9uc2libGUtY2FudmFzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgZGlzcGxheU5hbWU9XCJ0ZXh0LWRvY3VtZW50XCJcblx0c3RhdGljIHByb3BUeXBlcz17XG5cdFx0Y29sb3JmdWw6UHJvcFR5cGVzLmJvb2wsXG5cdFx0Zm9udHM6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0c2l6ZTogUHJvcFR5cGVzLm51bWJlcixcblx0XHRsaW5lSGVpZ2h0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdGNvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdHdyYXA6IFByb3BUeXBlcy5ib29sLFxuXHRcdGJhY2tncm91bmQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0YWN0aXZlQ29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0bGluZU5vOiBQcm9wVHlwZXMuYm9vbFxuXHR9XG5cblx0c3RhdGljIGRlZmF1bHRQcm9wcz17XG5cdFx0Y2FudmFzOjxUZXh0TGluZUNhbnZhcy8+LFxuXHR9XG5cblx0c3RhdGljIGNoaWxkQ29udGV4dFR5cGVzPXtcblx0XHRjb2xvcmZ1bDpQcm9wVHlwZXMuYm9vbCxcblx0XHRmb250czogUHJvcFR5cGVzLnN0cmluZyxcblx0XHRzaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuXHRcdGxpbmVIZWlnaHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0Y29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG5cdFx0d3JhcDogUHJvcFR5cGVzLmJvb2wsXG5cdFx0YmFja2dyb3VuZDogUHJvcFR5cGVzLnN0cmluZyxcblx0XHRhY3RpdmVDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcblx0XHRtZWFzdXJlOiBQcm9wVHlwZXMub2JqZWN0LFxuXHRcdGxpbmVObzogUHJvcFR5cGVzLmJvb2wsXG5cdH1cblxuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRNZWFzdXJlOiBQcm9wVHlwZXMuZnVuY1xuXHR9XG5cblx0Z2V0TWVhc3VyZT1tZW1vaXplKChNZWFzdXJlLCBmb250cywgc2l6ZSk9Pm5ldyBNZWFzdXJlKHtmb250cyxzaXplfSkpXG5cblx0Z2V0Q2hpbGRDb250ZXh0KCl7XG5cdFx0Y29uc3Qge1xuXHRcdFx0Y29sb3JmdWwsXG5cdFx0XHRmb250cz1cImFyaWFsXCIsXG5cdFx0XHRzaXplPTExLFxuXHRcdFx0bGluZUhlaWdodD1cIjE0MCVcIixcblx0XHRcdGJhY2tncm91bmQsXG5cdFx0XHRhY3RpdmVDb2xvcj1cImxpZ2h0Ymx1ZVwiLFxuXHRcdFx0bGluZU5vPXRydWUsXG5cdFx0fT10aGlzLnByb3BzXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvbG9yZnVsLCBmb250cywgc2l6ZSwgbGluZUhlaWdodCwgYmFja2dyb3VuZCxhY3RpdmVDb2xvcixcblx0XHRcdG1lYXN1cmU6dGhpcy5nZXRNZWFzdXJlKHRoaXMuY29udGV4dC5NZWFzdXJlLCBmb250cywgc2l6ZSksXG5cdFx0XHRsaW5lTm8sXG5cdFx0fVxuXHR9XG5cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2xpbmVObz10cnVlLCBjb2xvcmZ1bCwgZm9udHMsIHNpemUsIGxpbmVIZWlnaHQsIGJhY2tncm91bmQsYWN0aXZlQ29sb3IsIC4uLnByb3BzfT10aGlzLnByb3BzXG5cdFx0dmFyIHtsZWZ0PTAsIC4uLm1hcmdpbn09cHJvcHMubWFyZ2lufHxFZGl0b3JzLkRvY3VtZW50LmRlZmF1bHRQcm9wcy5tYXJnaW5cblx0XHRpZihsaW5lTm8pe1xuXHRcdFx0bGVmdCs9dGhpcy5nZXRDaGlsZENvbnRleHQoKS5tZWFzdXJlLnN0cmluZ1dpZHRoKFwiOTk5XCIpKzJcblx0XHR9XG5cdFx0cmV0dXJuICg8RWRpdG9ycy5Eb2N1bWVudCB7Li4ucHJvcHN9IG1hcmdpbj17ey4uLm1hcmdpbix0b3A6MCwgbGVmdH19Lz4pXG5cdH1cbn0iLCJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnR9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCB7RWRpdG9yc30gZnJvbSAgXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLWh0bWxcIlxuXG5jb25zdCB7UGFyYWdyYXBofT1FZGl0b3JzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBfXyQxIGV4dGVuZHMgQ29tcG9uZW50e1xuXHRzdGF0aWMgY29udGV4dFR5cGVzPXtcblx0XHRsaW5lSGVpZ2h0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdGZvbnRzOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdHNpemU6IFByb3BUeXBlcy5udW1iZXIsXG5cdH1cblx0cmVuZGVyKCl7XG5cdFx0Y29uc3Qge2xpbmVIZWlnaHQ9XCIxNDAlXCIsIGZvbnRzLCBzaXplfT10aGlzLmNvbnRleHRcblx0XHRjb25zdCB7c3BhY2luZywgbnVtYmVyaW5nLGluZGVudCwgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRyZXR1cm4gKDxQYXJhZ3JhcGggey4uLnByb3BzfSBzcGFjaW5nPXt7bGluZUhlaWdodH19IGRlZmF1bHRTdHlsZT17e2ZvbnRzLHNpemV9fS8+KVxuXHR9XG59XG4iLCJpbXBvcnQgUmVhY3Qse0NvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtFZGl0b3JzfSBmcm9tICBcIndlLWVkaXQtcmVwcmVzZW50YXRpb24taHRtbFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHQgZXh0ZW5kcyBDb21wb25lbnR7XG5cdHN0YXRpYyBjb250ZXh0VHlwZXM9e1xuXHRcdGNvbG9yZnVsOlByb3BUeXBlcy5ib29sLFxuXHRcdGZvbnRzOiBQcm9wVHlwZXMuc3RyaW5nLFxuXHRcdHNpemU6IFByb3BUeXBlcy5udW1iZXJcblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtjb2xvciwgdmFuaXNoLGlkLGNoaWxkcmVuLCBoYXNofT10aGlzLnByb3BzXG5cblx0XHRjb25zdCB7Zm9udHMsIHNpemUsY29sb3JmdWx9PXRoaXMuY29udGV4dFxuXG5cdFx0Y29uc3QgcHJvcHM9e2ZvbnRzLCBzaXplLCB2YW5pc2gsIGlkLCBjaGlsZHJlbixoYXNofVxuXHRcdGlmKGNvbG9yZnVsKXtcblx0XHRcdHByb3BzLmNvbG9yPWNvbG9yXG5cdFx0fVxuXHRcdHJldHVybiA8RWRpdG9ycy5UZXh0IHsuLi5wcm9wc30vPlxuXHR9XG59XG4iLCJpbXBvcnQge0VkaXRvcnN9IGZyb20gXCJ3ZS1lZGl0LXJlcHJlc2VudGF0aW9uLWh0bWxcIlxuaW1wb3J0IERvY3VtZW50IGZyb20gXCIuL2RvY3VtZW50XCJcbmltcG9ydCBQYXJhZ3JhcGggZnJvbSBcIi4vcGFyYWdyYXBoXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuL3RleHRcIlxuXG5jb25zdCBkb209T2JqZWN0LmtleXMoRWRpdG9ycykucmVkdWNlKChNeSxrKT0+e1xuXHR0cnl7XG5cdFx0TXlba109Y2xhc3MgX18kMSBleHRlbmRzIEVkaXRvcnNba117fVxuXHR9Y2F0Y2goZSl7XG5cdFx0Y29uc29sZS5lcnJvcihlKVxuXHR9XG4gICAgcmV0dXJuIE15XG59LHt9KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgLi4uZG9tLFxuXHREb2N1bWVudCxcblx0UGFyYWdyYXBoLFxuXHRUZXh0LFxuXHRUYWJsZTpkb20uQ29udGFpbmVyLFxuXHRSb3c6ZG9tLkNvbnRhaW5lcixcblx0Q2VsbDpkb20uQ29udGFpbmVyLFxuXHRJbWFnZTooKT0+bnVsbCxcbn1cbiIsImltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtFbWl0dGVyfSBmcm9tIFwid2UtZWRpdFwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE91dHB1dCBleHRlbmRzIEVtaXR0ZXIuRm9ybWF0LkJhc2V7XHRcblx0c3RhdGljIGRlZmF1bHRQcm9wcz17XG5cdFx0Li4uRW1pdHRlci5Gb3JtYXQuQmFzZS5kZWZhdWx0UHJvcHMsXG5cdFx0cmVwcmVzZW50YXRpb246XCJ0ZXh0XCIsXG5cdFx0dHlwZTpcInRleHRcIixcblx0XHRuYW1lOlwiUGxhaW4gVGV4dFwiLFxuXHRcdGV4dDpcInR4dFwiXG5cdH1cblx0XG5cdG91dHB1dChjb250ZW50KXtcblx0XHRjb250ZW50LnBpcGUodGhpcy5zdHJlYW0pXG5cdH1cbn0iLCJpbXBvcnQgUmVhY3QsIHtQdXJlQ29tcG9uZW50IGFzIENvbXBvbmVudH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHtSZXByZXNlbnRhdGlvbn0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgSHRtbCBmcm9tIFwid2UtZWRpdC1yZXByZXNlbnRhdGlvbi1wYWdpbmF0aW9uXCJcblxuaW1wb3J0IFZpZXdlcnMgZnJvbSBcIi4vZG9tXCJcbmltcG9ydCBFZGl0b3JzIGZyb20gXCIuL2RvbS9lZGl0XCJcblxuaW1wb3J0IE91dHB1dCBmcm9tIFwiLi9vdXRwdXRcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZXh0IGV4dGVuZHMgUmVwcmVzZW50YXRpb24uQmFzZXtcblx0c3RhdGljIGRpc3BsYXlOYW1lPVwidGV4dFwiXG5cdHN0YXRpYyBwcm9wVHlwZXM9e1xuXHRcdHR5cGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuXHR9XG5cblx0c3RhdGljIGRlZmF1bHRQcm9wcz17XG5cdFx0dHlwZTpcInRleHRcIlxuXHR9XG5cblx0c3RhdGljIE91dHB1dD1PdXRwdXRcblxuXHRyZW5kZXIoKXtcblx0XHRjb25zdCB7Vmlld2VyVHlwZXM9Vmlld2VycywgRWRpdG9yVHlwZXM9RWRpdG9ycywgLi4ucHJvcHN9PXRoaXMucHJvcHNcblx0XHRyZXR1cm4gPEh0bWwgey4uLntWaWV3ZXJUeXBlcyxFZGl0b3JUeXBlcywuLi5wcm9wc319Lz5cblx0fVxufVxuXG4oZnVuY3Rpb24oQSl7XG5cdGxldCBpbnN0YWxsPUEuaW5zdGFsbC5iaW5kKEEpXG5cdEEuaW5zdGFsbD1mdW5jdGlvbigpe1xuXHRcdGluc3RhbGwoLi4uYXJndW1lbnRzKVxuXHRcdEEuT3V0cHV0Lmluc3RhbGwoKVxuXHR9XG5cblx0bGV0IHVuaW5zdGFsbD1BLnVuaW5zdGFsbC5iaW5kKEEpXG5cdEEudW5pbnN0YWxsPWZ1bmN0aW9uKCl7XG5cdFx0dW5pbnN0YWxsKC4uLmFyZ3VtZW50cylcblx0XHRBLk91dHB1dC51bmluc3RhbGwoKVxuXHR9XG59KShUZXh0KTtcblxuVGV4dC5pbnN0YWxsKClcbiJdLCJzb3VyY2VSb290IjoiIn0=
\No newline at end of file