All files / boundless/packages/boundless-radio/build index.js

60.66% Statements 37/61
41.51% Branches 22/53
57.14% Functions 16/28
100% Lines 1/1
1 25x  
module.exports=function(e){function t(n){Iif(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=4)}([function(e,t){e.exports=require("boundless-utils-omit-keys")},function(e,t){e.exports=require("boundless-utils-uuid")},function(e,t){e.exports=require("classnames")},function(e,t){e.exports=require("react")},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function p(e,t){Iif("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=r(3),i=r.n(s),a=r(2),u=r.n(a),l=r(0),c=r.n(l),f=r(1),d=r.n(f),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},y=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),b=function(e){return"function"==typeof e},P=function(e){function t(){var e,r,p,s;n(this,t);for(var i=arguments.length,a=Array(i),u=0;u<i;u++)a[u]=arguments[u];return r=p=o(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),p.uuid=d()(),p.handleChange=function(e){e.target.checked&&p.props.onSelected(e.target.value),b(p.props.inputProps.onChange)&&p.props.inputProps.onChange(e)},s=r,o(p,s)}return p(t,e),y(t,[{key:"renderInput",value:function(){return i.a.createElement("input",h({},this.props.inputProps,{type:"radio",id:this.props.id||this.props.inputProps.id||this.uuid,className:u()("b-radio",this.props.inputProps.className,{"b-radio-selected":this.props.selected}),name:this.props.name,value:this.props.value,checked:this.props.selected,"aria-checked":String(this.props.selected),onChange:this.handleChange}))}},{key:"renderLabel",value:function(){if(this.props.labelContent)return i.a.createElement("label",h({},this.props.labelProps,{className:u()("b-radio-label",this.props.labelProps.className),htmlFor:this.props.id||this.props.inputProps.id||this.uuid}),this.props.labelContent)}},{key:"render",value:function(){return i.a.createElement(this.props.component,h({},c()(this.props,t.internalKeys),{className:u()("b-radio-wrapper",this.props.className)}),this.renderInput(),this.renderLabel())}}]),t}(i.a.PureComponent);P.propTypes={"*":s.PropTypes.any,component:s.PropTypes.string,inputProps:s.PropTypes.shape({"*":s.PropTypes.any}),labelContent:s.PropTypes.oneOfType([s.PropTypes.node,s.PropTypes.arrayOf(s.PropTypes.node)]),labelProps:s.PropTypes.shape({"*":s.PropTypes.any}),name:s.PropTypes.string.isRequired,onSelected:s.PropTypes.func,selected:s.PropTypes.bool,value:s.PropTypes.string.isRequired},P.defaultProps={component:"div",inputProps:{},labelContent:null,labelProps:{},name:"",onSelected:function(){},selected:!1,value:""},P.internalKeys=Object.keys(P.defaultProps),t.default=P}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGI5NTFlNTY3MTNkYTE4M2FmZGJjIiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy11dGlscy1vbWl0LWtleXNcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLXV0aWxzLXV1aWRcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiY2xhc3NuYW1lc1wifSIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly8vLi9wYWNrYWdlcy9ib3VuZGxlc3MtcmFkaW8vaW5kZXguanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxsZWRNb2R1bGVzIiwiaSIsImwiLCJjYWxsIiwibSIsImMiLCJ2YWx1ZSIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImdldCIsIm4iLCJfX2VzTW9kdWxlIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsIl9fd2VicGFja19leHBvcnRzX18iLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiUmVmZXJlbmNlRXJyb3IiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsIndyaXRhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfdXVpZF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsImlzRnVuY3Rpb24iLCJ4IiwiUmFkaW8iLCJfUmVhY3QkUHVyZUNvbXBvbmVudCIsIl9yZWYiLCJfdGVtcCIsIl90aGlzIiwiX3JldCIsInRoaXMiLCJfbGVuIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImdldFByb3RvdHlwZU9mIiwiYXBwbHkiLCJjb25jYXQiLCJ1dWlkIiwiaGFuZGxlQ2hhbmdlIiwiZXZlbnQiLCJjaGVja2VkIiwib25TZWxlY3RlZCIsImlucHV0UHJvcHMiLCJvbkNoYW5nZSIsImEiLCJjcmVhdGVFbGVtZW50IiwidHlwZSIsImlkIiwiY2xhc3NOYW1lIiwiYi1yYWRpby1zZWxlY3RlZCIsInNlbGVjdGVkIiwiYXJpYS1jaGVja2VkIiwiU3RyaW5nIiwibGFiZWxDb250ZW50IiwibGFiZWxQcm9wcyIsImh0bWxGb3IiLCJjb21wb25lbnQiLCJpbnRlcm5hbEtleXMiLCJyZW5kZXJJbnB1dCIsInJlbmRlckxhYmVsIiwiUHVyZUNvbXBvbmVudCIsInByb3BUeXBlcyIsIioiLCJhbnkiLCJzdHJpbmciLCJzaGFwZSIsIm9uZU9mVHlwZSIsIm5vZGUiLCJhcnJheU9mIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJib29sIiwiZGVmYXVsdFByb3BzIiwia2V5cyJdLCJtYXBwaW5ncyI6IkFBQUFBLE9BQU9DLFFBQ0UsU0FBVUMsR0NHbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFILE9BR0EsSUFBQUQsR0FBQUssRUFBQUQsSUFDQUUsRUFBQUYsRUFDQUcsR0FBQSxFQUNBTixXQVVBLE9BTkFDLEdBQUFFLEdBQUFJLEtBQUFSLEVBQUFDLFFBQUFELElBQUFDLFFBQUFFLEdBR0FILEVBQUFPLEdBQUEsRUFHQVAsRUFBQUMsUUF2QkEsR0FBQUksS0ErREEsT0FuQ0FGLEdBQUFNLEVBQUFQLEVBR0FDLEVBQUFPLEVBQUFMLEVBR0FGLEVBQUFHLEVBQUEsU0FBQUssR0FBMkMsTUFBQUEsSUFHM0NSLEVBQUFTLEVBQUEsU0FBQVgsRUFBQVksRUFBQUMsR0FDQVgsRUFBQVksRUFBQWQsRUFBQVksSUFDQUcsT0FBQUMsZUFBQWhCLEVBQUFZLEdBQ0FLLGNBQUEsRUFDQUMsWUFBQSxFQUNBQyxJQUFBTixLQU1BWCxFQUFBa0IsRUFBQSxTQUFBckIsR0FDQSxHQUFBYyxHQUFBZCxLQUFBc0IsV0FDQSxXQUEyQixNQUFBdEIsR0FBQSxTQUMzQixXQUFpQyxNQUFBQSxHQUVqQyxPQURBRyxHQUFBUyxFQUFBRSxFQUFBLElBQUFBLEdBQ0FBLEdBSUFYLEVBQUFZLEVBQUEsU0FBQVEsRUFBQUMsR0FBc0QsTUFBQVIsUUFBQVMsVUFBQUMsZUFBQWxCLEtBQUFlLEVBQUFDLElBR3REckIsRUFBQXdCLEVBQUEsR0FHQXhCLElBQUF5QixFQUFBLEtET00sU0FBVTVC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LE1BQU11QyxVQUFaaEQsS0FDUUgsSUFBS3dCLEtBQUtaLE1BQU9NLEVBQU1rQyxlQUMzQlQsVUFBVzdDLElBQUcsa0JBQW1CMEIsS0FBS1osTUFBTStCLGFBQzNDbkIsS0FBSzZCLGNBQ0w3QixLQUFLOEIsbUJOdkJrakhwQyxHTTlGcmlIdEIsRUFBQTJDLEVBQU1nQixjQUFwQnJDLEdBQ1ZzQyxXQUlIQyxJQUFLOUQsRUFBQSxVQUFVK0QsSUFLZlAsVUFBV3hELEVBQUEsVUFBVWdFLE9BRXJCdEIsV0FBWTFDLEVBQUEsVUFBVWlFLE9BSWxCSCxJQUFLOUQsRUFBQSxVQUFVK0QsTUFNbkJWLGFBQWNyRCxFQUFBLFVBQVVrRSxXQUNwQmxFLEVBQUEsVUFBVW1FLEtBQ1ZuRSxFQUFBLFVBQVVvRSxRQUFRcEUsRUFBQSxVQUFVbUUsUUFHaENiLFdBQVl0RCxFQUFBLFVBQVVpRSxPQUlsQkgsSUFBSzlELEVBQUEsVUFBVStELE1BTW5CaEcsS0FBTWlDLEVBQUEsVUFBVWdFLE9BQU9LLFdBS3ZCNUIsV0FBWXpDLEVBQUEsVUFBVXNFLEtBS3RCcEIsU0FBVWxELEVBQUEsVUFBVXVFLEtBS3BCMUcsTUFBT21DLEVBQUEsVUFBVWdFLE9BQU9LLFlBcERYOUMsRUF1RFZpRCxjQUNIaEIsVUFBVyxNQUNYZCxjQUNBVyxhQUFjLEtBQ2RDLGNBQ0F2RixLQUFNLEdBQ04wRSxXQUFZLGFBQ1pTLFVBQVUsRUFDVnJGLE1BQU8sSUEvRE0wRCxFQWtFVmtDLGFBQWV2RixPQUFPdUcsS0FBS2xELEVBQU1pRCxjTjRCa3RKeEYsRUFBNkIsUU05RnR3SnVDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCIpO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYm91bmRsZXNzLXV0aWxzLXV1aWRcIik7XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfZXhwb3J0c19fLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX3V0aWxzX29taXRfa2V5c19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYm91bmRsZXNzX3V0aWxzX3V1aWRfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYm91bmRsZXNzX3V0aWxzX3V1aWRfXyk7XG52YXIgX2V4dGVuZHM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odGFyZ2V0KXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgc291cmNlPWFyZ3VtZW50c1tpXTtmb3IodmFyIGtleSBpbiBzb3VyY2Upe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2Usa2V5KSl7dGFyZ2V0W2tleV09c291cmNlW2tleV07fX19cmV0dXJuIHRhcmdldDt9O3ZhciBfY3JlYXRlQ2xhc3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCxwcm9wcyl7Zm9yKHZhciBpPTA7aTxwcm9wcy5sZW5ndGg7aSsrKXt2YXIgZGVzY3JpcHRvcj1wcm9wc1tpXTtkZXNjcmlwdG9yLmVudW1lcmFibGU9ZGVzY3JpcHRvci5lbnVtZXJhYmxlfHxmYWxzZTtkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIGRlc2NyaXB0b3IpZGVzY3JpcHRvci53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsZGVzY3JpcHRvci5rZXksZGVzY3JpcHRvcik7fX1yZXR1cm4gZnVuY3Rpb24oQ29uc3RydWN0b3IscHJvdG9Qcm9wcyxzdGF0aWNQcm9wcyl7aWYocHJvdG9Qcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSxwcm90b1Byb3BzKTtpZihzdGF0aWNQcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLHN0YXRpY1Byb3BzKTtyZXR1cm4gQ29uc3RydWN0b3I7fTt9KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLENvbnN0cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO319ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxsKXtpZighc2VsZil7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYmKHR5cGVvZiBjYWxsPT09XCJvYmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2NhbGw6c2VsZjt9ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVvZiBzdXBlckNsYXNzIT09XCJmdW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnN1YkNsYXNzLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KTtpZihzdXBlckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVyQ2xhc3M7fXZhciBpc0Z1bmN0aW9uPWZ1bmN0aW9uIGlzRnVuY3Rpb24oeCl7cmV0dXJuIHR5cGVvZiB4PT09J2Z1bmN0aW9uJzt9O3ZhciBSYWRpbz1mdW5jdGlvbihfUmVhY3QkUHVyZUNvbXBvbmVudCl7X2luaGVyaXRzKFJhZGlvLF9SZWFjdCRQdXJlQ29tcG9uZW50KTtmdW5jdGlvbiBSYWRpbygpe3ZhciBfcmVmO3ZhciBfdGVtcCxfdGhpcyxfcmV0O19jbGFzc0NhbGxDaGVjayh0aGlzLFJhZGlvKTtmb3IodmFyIF9sZW49YXJndW1lbnRzLmxlbmd0aCxhcmdzPUFycmF5KF9sZW4pLF9rZXk9MDtfa2V5PF9sZW47X2tleSsrKXthcmdzW19rZXldPWFyZ3VtZW50c1tfa2V5XTt9cmV0dXJuIF9yZXQ9KF90ZW1wPShfdGhpcz1fcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLChfcmVmPVJhZGlvLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKFJhZGlvKSkuY2FsbC5hcHBseShfcmVmLFt0aGlzXS5jb25jYXQoYXJncykpKSxfdGhpcyksX3RoaXMudXVpZD1fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYm91bmRsZXNzX3V0aWxzX3V1aWRfX19kZWZhdWx0KCkoKSxfdGhpcy5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oZXZlbnQpe2lmKGV2ZW50LnRhcmdldC5jaGVja2VkKXtfdGhpcy5wcm9wcy5vblNlbGVjdGVkKGV2ZW50LnRhcmdldC52YWx1ZSk7fWlmKGlzRnVuY3Rpb24oX3RoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkNoYW5nZSkpe190aGlzLnByb3BzLmlucHV0UHJvcHMub25DaGFuZ2UoZXZlbnQpO319LF90ZW1wKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcyxfcmV0KTt9X2NyZWF0ZUNsYXNzKFJhZGlvLFt7a2V5OidyZW5kZXJJbnB1dCcsdmFsdWU6ZnVuY3Rpb24gcmVuZGVySW5wdXQoKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2lucHV0JyxfZXh0ZW5kcyh7fSx0aGlzLnByb3BzLmlucHV0UHJvcHMse3R5cGU6J3JhZGlvJyxpZDp0aGlzLnByb3BzLmlkfHx0aGlzLnByb3BzLmlucHV0UHJvcHMuaWR8fHRoaXMudXVpZCxjbGFzc05hbWU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0KCkoJ2ItcmFkaW8nLHRoaXMucHJvcHMuaW5wdXRQcm9wcy5jbGFzc05hbWUseydiLXJhZGlvLXNlbGVjdGVkJzp0aGlzLnByb3BzLnNlbGVjdGVkfSksbmFtZTp0aGlzLnByb3BzLm5hbWUsdmFsdWU6dGhpcy5wcm9wcy52YWx1ZSxjaGVja2VkOnRoaXMucHJvcHMuc2VsZWN0ZWQsJ2FyaWEtY2hlY2tlZCc6U3RyaW5nKHRoaXMucHJvcHMuc2VsZWN0ZWQpLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlfSkpO319LHtrZXk6J3JlbmRlckxhYmVsJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJMYWJlbCgpe2lmKHRoaXMucHJvcHMubGFiZWxDb250ZW50KXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJyxfZXh0ZW5kcyh7fSx0aGlzLnByb3BzLmxhYmVsUHJvcHMse2NsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1yYWRpby1sYWJlbCcsdGhpcy5wcm9wcy5sYWJlbFByb3BzLmNsYXNzTmFtZSksaHRtbEZvcjp0aGlzLnByb3BzLmlkfHx0aGlzLnByb3BzLmlucHV0UHJvcHMuaWR8fHRoaXMudXVpZH0pLHRoaXMucHJvcHMubGFiZWxDb250ZW50KTt9fX0se2tleToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQsX2V4dGVuZHMoe30sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX19kZWZhdWx0KCkodGhpcy5wcm9wcyxSYWRpby5pbnRlcm5hbEtleXMpLHtjbGFzc05hbWU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0KCkoJ2ItcmFkaW8td3JhcHBlcicsdGhpcy5wcm9wcy5jbGFzc05hbWUpfSksdGhpcy5yZW5kZXJJbnB1dCgpLHRoaXMucmVuZGVyTGFiZWwoKSk7fX1dKTtyZXR1cm4gUmFkaW87fShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuUHVyZUNvbXBvbmVudCk7UmFkaW8ucHJvcFR5cGVzPXsnKic6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uYW55LGNvbXBvbmVudDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5zdHJpbmcsaW5wdXRQcm9wczpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5zaGFwZSh7JyonOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmFueX0pLGxhYmVsQ29udGVudDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5vbmVPZlR5cGUoW19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm5vZGUsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uYXJyYXlPZihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5ub2RlKV0pLGxhYmVsUHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc2hhcGUoeycqJzpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hbnl9KSxuYW1lOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnN0cmluZy5pc1JlcXVpcmVkLG9uU2VsZWN0ZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxzZWxlY3RlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5ib29sLHZhbHVlOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnN0cmluZy5pc1JlcXVpcmVkfTtSYWRpby5kZWZhdWx0UHJvcHM9e2NvbXBvbmVudDonZGl2JyxpbnB1dFByb3BzOnt9LGxhYmVsQ29udGVudDpudWxsLGxhYmVsUHJvcHM6e30sbmFtZTonJyxvblNlbGVjdGVkOmZ1bmN0aW9uIG9uU2VsZWN0ZWQoKXt9LHNlbGVjdGVkOmZhbHNlLHZhbHVlOicnfTtSYWRpby5pbnRlcm5hbEtleXM9T2JqZWN0LmtleXMoUmFkaW8uZGVmYXVsdFByb3BzKTsvKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXCJkZWZhdWx0XCJdID0gUmFkaW87XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gaW5kZXguanMiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCBiOTUxZTU2NzEzZGExODNhZmRiYyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy11dGlscy1vbWl0LWtleXNcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCJ9XG4vLyBtb2R1bGUgaWQgPSAwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy11dGlscy11dWlkXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLXV0aWxzLXV1aWRcIn1cbi8vIG1vZHVsZSBpZCA9IDFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2xhc3NuYW1lc1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn1cbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJyZWFjdFwifVxuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IG9taXQgZnJvbSAnYm91bmRsZXNzLXV0aWxzLW9taXQta2V5cyc7XG5pbXBvcnQgdXVpZCBmcm9tICdib3VuZGxlc3MtdXRpbHMtdXVpZCc7XG5cbmNvbnN0IGlzRnVuY3Rpb24gPSAoeCkgPT4gdHlwZW9mIHggPT09ICdmdW5jdGlvbic7XG5cbi8qKlxuX19BbiBhY2Nlc3NpYmxlIHJhZGlvIGZvcm0gY29udHJvbC5fX1xuXG5SYWRpbyBpcyBpbXBsZW1lbnRlZCBhcyBhIFwiY29udHJvbGxlZCBpbnB1dFwiLCBtZWFuaW5nIGl0IGlzIGEgZGlyZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBkYXRhIHBhc3NlZCBpbnNpZGUuIFVzZXIgaW50ZXJhY3Rpb24gd2lsbCBidWJibGUgY2hhbmdlcyBpbiB0aGUgZm9ybSBvZiBgb25TZWxlY3RlZGAgdGhhdCBhIGNvbnRyb2xsZXIgdmlldyBtdXN0IGludGVyY2VwdCBhbmQgYXBwbHkgYWdhaW5zdCB0aGUgZGF0YSBwcm92aWRlci5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFkaW8gZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHtcbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogYW55IFtSZWFjdC1zdXBwb3J0ZWQgYXR0cmlidXRlXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RhZ3MtYW5kLWF0dHJpYnV0ZXMuaHRtbCNodG1sLWF0dHJpYnV0ZXMpXG4gICAgICAgICAqL1xuICAgICAgICAnKic6IFByb3BUeXBlcy5hbnksXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIG92ZXJyaWRlIHRoZSB3cmFwcGVyIGNvbXBvbmVudCBIVE1MIGVsZW1lbnQgdGFnIGlmIGRlc2lyZWRcbiAgICAgICAgICovXG4gICAgICAgIGNvbXBvbmVudDogUHJvcFR5cGVzLnN0cmluZyxcblxuICAgICAgICBpbnB1dFByb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBhbnkgW1JlYWN0LXN1cHBvcnRlZCBhdHRyaWJ1dGVdKGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdGFncy1hbmQtYXR0cmlidXRlcy5odG1sI2h0bWwtYXR0cmlidXRlcylcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJyonOiBQcm9wVHlwZXMuYW55LFxuICAgICAgICB9KSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogYW55IFJlYWN0LXJlbmRlcmFibGUgY29udGVudFxuICAgICAgICAgKi9cbiAgICAgICAgbGFiZWxDb250ZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgICAgICAgIFByb3BUeXBlcy5ub2RlLFxuICAgICAgICAgICAgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm5vZGUpLFxuICAgICAgICBdKSxcblxuICAgICAgICBsYWJlbFByb3BzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBhbnkgW1JlYWN0LXN1cHBvcnRlZCBhdHRyaWJ1dGVdKGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdGFncy1hbmQtYXR0cmlidXRlcy5odG1sI2h0bWwtYXR0cmlidXRlcylcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgJyonOiBQcm9wVHlwZXMuYW55LFxuICAgICAgICB9KSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogcGFzc3Rocm91Z2ggdG8gdGhlIEhUTUwgYG5hbWVgIGF0dHJpYnV0ZSBvbiB0aGUgYC5iLXJhZGlvYCBub2RlXG4gICAgICAgICAqL1xuICAgICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxlZCB3aGVuIHRoZSBlbGVtZW50IGJlY29tZXMgc2VsZWN0ZWQ7IGJhY2tpbmcgZGF0YSBtdXN0IGJlIHVwZGF0ZWQgdG8gcGVyc2lzdCB0aGUgc3RhdGUgY2hhbmdlXG4gICAgICAgICAqL1xuICAgICAgICBvblNlbGVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgICAgICAvKipcbiAgICAgICAgICogZGV0ZXJtaW5lcyB0aGUgYWN0aXZhdGlvbiBzdGF0ZSBvZiB0aGUgcmFkaW8gY29udHJvbCwgc2VlIFJlYWN0IFtcImNvbnRyb2xsZWQgaW5wdXRzXCJdKGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZm9ybXMuaHRtbCNjb250cm9sbGVkLWNvbXBvbmVudHMpKVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBwYXNzdGhyb3VnaCB0byB0aGUgSFRNTCBgdmFsdWVgIGF0dHJpYnV0ZSBvbiB0aGUgYC5iLXJhZGlvYCBub2RlXG4gICAgICAgICAqL1xuICAgICAgICB2YWx1ZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGNvbXBvbmVudDogJ2RpdicsXG4gICAgICAgIGlucHV0UHJvcHM6IHt9LFxuICAgICAgICBsYWJlbENvbnRlbnQ6IG51bGwsXG4gICAgICAgIGxhYmVsUHJvcHM6IHt9LFxuICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgb25TZWxlY3RlZDogKCkgPT4ge30sXG4gICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6ICcnLFxuICAgIH1cblxuICAgIHN0YXRpYyBpbnRlcm5hbEtleXMgPSBPYmplY3Qua2V5cyhSYWRpby5kZWZhdWx0UHJvcHMpXG5cbiAgICB1dWlkID0gdXVpZCgpXG5cbiAgICBoYW5kbGVDaGFuZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BzLm9uU2VsZWN0ZWQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkNoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkNoYW5nZShldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXJJbnB1dCgpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLmlucHV0UHJvcHN9XG4gICAgICAgICAgICAgICAgdHlwZT0ncmFkaW8nXG4gICAgICAgICAgICAgICAgaWQ9e3RoaXMucHJvcHMuaWQgfHwgdGhpcy5wcm9wcy5pbnB1dFByb3BzLmlkIHx8IHRoaXMudXVpZH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KCdiLXJhZGlvJywgdGhpcy5wcm9wcy5pbnB1dFByb3BzLmNsYXNzTmFtZSwge1xuICAgICAgICAgICAgICAgICAgICAnYi1yYWRpby1zZWxlY3RlZCc6IHRoaXMucHJvcHMuc2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgbmFtZT17dGhpcy5wcm9wcy5uYW1lfVxuICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnByb3BzLnZhbHVlfVxuICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMucHJvcHMuc2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgYXJpYS1jaGVja2VkPXtTdHJpbmcodGhpcy5wcm9wcy5zZWxlY3RlZCl9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfSAvPlxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlckxhYmVsKCkge1xuICAgICAgICBpZiAodGhpcy5wcm9wcy5sYWJlbENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLmxhYmVsUHJvcHN9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItcmFkaW8tbGFiZWwnLCB0aGlzLnByb3BzLmxhYmVsUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgICAgICAgaHRtbEZvcj17dGhpcy5wcm9wcy5pZCB8fCB0aGlzLnByb3BzLmlucHV0UHJvcHMuaWQgfHwgdGhpcy51dWlkfT5cbiAgICAgICAgICAgICAgICAgICAge3RoaXMucHJvcHMubGFiZWxDb250ZW50fVxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHRoaXMucHJvcHMuY29tcG9uZW50XG4gICAgICAgICAgICAgICAgey4uLm9taXQodGhpcy5wcm9wcywgUmFkaW8uaW50ZXJuYWxLZXlzKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KCdiLXJhZGlvLXdyYXBwZXInLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlcklucHV0KCl9XG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyTGFiZWwoKX1cbiAgICAgICAgICAgIDwvdGhpcy5wcm9wcy5jb21wb25lbnQ+XG4gICAgICAgICk7XG4gICAgfVxufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcGFja2FnZXMvYm91bmRsZXNzLXJhZGlvL2luZGV4LmpzIl0sInNvdXJjZVJvb3QiOiIifQ==