Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

boundless-checkbox-group

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

boundless-checkbox-group - npm Package Compare versions

Comparing version 1.0.0-beta.5 to 1.0.0-beta.6

4

build/index.js

@@ -1,2 +0,2 @@

module.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=6)}([function(e,t,n){"use strict";function r(){}t.a=r},function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Object.keys(e).reduce(function(n,r){return t.indexOf(r)===-1&&(n[r]=e[r]),n},{})}t.a=r},function(e,t,n){"use strict";function r(){return"b-"+([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(e){return(e^16*Math.random()>>e/4).toString(16)})}t.a=r},function(e,t){e.exports=require("boundless-checkbox")},function(e,t){e.exports=require("classnames")},function(e,t){e.exports=require("react")},function(e,t,n){"use strict";function r(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 s(e,t){if("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 l=n(5),c=n.n(l),i=n(4),p=n.n(i),u=n(3),a=n.n(u),f=n(1),h=n(0),d=n(2),y=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},P=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),b=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return s(t,e),P(t,[{key:"allItemsChecked",value:function(){return this.props.items.every(function(e){return e.inputProps.checked===!0})}},{key:"anyItemsChecked",value:function(){return this.props.items.some(function(e){return e.inputProps.checked===!0})}},{key:"renderSelectAll",value:function(){if(this.props.selectAll){var e=this.allItemsChecked(),t=this.props.selectAllProps.inputProps;return c.a.createElement(a.a,y({},this.props.selectAllProps,{ref:"select_all",key:"cb_select_all",className:p()("b-checkbox-group-selectall",this.props.selectAllProps.className),inputProps:y({},t,{checked:e,indeterminate:!e&&this.anyItemsChecked(),name:t&&t.name?t.name:"cb_select_all"}),label:this.props.selectAllProps.label||"Select All",onChecked:this.props.onAllChecked,onUnchecked:this.props.onAllUnchecked}))}}},{key:"renderCheckboxes",value:function(){var e=this;return this.props.items.map(function(t){return c.a.createElement(a.a,y({},t,{key:t.inputProps.name,onChecked:e.props.onChildChecked,onUnchecked:e.props.onChildUnchecked}))})}},{key:"renderChildren",value:function(){var e=[this.renderCheckboxes()];if(this.props.selectAll&&this.props.selectAllPosition)switch(this.props.selectAllPosition){case t.selectAllPosition.BEFORE:e.unshift(this.renderSelectAll());break;case t.selectAllPosition.AFTER:e.push(this.renderSelectAll())}return e}},{key:"render",value:function(){return c.a.createElement("div",y({},n.i(f.a)(this.props,t.internalKeys),{ref:"group",className:p()("b-checkbox-group",this.props.className)}),this.renderChildren())}}]),t}(c.a.PureComponent);b.selectAllPosition={BEFORE:n.i(d.a)(),AFTER:n.i(d.a)()},b.propTypes={items:l.PropTypes.arrayOf(a.a.propTypes.inputProps).isRequired,onAllChecked:l.PropTypes.func,onAllUnchecked:l.PropTypes.func,onChildChecked:l.PropTypes.func,onChildUnchecked:l.PropTypes.func,selectAll:l.PropTypes.bool,selectAllProps:l.PropTypes.shape({label:l.PropTypes.string,inputProps:l.PropTypes.object}),selectAllPosition:l.PropTypes.oneOf([b.selectAllPosition.BEFORE,b.selectAllPosition.AFTER])},b.defaultProps={items:[],onAllChecked:h.a,onAllUnchecked:h.a,onChildChecked:h.a,onChildUnchecked:h.a,selectAll:!1,selectAllProps:{},selectAllPosition:b.selectAllPosition.BEFORE},b.internalKeys=Object.keys(b.defaultProps),t.default=b}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIDQ4YzkyOGExYzU3ZWU5MTZkMjAwIiwid2VicGFjazovLy8uL3BhY2thZ2VzL2JvdW5kbGVzcy11dGlscy1ub29wL2luZGV4LmpzIiwid2VicGFjazovLy8uL3BhY2thZ2VzL2JvdW5kbGVzcy11dGlscy1vbWl0LWtleXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLXV0aWxzLXV1aWQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLWNoZWNrYm94XCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLWNoZWNrYm94LWdyb3VwL2luZGV4LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIl9fd2VicGFja19leHBvcnRzX18iLCJub29wIiwib21pdEtleXNGcm9tU291cmNlT2JqZWN0Iiwic291cmNlIiwib21pdHRlZEtleXMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJrZXlzIiwicmVkdWNlIiwiaGFzaCIsImtleSIsImluZGV4T2YiLCJ1dWlkIiwicmVwbGFjZSIsImEiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJyZXF1aXJlIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwic2VsZiIsIlJlZmVyZW5jZUVycm9yIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZSIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX2luZGV4X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2JvdW5kbGVzc191dGlsc19ub29wX2luZGV4X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2JvdW5kbGVzc191dGlsc191dWlkX2luZGV4X18iLCJfZXh0ZW5kcyIsImFzc2lnbiIsInRhcmdldCIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJDaGVja2JveEdyb3VwIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJ0aGlzIiwiZ2V0UHJvdG90eXBlT2YiLCJhcHBseSIsIml0ZW1zIiwiZXZlcnkiLCJpdGVtIiwiaW5wdXRQcm9wcyIsImNoZWNrZWQiLCJzb21lIiwic2VsZWN0QWxsIiwiYWxsQ2hlY2tlZCIsImFsbEl0ZW1zQ2hlY2tlZCIsInNlbGVjdEFsbFByb3BzIiwiY3JlYXRlRWxlbWVudCIsInJlZiIsImNsYXNzTmFtZSIsImluZGV0ZXJtaW5hdGUiLCJhbnlJdGVtc0NoZWNrZWQiLCJsYWJlbCIsIm9uQ2hlY2tlZCIsIm9uQWxsQ2hlY2tlZCIsIm9uVW5jaGVja2VkIiwib25BbGxVbmNoZWNrZWQiLCJfdGhpczIiLCJtYXAiLCJvbkNoaWxkQ2hlY2tlZCIsIm9uQ2hpbGRVbmNoZWNrZWQiLCJ0b0JlUmVuZGVyZWQiLCJyZW5kZXJDaGVja2JveGVzIiwic2VsZWN0QWxsUG9zaXRpb24iLCJCRUZPUkUiLCJ1bnNoaWZ0IiwicmVuZGVyU2VsZWN0QWxsIiwiQUZURVIiLCJwdXNoIiwiaW50ZXJuYWxLZXlzIiwicmVuZGVyQ2hpbGRyZW4iLCJQdXJlQ29tcG9uZW50IiwicHJvcFR5cGVzIiwiYXJyYXlPZiIsImlzUmVxdWlyZWQiLCJmdW5jIiwiYm9vbCIsInNoYXBlIiwic3RyaW5nIiwib25lT2YiLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiJBQUFBQSxPQUFPQyxRQUNFLFNBQVVDLEdDR25CLFFBQUFDLEdBQUFDLEdBR0EsR0FBQUMsRUFBQUQsR0FDQSxNQUFBQyxHQUFBRCxHQUFBSCxPQUdBLElBQUFELEdBQUFLLEVBQUFELElBQ0FFLEVBQUFGLEVBQ0FHLEdBQUEsRUFDQU4sV0FVQSxPQU5BQyxHQUFBRSxHQUFBSSxLQUFBUixFQUFBQyxRQUFBRCxJQUFBQyxRQUFBRSxHQUdBSCxFQUFBTyxHQUFBLEVBR0FQLEVBQUFDLFFBdkJBLEdBQUFJLEtBK0RBLE9BbkNBRixHQUFBTSxFQUFBUCxFQUdBQyxFQUFBTyxFQUFBTCxFQUdBRixFQUFBRyxFQUFBLFNBQUFLLEdBQTJDLE1BQUFBLElBRzND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Iiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDYpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gbm9vcDtcbmZ1bmN0aW9uIG5vb3AoKXt9XG5cbi8qKiovIH0pLFxuLyogMSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gb21pdEtleXNGcm9tU291cmNlT2JqZWN0O1xuZnVuY3Rpb24gb21pdEtleXNGcm9tU291cmNlT2JqZWN0KHNvdXJjZSl7dmFyIG9taXR0ZWRLZXlzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1sxXTpbXTtyZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gcmVsb2NhdGVBY2NlcHRlZEtleXMoaGFzaCxrZXkpe2lmKG9taXR0ZWRLZXlzLmluZGV4T2Yoa2V5KT09PS0xKXtoYXNoW2tleV09c291cmNlW2tleV07fXJldHVybiBoYXNoO30se30pO31cblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSB1dWlkO1xuZnVuY3Rpb24gdXVpZCgpe3JldHVybidiLScrKFsxZTddKy0xZTMrLTRlMystOGUzKy0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLGZ1bmN0aW9uKGEpe3JldHVybihhXk1hdGgucmFuZG9tKCkqMTY+PmEvNCkudG9TdHJpbmcoMTYpO30pO31cblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy1jaGVja2JveFwiKTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNsYXNzbmFtZXNcIik7XG5cbi8qKiovIH0pLFxuLyogNSAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxuLyoqKi8gfSksXG4vKiA2ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19leHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYm91bmRsZXNzX3V0aWxzX29taXRfa2V5c19pbmRleF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2JvdW5kbGVzc191dGlsc19ub29wX2luZGV4X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYm91bmRsZXNzX3V0aWxzX3V1aWRfaW5kZXhfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG52YXIgX2V4dGVuZHM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24odGFyZ2V0KXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgc291cmNlPWFyZ3VtZW50c1tpXTtmb3IodmFyIGtleSBpbiBzb3VyY2Upe2lmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2Usa2V5KSl7dGFyZ2V0W2tleV09c291cmNlW2tleV07fX19cmV0dXJuIHRhcmdldDt9O3ZhciBfY3JlYXRlQ2xhc3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCxwcm9wcyl7Zm9yKHZhciBpPTA7aTxwcm9wcy5sZW5ndGg7aSsrKXt2YXIgZGVzY3JpcHRvcj1wcm9wc1tpXTtkZXNjcmlwdG9yLmVudW1lcmFibGU9ZGVzY3JpcHRvci5lbnVtZXJhYmxlfHxmYWxzZTtkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZT10cnVlO2lmKFwidmFsdWVcImluIGRlc2NyaXB0b3IpZGVzY3JpcHRvci53cml0YWJsZT10cnVlO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsZGVzY3JpcHRvci5rZXksZGVzY3JpcHRvcik7fX1yZXR1cm4gZnVuY3Rpb24oQ29uc3RydWN0b3IscHJvdG9Qcm9wcyxzdGF0aWNQcm9wcyl7aWYocHJvdG9Qcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSxwcm90b1Byb3BzKTtpZihzdGF0aWNQcm9wcylkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLHN0YXRpY1Byb3BzKTtyZXR1cm4gQ29uc3RydWN0b3I7fTt9KCk7ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLENvbnN0cnVjdG9yKXtpZighKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO319ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZixjYWxsKXtpZighc2VsZil7dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO31yZXR1cm4gY2FsbCYmKHR5cGVvZiBjYWxsPT09XCJvYmplY3RcInx8dHlwZW9mIGNhbGw9PT1cImZ1bmN0aW9uXCIpP2NhbGw6c2VsZjt9ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLHN1cGVyQ2xhc3Mpe2lmKHR5cGVvZiBzdXBlckNsYXNzIT09XCJmdW5jdGlvblwiJiZzdXBlckNsYXNzIT09bnVsbCl7dGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIrdHlwZW9mIHN1cGVyQ2xhc3MpO31zdWJDbGFzcy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzJiZzdXBlckNsYXNzLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnN1YkNsYXNzLGVudW1lcmFibGU6ZmFsc2Usd3JpdGFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX19KTtpZihzdXBlckNsYXNzKU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3Msc3VwZXJDbGFzcyk6c3ViQ2xhc3MuX19wcm90b19fPXN1cGVyQ2xhc3M7fXZhciBDaGVja2JveEdyb3VwPWZ1bmN0aW9uKF9SZWFjdCRQdXJlQ29tcG9uZW50KXtfaW5oZXJpdHMoQ2hlY2tib3hHcm91cCxfUmVhY3QkUHVyZUNvbXBvbmVudCk7ZnVuY3Rpb24gQ2hlY2tib3hHcm91cCgpe19jbGFzc0NhbGxDaGVjayh0aGlzLENoZWNrYm94R3JvdXApO3JldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLChDaGVja2JveEdyb3VwLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKENoZWNrYm94R3JvdXApKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpO31fY3JlYXRlQ2xhc3MoQ2hlY2tib3hHcm91cCxbe2tleTonYWxsSXRlbXNDaGVja2VkJyx2YWx1ZTpmdW5jdGlvbiBhbGxJdGVtc0NoZWNrZWQoKXtyZXR1cm4gdGhpcy5wcm9wcy5pdGVtcy5ldmVyeShmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbS5pbnB1dFByb3BzLmNoZWNrZWQ9PT10cnVlO30pO319LHtrZXk6J2FueUl0ZW1zQ2hlY2tlZCcsdmFsdWU6ZnVuY3Rpb24gYW55SXRlbXNDaGVja2VkKCl7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuc29tZShmdW5jdGlvbihpdGVtKXtyZXR1cm4gaXRlbS5pbnB1dFByb3BzLmNoZWNrZWQ9PT10cnVlO30pO319LHtrZXk6J3JlbmRlclNlbGVjdEFsbCcsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyU2VsZWN0QWxsKCl7aWYodGhpcy5wcm9wcy5zZWxlY3RBbGwpe3ZhciBhbGxDaGVja2VkPXRoaXMuYWxsSXRlbXNDaGVja2VkKCk7dmFyIGlucHV0UHJvcHM9dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5pbnB1dFByb3BzO3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdC5hLF9leHRlbmRzKHt9LHRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMse3JlZjonc2VsZWN0X2FsbCcsa2V5OidjYl9zZWxlY3RfYWxsJyxjbGFzc05hbWU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0KCkoJ2ItY2hlY2tib3gtZ3JvdXAtc2VsZWN0YWxsJyx0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLmNsYXNzTmFtZSksaW5wdXRQcm9wczpfZXh0ZW5kcyh7fSxpbnB1dFByb3BzLHtjaGVja2VkOmFsbENoZWNrZWQsaW5kZXRlcm1pbmF0ZTohYWxsQ2hlY2tlZCYmdGhpcy5hbnlJdGVtc0NoZWNrZWQoKSxuYW1lOmlucHV0UHJvcHMmJmlucHV0UHJvcHMubmFtZT9pbnB1dFByb3BzLm5hbWU6J2NiX3NlbGVjdF9hbGwnfSksbGFiZWw6dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbHx8J1NlbGVjdCBBbGwnLG9uQ2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsQ2hlY2tlZCxvblVuY2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsVW5jaGVja2VkfSkpO319fSx7a2V5OidyZW5kZXJDaGVja2JveGVzJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJDaGVja2JveGVzKCl7dmFyIF90aGlzMj10aGlzO3JldHVybiB0aGlzLnByb3BzLml0ZW1zLm1hcChmdW5jdGlvbihpdGVtKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fX2RlZmF1bHQuYSxfZXh0ZW5kcyh7fSxpdGVtLHtrZXk6aXRlbS5pbnB1dFByb3BzLm5hbWUsb25DaGVja2VkOl90aGlzMi5wcm9wcy5vbkNoaWxkQ2hlY2tlZCxvblVuY2hlY2tlZDpfdGhpczIucHJvcHMub25DaGlsZFVuY2hlY2tlZH0pKTt9KTt9fSx7a2V5OidyZW5kZXJDaGlsZHJlbicsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyQ2hpbGRyZW4oKXt2YXIgdG9CZVJlbmRlcmVkPVt0aGlzLnJlbmRlckNoZWNrYm94ZXMoKV07aWYodGhpcy5wcm9wcy5zZWxlY3RBbGwmJnRoaXMucHJvcHMuc2VsZWN0QWxsUG9zaXRpb24pe3N3aXRjaCh0aGlzLnByb3BzLnNlbGVjdEFsbFBvc2l0aW9uKXtjYXNlIENoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb24uQkVGT1JFOnRvQmVSZW5kZXJlZC51bnNoaWZ0KHRoaXMucmVuZGVyU2VsZWN0QWxsKCkpO2JyZWFrO2Nhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5BRlRFUjp0b0JlUmVuZGVyZWQucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbCgpKTticmVhazt9fXJldHVybiB0b0JlUmVuZGVyZWQ7fX0se2tleToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoJ2RpdicsX2V4dGVuZHMoe30sX193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fYm91bmRsZXNzX3V0aWxzX29taXRfa2V5c19pbmRleF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSh0aGlzLnByb3BzLENoZWNrYm94R3JvdXAuaW50ZXJuYWxLZXlzKSx7cmVmOidncm91cCcsY2xhc3NOYW1lOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCgpKCdiLWNoZWNrYm94LWdyb3VwJyx0aGlzLnByb3BzLmNsYXNzTmFtZSl9KSx0aGlzLnJlbmRlckNoaWxkcmVuKCkpO319XSk7cmV0dXJuIENoZWNrYm94R3JvdXA7fShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuUHVyZUNvbXBvbmVudCk7Q2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbj17QkVGT1JFOl9fd2VicGFja19yZXF1aXJlX18uaShfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfX2JvdW5kbGVzc191dGlsc191dWlkX2luZGV4X19bXCJhXCIgLyogZGVmYXVsdCAqL10pKCksQUZURVI6X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fYm91bmRsZXNzX3V0aWxzX3V1aWRfaW5kZXhfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkoKX07Q2hlY2tib3hHcm91cC5wcm9wVHlwZXM9e2l0ZW1zOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmFycmF5T2YoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fX2RlZmF1bHQuYS5wcm9wVHlwZXMuaW5wdXRQcm9wcykuaXNSZXF1aXJlZCxvbkFsbENoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxvbkFsbFVuY2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLG9uQ2hpbGRDaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMsb25DaGlsZFVuY2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLHNlbGVjdEFsbDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5ib29sLHNlbGVjdEFsbFByb3BzOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnNoYXBlKHtsYWJlbDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5zdHJpbmcsaW5wdXRQcm9wczpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5vYmplY3R9KSxzZWxlY3RBbGxQb3NpdGlvbjpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5vbmVPZihbQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5CRUZPUkUsQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5BRlRFUl0pfTtDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcz17aXRlbXM6W10sb25BbGxDaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9fYm91bmRsZXNzX3V0aWxzX25vb3BfaW5kZXhfX1tcImFcIiAvKiBkZWZhdWx0ICovXSxvbkFsbFVuY2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfX2JvdW5kbGVzc191dGlsc19ub29wX2luZGV4X19bXCJhXCIgLyogZGVmYXVsdCAqL10sb25DaGlsZENoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19ib3VuZGxlc3NfdXRpbHNfbm9vcF9pbmRleF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLG9uQ2hpbGRVbmNoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19ib3VuZGxlc3NfdXRpbHNfbm9vcF9pbmRleF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dLHNlbGVjdEFsbDpmYWxzZSxzZWxlY3RBbGxQcm9wczp7fSxzZWxlY3RBbGxQb3NpdGlvbjpDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkJFRk9SRX07Q2hlY2tib3hHcm91cC5pbnRlcm5hbEtleXM9T2JqZWN0LmtleXMoQ2hlY2tib3hHcm91cC5kZWZhdWx0UHJvcHMpOy8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSBDaGVja2JveEdyb3VwO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGluZGV4LmpzIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNik7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgNDhjOTI4YTFjNTdlZTkxNmQyMDAiLCIvKipcbiAqIEEgZHVtbXkgZnVuY3Rpb24gd2l0aCBubyBzaWRlIGVmZmVjdHMuIENvbW1vbmx5IHVzZWQgd2hlbiBtb2NraW5nIGludGVyZmFjZXMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcGFja2FnZXMvYm91bmRsZXNzLXV0aWxzLW5vb3AvaW5kZXguanMiLCIvKipcbiAqIFJldHVybnMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBzdXBwbGllZCBvYmplY3Qgd2l0aG91dCB0aGUgZ2l2ZW4ga2V5cy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb21pdEtleXNGcm9tU291cmNlT2JqZWN0KHNvdXJjZSwgb21pdHRlZEtleXMgPSBbXSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZShmdW5jdGlvbiByZWxvY2F0ZUFjY2VwdGVkS2V5cyhoYXNoLCBrZXkpIHtcbiAgICAgICAgaWYgKG9taXR0ZWRLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGhhc2hba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhhc2g7XG5cbiAgICB9LCB7fSk7XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9wYWNrYWdlcy9ib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzL2luZGV4LmpzIiwiLyoqXG4gKiBHZW5lcmF0ZXMgYSB1bmlxdWUgSUQuIEFkZHMgYSBwcmVmaXggc28gaXQgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyBhbiBIVE1MIElELlxuICogQmFzZWQgb24ge0BsaW5rIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2plZC85ODI4ODMgdGhpcyBpbXBsZW1lbnRhdGlvbn0uXG4gKlxuICogQHJldHVybiB7c3RyaW5nfSBhIHVuaXF1ZSBpZGVudGlmaWVyXG4gKlxuICogQGV4YW1wbGVcbiAqIHV1aWQoKTsgLy8gYi0xZjJjZDI3Zi0wNzU0LTQzNDQtOWQyMC00MzZhMjAxYjJmODBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXVpZCgpIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIHJldHVybiAnYi0nICsgKFsxZTddKy0xZTMrLTRlMystOGUzKy0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLGE9PihhXk1hdGgucmFuZG9tKCkqMTY+PmEvNCkudG9TdHJpbmcoMTYpKTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9wYWNrYWdlcy9ib3VuZGxlc3MtdXRpbHMtdXVpZC9pbmRleC5qcyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy1jaGVja2JveFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy1jaGVja2JveFwifVxuLy8gbW9kdWxlIGlkID0gM1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjbGFzc25hbWVzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiY2xhc3NuYW1lc1wifVxuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcInJlYWN0XCJ9XG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsImltcG9ydCBSZWFjdCwge1Byb3BUeXBlc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSAnYm91bmRsZXNzLWNoZWNrYm94JztcbmltcG9ydCBvbWl0IGZyb20gJy4uL2JvdW5kbGVzcy11dGlscy1vbWl0LWtleXMvaW5kZXgnO1xuaW1wb3J0IG5vb3AgZnJvbSAnLi4vYm91bmRsZXNzLXV0aWxzLW5vb3AvaW5kZXgnO1xuaW1wb3J0IHV1aWQgZnJvbSAnLi4vYm91bmRsZXNzLXV0aWxzLXV1aWQvaW5kZXgnO1xuXG4vKipcbiMgQ2hlY2tib3hHcm91cFxuX19BIGNvbnRyb2xsZXIgdmlldyBmb3IgbWFuYWdpbmcgdGhlIGFnZ3JlZ2F0ZSBzdGF0ZSBvZiBtdWx0aXBsZSwgcmVsYXRlZCBjaGVja2JveGVzLl9fXG5cblRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgYENoZWNrYm94R3JvdXBgIGlzIGEgXCJzZWxlY3QgYWxsXCIgLyBjaGlsZHJlbiBzY2VuYXJpby4gVGhpcyBwYXJ0aWN1bGFyXG5jb25maWd1cmF0aW9uIGlzIGJ1aWx0LWluIGFuZCBpcyBhY3RpdmF0ZWQgYnkgcGFzc2luZyB0aGUgYHNlbGVjdEFsbGAgcHJvcC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hlY2tib3hHcm91cCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIHN0YXRpYyBzZWxlY3RBbGxQb3NpdGlvbiA9IHtcbiAgICAgICAgQkVGT1JFOiB1dWlkKCksXG4gICAgICAgIEFGVEVSOiB1dWlkKCksXG4gICAgfVxuXG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBkYXRhIHdpc2hlZCB0byBiZSByZW5kZXJlZCwgZWFjaCBpdGVtIG11c3QgY29uZm9ybSB0byB0aGUgW0NoZWNrYm94IHByb3Agc3BlY10oLi9DaGVja2JveCNwcm9wcylcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBQcm9wVHlwZXMuYXJyYXlPZihDaGVja2JveC5wcm9wVHlwZXMuaW5wdXRQcm9wcykuaXNSZXF1aXJlZCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbGVkIHdoZW4gYWxsIGNoaWxkcmVuIGJlY29tZSBjaGVja2VkIChub3QgZmlyZWQgb24gZmlyc3QgcmVuZGVyKSwgbm8gcmV0dXJuXG4gICAgICAgICAqL1xuICAgICAgICBvbkFsbENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhbGwgY2hpbGRyZW4gYmVjb21lIHVuY2hlY2tlZCAobm90IGZpcmVkIG9uIGZpcnN0IHJlbmRlciksIG5vIHJldHVyblxuICAgICAgICAgKi9cbiAgICAgICAgb25BbGxVbmNoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZFVuY2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlbmRlcnMgYSBtYXN0ZXIgY2hlY2tib3ggdGhhdCBjYW4gbWFuaXB1bGF0ZSB0aGUgdmFsdWVzIG9mIGFsbCBjaGlsZHJlbiBzaW11bHRhbmVvdXNseVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogbXVzdCBjb25mb3JtIHRvIHRoZSBbQ2hlY2tib3ggcHJvcCBzcGVjXSguL0NoZWNrYm94I3Byb3BzKVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHRoZSB0ZXh0IG9yIHJlbmRlcmFibGUgbm9kZSB0byBkaXNwbGF5IG5leHQgdG8gdGhlIGNoZWNrYm94XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAgICAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgfSksXG5cbiAgICAgICAgc2VsZWN0QWxsUG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICAgICAgICBDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkJFRk9SRSxcbiAgICAgICAgICAgIENoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb24uQUZURVIsXG4gICAgICAgIF0pLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgb25BbGxDaGVja2VkOiBub29wLFxuICAgICAgICBvbkFsbFVuY2hlY2tlZDogbm9vcCxcbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IG5vb3AsXG4gICAgICAgIG9uQ2hpbGRVbmNoZWNrZWQ6IG5vb3AsXG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIHNlbGVjdEFsbFByb3BzOiB7fSxcbiAgICAgICAgc2VsZWN0QWxsUG9zaXRpb246IENoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb24uQkVGT1JFLFxuICAgIH1cblxuICAgIHN0YXRpYyBpbnRlcm5hbEtleXMgPSBPYmplY3Qua2V5cyhDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcylcblxuICAgIGFsbEl0ZW1zQ2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICBhbnlJdGVtc0NoZWNrZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLml0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICByZW5kZXJTZWxlY3RBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdEFsbCkge1xuICAgICAgICAgICAgY29uc3QgYWxsQ2hlY2tlZCA9IHRoaXMuYWxsSXRlbXNDaGVja2VkKCk7XG4gICAgICAgICAgICBjb25zdCB7aW5wdXRQcm9wc30gPSB0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgcmVmPSdzZWxlY3RfYWxsJ1xuICAgICAgICAgICAgICAgICAgICBrZXk9J2NiX3NlbGVjdF9hbGwnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAtc2VsZWN0YWxsJywgdGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYWxsQ2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU6ICFhbGxDaGVja2VkICYmIHRoaXMuYW55SXRlbXNDaGVja2VkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dFByb3BzICYmIGlucHV0UHJvcHMubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnB1dFByb3BzLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NiX3NlbGVjdF9hbGwnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbCB8fCAnU2VsZWN0IEFsbCd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZD17dGhpcy5wcm9wcy5vbkFsbENoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uVW5jaGVja2VkPXt0aGlzLnByb3BzLm9uQWxsVW5jaGVja2VkfSAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlckNoZWNrYm94ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLml0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgey4uLml0ZW19XG4gICAgICAgICAgICAgICAgICAgIGtleT17aXRlbS5pbnB1dFByb3BzLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZD17dGhpcy5wcm9wcy5vbkNoaWxkQ2hlY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgb25VbmNoZWNrZWQ9e3RoaXMucHJvcHMub25DaGlsZFVuY2hlY2tlZH0gLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlckNoaWxkcmVuKCkge1xuICAgICAgICBjb25zdCB0b0JlUmVuZGVyZWQgPSBbdGhpcy5yZW5kZXJDaGVja2JveGVzKCldO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdEFsbCAmJiB0aGlzLnByb3BzLnNlbGVjdEFsbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucHJvcHMuc2VsZWN0QWxsUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5CRUZPUkU6XG4gICAgICAgICAgICAgICAgdG9CZVJlbmRlcmVkLnVuc2hpZnQodGhpcy5yZW5kZXJTZWxlY3RBbGwoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5BRlRFUjpcbiAgICAgICAgICAgICAgICB0b0JlUmVuZGVyZWQucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbCgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0JlUmVuZGVyZWQ7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHsuLi5vbWl0KHRoaXMucHJvcHMsIENoZWNrYm94R3JvdXAuaW50ZXJuYWxLZXlzKX1cbiAgICAgICAgICAgICAgICByZWY9J2dyb3VwJ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAnLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9wYWNrYWdlcy9ib3VuZGxlc3MtY2hlY2tib3gtZ3JvdXAvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9
module.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=5)}([function(e,t,n){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return Object.keys(e).reduce(function(n,r){return t.indexOf(r)===-1&&(n[r]=e[r]),n},{})}t.a=r},function(e,t,n){"use strict";function r(){return"b-"+([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,function(e){return(e^16*Math.random()>>e/4).toString(16)})}t.a=r},function(e,t){e.exports=require("boundless-checkbox")},function(e,t){e.exports=require("classnames")},function(e,t){e.exports=require("react")},function(e,t,n){"use strict";function r(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 s(e,t){if("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 l=n(4),c=n.n(l),i=n(3),p=n.n(i),u=n(2),a=n.n(u),f=n(0),h=n(1),d=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},y=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),P=function(){},b=function(e){function t(){return r(this,t),o(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return s(t,e),y(t,[{key:"allItemsChecked",value:function(){return this.props.items.every(function(e){return e.inputProps.checked===!0})}},{key:"anyItemsChecked",value:function(){return this.props.items.some(function(e){return e.inputProps.checked===!0})}},{key:"renderSelectAll",value:function(){if(this.props.selectAll){var e=this.allItemsChecked(),t=this.props.selectAllProps.inputProps;return c.a.createElement(a.a,d({},this.props.selectAllProps,{ref:"select_all",key:"cb_select_all",className:p()("b-checkbox-group-selectall",this.props.selectAllProps.className),inputProps:d({},t,{checked:e,indeterminate:!e&&this.anyItemsChecked(),name:t&&t.name?t.name:"cb_select_all"}),label:this.props.selectAllProps.label||"Select All",onChecked:this.props.onAllChecked,onUnchecked:this.props.onAllUnchecked}))}}},{key:"renderCheckboxes",value:function(){var e=this;return this.props.items.map(function(t){return c.a.createElement(a.a,d({},t,{key:t.inputProps.name,onChecked:e.props.onChildChecked,onUnchecked:e.props.onChildUnchecked}))})}},{key:"renderChildren",value:function(){var e=[this.renderCheckboxes()];if(this.props.selectAll&&this.props.selectAllPosition)switch(this.props.selectAllPosition){case t.selectAllPosition.BEFORE:e.unshift(this.renderSelectAll());break;case t.selectAllPosition.AFTER:e.push(this.renderSelectAll())}return e}},{key:"render",value:function(){return c.a.createElement("div",d({},n.i(f.a)(this.props,t.internalKeys),{ref:"group",className:p()("b-checkbox-group",this.props.className)}),this.renderChildren())}}]),t}(c.a.PureComponent);b.selectAllPosition={BEFORE:n.i(h.a)(),AFTER:n.i(h.a)()},b.propTypes={items:l.PropTypes.arrayOf(a.a.propTypes.inputProps).isRequired,onAllChecked:l.PropTypes.func,onAllUnchecked:l.PropTypes.func,onChildChecked:l.PropTypes.func,onChildUnchecked:l.PropTypes.func,selectAll:l.PropTypes.bool,selectAllProps:l.PropTypes.shape({label:l.PropTypes.string,inputProps:l.PropTypes.object}),selectAllPosition:l.PropTypes.oneOf([b.selectAllPosition.BEFORE,b.selectAllPosition.AFTER])},b.defaultProps={items:[],onAllChecked:P,onAllUnchecked:P,onChildChecked:P,onChildUnchecked:P,selectAll:!1,selectAllProps:{},selectAllPosition:b.selectAllPosition.BEFORE},b.internalKeys=Object.keys(b.defaultProps),t.default=b}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIGE0MDdiMWQ3M2Y2NWYwMGI1MGYxIiwid2VicGFjazovLy8uL3BhY2thZ2VzL2JvdW5kbGVzcy11dGlscy1vbWl0LWtleXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLXV0aWxzLXV1aWQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLWNoZWNrYm94XCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLWNoZWNrYm94LWdyb3VwL2luZGV4LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIl9fd2VicGFja19leHBvcnRzX18iLCJvbWl0S2V5c0Zyb21Tb3VyY2VPYmplY3QiLCJzb3VyY2UiLCJvbWl0dGVkS2V5cyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImtleXMiLCJyZWR1Y2UiLCJoYXNoIiwia2V5IiwiaW5kZXhPZiIsInV1aWQiLCJyZXBsYWNlIiwiYSIsIk1hdGgiLCJyYW5kb20iLCJ0b1N0cmluZyIsInJlcXVpcmUiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJzZWxmIiwiUmVmZXJlbmNlRXJyb3IiLCJfaW5oZXJpdHMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjcmVhdGUiLCJjb25zdHJ1Y3RvciIsIndyaXRhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fX2RlZmF1bHQiLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfYm91bmRsZXNzX3V0aWxzX29taXRfa2V5c19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX18iLCJfZXh0ZW5kcyIsImFzc2lnbiIsInRhcmdldCIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJub29wIiwiQ2hlY2tib3hHcm91cCIsIl9SZWFjdCRQdXJlQ29tcG9uZW50IiwidGhpcyIsImdldFByb3RvdHlwZU9mIiwiYXBwbHkiLCJpdGVtcyIsImV2ZXJ5IiwiaXRlbSIsImlucHV0UHJvcHMiLCJjaGVja2VkIiwic29tZSIsInNlbGVjdEFsbCIsImFsbENoZWNrZWQiLCJhbGxJdGVtc0NoZWNrZWQiLCJzZWxlY3RBbGxQcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJyZWYiLCJjbGFzc05hbWUiLCJpbmRldGVybWluYXRlIiwiYW55SXRlbXNDaGVja2VkIiwibGFiZWwiLCJvbkNoZWNrZWQiLCJvbkFsbENoZWNrZWQiLCJvblVuY2hlY2tlZCIsIm9uQWxsVW5jaGVja2VkIiwiX3RoaXMyIiwibWFwIiwib25DaGlsZENoZWNrZWQiLCJvbkNoaWxkVW5jaGVja2VkIiwidG9CZVJlbmRlcmVkIiwicmVuZGVyQ2hlY2tib3hlcyIsInNlbGVjdEFsbFBvc2l0aW9uIiwiQkVGT1JFIiwidW5zaGlmdCIsInJlbmRlclNlbGVjdEFsbCIsIkFGVEVSIiwicHVzaCIsImludGVybmFsS2V5cyIsInJlbmRlckNoaWxkcmVuIiwiUHVyZUNvbXBvbmVudCIsInByb3BUeXBlcyIsImFycmF5T2YiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImJvb2wiLCJzaGFwZSIsInN0cmluZyIsIm9uZU9mIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiQUFBQUEsT0FBT0MsUUFDRSxTQUFVQyxHQ0duQixRQUFBQyxHQUFBQyxHQUdBLEdBQUFDLEVBQUFELEdBQ0EsTUFBQUMsR0FBQUQsR0FBQUgsT0FHQSxJQUFBRCxHQUFBSyxFQUFBRCxJQUNBRSxFQUFBRixFQUNBRyxHQUFBLEVBQ0FOLFdBVUEsT0FOQUMsR0FBQUUsR0FBQUksS0FBQVIsRUFBQUMsUUFBQUQsSUFBQUMsUUFBQUUsR0FHQUgsRUFBQU8sR0FBQSxFQUdBUCxFQUFBQyxRQXZCQSxHQUFBSSxLQStEQSxPQW5DQUYsR0FBQU0sRUFBQVAsRUFHQUMsRUFBQU8sRUFBQUwsRUFHQUYsRUFBQUcsRUFBQSxTQUFBSyxHQUEyQyxNQUFBQSxJQUczQ1IsRUFBQVMsRUFBQSxTQUFBWCxFQUFBWSxFQUFBQyxHQUNBWCxFQUFBWSxFQUFBZCxFQUFBWSxJQUNBRyxPQUFBQyxlQUFBaEIsRUFBQVksR0FDQUssY0FBQSxFQUNBQyxZQUFBLEVBQ0FDLElBQUFOLEtBTUFYLEVBQUFrQixF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NkUsY0FBNUJ2QyxHQUNWK0IsbUJBQ0hDLE9BQVE5RyxFQUFBRyxFQUFBZ0UsRUFBQSxLQUNSOEMsTUFBT2pILEVBQUFHLEVBQUFnRSxFQUFBLE1BSE1XLEVBTVZ3QyxXQUlIbkMsTUFBT3ZCLEVBQUEsVUFBVTJELFFBQVF0RCxFQUFBekIsRUFBUzhFLFVBQVVoQyxZQUFZa0MsV0FLeERwQixhQUFjeEMsRUFBQSxVQUFVNkQsS0FLeEJuQixlQUFnQjFDLEVBQUEsVUFBVTZELEtBSzFCaEIsZUFBZ0I3QyxFQUFBLFVBQVU2RCxLQUsxQmYsaUJBQWtCOUMsRUFBQSxVQUFVNkQsS0FLNUJoQyxVQUFXN0IsRUFBQSxVQUFVOEQsS0FLckI5QixlQUFnQmhDLEVBQUEsVUFBVStELE9BSXRCekIsTUFBT3RDLEVBQUEsVUFBVWdFLE9BQ2pCdEMsV0FBWTFCLEVBQUEsVUFBVXhDLFNBRzFCeUYsa0JBQW1CakQsRUFBQSxVQUFVaUUsT0FDekIvQyxFQUFjK0Isa0JBQWtCQyxPQUNoQ2hDLEVBQWMrQixrQkFBa0JJLFNBbER2Qm5DLEVBc0RWZ0QsY0FDSDNDLFNBQ0FpQixhQUFjdkIsRUFDZHlCLGVBQWdCekIsRUFDaEI0QixlQUFnQjVCLEVBQ2hCNkIsaUJBQWtCN0IsRUFDbEJZLFdBQVcsRUFDWEcsa0JBQ0FpQixrQkFBbUIvQixFQUFjK0Isa0JBQWtCQyxRQTlEdENoQyxFQWlFVnFDLGFBQWV0RyxPQUFPb0IsS0FBSzZDLEVBQWNnRCxjUG9DdStLcEcsRUFBNkIsUU9yR25pTG9EIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPVxuLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuLyoqKioqKi8gXHRcdFx0aTogbW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdGV4cG9ydHM6IHt9XG4vKioqKioqLyBcdFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4vKioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUubCA9IHRydWU7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4vKioqKioqLyBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuLyoqKioqKi8gXHR9XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBpZGVudGl0eSBmdW5jdGlvbiBmb3IgY2FsbGluZyBoYXJtb255IGltcG9ydHMgd2l0aCB0aGUgY29ycmVjdCBjb250ZXh0XG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4vKioqKioqLyBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbi8qKioqKiovIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4vKioqKioqLyBcdFx0cmV0dXJuIGdldHRlcjtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDUpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qIGhhcm1vbnkgZXhwb3J0IChpbW11dGFibGUpICovIF9fd2VicGFja19leHBvcnRzX19bXCJhXCJdID0gb21pdEtleXNGcm9tU291cmNlT2JqZWN0O1xuZnVuY3Rpb24gb21pdEtleXNGcm9tU291cmNlT2JqZWN0KHNvdXJjZSl7dmFyIG9taXR0ZWRLZXlzPWFyZ3VtZW50cy5sZW5ndGg+MSYmYXJndW1lbnRzWzFdIT09dW5kZWZpbmVkP2FyZ3VtZW50c1sxXTpbXTtyZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gcmVsb2NhdGVBY2NlcHRlZEtleXMoaGFzaCxrZXkpe2lmKG9taXR0ZWRLZXlzLmluZGV4T2Yoa2V5KT09PS0xKXtoYXNoW2tleV09c291cmNlW2tleV07fXJldHVybiBoYXNoO30se30pO31cblxuLyoqKi8gfSksXG4vKiAxICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuLyogaGFybW9ueSBleHBvcnQgKGltbXV0YWJsZSkgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImFcIl0gPSB1dWlkO1xuZnVuY3Rpb24gdXVpZCgpe3JldHVybidiLScrKFsxZTddKy0xZTMrLTRlMystOGUzKy0xZTExKS5yZXBsYWNlKC9bMDE4XS9nLGZ1bmN0aW9uKGEpe3JldHVybihhXk1hdGgucmFuZG9tKCkqMTY+PmEvNCkudG9TdHJpbmcoMTYpO30pO31cblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy1jaGVja2JveFwiKTtcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNsYXNzbmFtZXNcIik7XG5cbi8qKiovIH0pLFxuLyogNCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcblxuLyoqKi8gfSksXG4vKiA1ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KF9fd2VicGFja19leHBvcnRzX18sIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbnZhciBfZXh0ZW5kcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0YXJnZXQpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBzb3VyY2U9YXJndW1lbnRzW2ldO2Zvcih2YXIga2V5IGluIHNvdXJjZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKXt0YXJnZXRba2V5XT1zb3VyY2Vba2V5XTt9fX1yZXR1cm4gdGFyZ2V0O307dmFyIF9jcmVhdGVDbGFzcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LHByb3BzKXtmb3IodmFyIGk9MDtpPHByb3BzLmxlbmd0aDtpKyspe3ZhciBkZXNjcmlwdG9yPXByb3BzW2ldO2Rlc2NyaXB0b3IuZW51bWVyYWJsZT1kZXNjcmlwdG9yLmVudW1lcmFibGV8fGZhbHNlO2Rlc2NyaXB0b3IuY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gZGVzY3JpcHRvcilkZXNjcmlwdG9yLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxkZXNjcmlwdG9yLmtleSxkZXNjcmlwdG9yKTt9fXJldHVybiBmdW5jdGlvbihDb25zdHJ1Y3Rvcixwcm90b1Byb3BzLHN0YXRpY1Byb3BzKXtpZihwcm90b1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLHByb3RvUHJvcHMpO2lmKHN0YXRpY1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3Isc3RhdGljUHJvcHMpO3JldHVybiBDb25zdHJ1Y3Rvcjt9O30oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsQ29uc3RydWN0b3Ipe2lmKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7fX1mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLGNhbGwpe2lmKCFzZWxmKXt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7fXJldHVybiBjYWxsJiYodHlwZW9mIGNhbGw9PT1cIm9iamVjdFwifHx0eXBlb2YgY2FsbD09PVwiZnVuY3Rpb25cIik/Y2FsbDpzZWxmO31mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3Msc3VwZXJDbGFzcyl7aWYodHlwZW9mIHN1cGVyQ2xhc3MhPT1cImZ1bmN0aW9uXCImJnN1cGVyQ2xhc3MhPT1udWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygc3VwZXJDbGFzcyk7fXN1YkNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MmJnN1cGVyQ2xhc3MucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6c3ViQ2xhc3MsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pO2lmKHN1cGVyQ2xhc3MpT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcyxzdXBlckNsYXNzKTpzdWJDbGFzcy5fX3Byb3RvX189c3VwZXJDbGFzczt9dmFyIG5vb3A9ZnVuY3Rpb24gbm9vcCgpe307dmFyIENoZWNrYm94R3JvdXA9ZnVuY3Rpb24oX1JlYWN0JFB1cmVDb21wb25lbnQpe19pbmhlcml0cyhDaGVja2JveEdyb3VwLF9SZWFjdCRQdXJlQ29tcG9uZW50KTtmdW5jdGlvbiBDaGVja2JveEdyb3VwKCl7X2NsYXNzQ2FsbENoZWNrKHRoaXMsQ2hlY2tib3hHcm91cCk7cmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsKENoZWNrYm94R3JvdXAuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoQ2hlY2tib3hHcm91cCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7fV9jcmVhdGVDbGFzcyhDaGVja2JveEdyb3VwLFt7a2V5OidhbGxJdGVtc0NoZWNrZWQnLHZhbHVlOmZ1bmN0aW9uIGFsbEl0ZW1zQ2hlY2tlZCgpe3JldHVybiB0aGlzLnByb3BzLml0ZW1zLmV2ZXJ5KGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBpdGVtLmlucHV0UHJvcHMuY2hlY2tlZD09PXRydWU7fSk7fX0se2tleTonYW55SXRlbXNDaGVja2VkJyx2YWx1ZTpmdW5jdGlvbiBhbnlJdGVtc0NoZWNrZWQoKXtyZXR1cm4gdGhpcy5wcm9wcy5pdGVtcy5zb21lKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBpdGVtLmlucHV0UHJvcHMuY2hlY2tlZD09PXRydWU7fSk7fX0se2tleToncmVuZGVyU2VsZWN0QWxsJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJTZWxlY3RBbGwoKXtpZih0aGlzLnByb3BzLnNlbGVjdEFsbCl7dmFyIGFsbENoZWNrZWQ9dGhpcy5hbGxJdGVtc0NoZWNrZWQoKTt2YXIgaW5wdXRQcm9wcz10aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLmlucHV0UHJvcHM7cmV0dXJuIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQuYS5jcmVhdGVFbGVtZW50KF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0LmEsX2V4dGVuZHMoe30sdGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcyx7cmVmOidzZWxlY3RfYWxsJyxrZXk6J2NiX3NlbGVjdF9hbGwnLGNsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cC1zZWxlY3RhbGwnLHRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMuY2xhc3NOYW1lKSxpbnB1dFByb3BzOl9leHRlbmRzKHt9LGlucHV0UHJvcHMse2NoZWNrZWQ6YWxsQ2hlY2tlZCxpbmRldGVybWluYXRlOiFhbGxDaGVja2VkJiZ0aGlzLmFueUl0ZW1zQ2hlY2tlZCgpLG5hbWU6aW5wdXRQcm9wcyYmaW5wdXRQcm9wcy5uYW1lP2lucHV0UHJvcHMubmFtZTonY2Jfc2VsZWN0X2FsbCd9KSxsYWJlbDp0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLmxhYmVsfHwnU2VsZWN0IEFsbCcsb25DaGVja2VkOnRoaXMucHJvcHMub25BbGxDaGVja2VkLG9uVW5jaGVja2VkOnRoaXMucHJvcHMub25BbGxVbmNoZWNrZWR9KSk7fX19LHtrZXk6J3JlbmRlckNoZWNrYm94ZXMnLHZhbHVlOmZ1bmN0aW9uIHJlbmRlckNoZWNrYm94ZXMoKXt2YXIgX3RoaXMyPXRoaXM7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdC5hLF9leHRlbmRzKHt9LGl0ZW0se2tleTppdGVtLmlucHV0UHJvcHMubmFtZSxvbkNoZWNrZWQ6X3RoaXMyLnByb3BzLm9uQ2hpbGRDaGVja2VkLG9uVW5jaGVja2VkOl90aGlzMi5wcm9wcy5vbkNoaWxkVW5jaGVja2VkfSkpO30pO319LHtrZXk6J3JlbmRlckNoaWxkcmVuJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJDaGlsZHJlbigpe3ZhciB0b0JlUmVuZGVyZWQ9W3RoaXMucmVuZGVyQ2hlY2tib3hlcygpXTtpZih0aGlzLnByb3BzLnNlbGVjdEFsbCYmdGhpcy5wcm9wcy5zZWxlY3RBbGxQb3NpdGlvbil7c3dpdGNoKHRoaXMucHJvcHMuc2VsZWN0QWxsUG9zaXRpb24pe2Nhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5CRUZPUkU6dG9CZVJlbmRlcmVkLnVuc2hpZnQodGhpcy5yZW5kZXJTZWxlY3RBbGwoKSk7YnJlYWs7Y2FzZSBDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkFGVEVSOnRvQmVSZW5kZXJlZC5wdXNoKHRoaXMucmVuZGVyU2VsZWN0QWxsKCkpO2JyZWFrO319cmV0dXJuIHRvQmVSZW5kZXJlZDt9fSx7a2V5OidyZW5kZXInLHZhbHVlOmZ1bmN0aW9uIHJlbmRlcigpe3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudCgnZGl2JyxfZXh0ZW5kcyh7fSxfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX1tcImFcIiAvKiBkZWZhdWx0ICovXSkodGhpcy5wcm9wcyxDaGVja2JveEdyb3VwLmludGVybmFsS2V5cykse3JlZjonZ3JvdXAnLGNsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cCcsdGhpcy5wcm9wcy5jbGFzc05hbWUpfSksdGhpcy5yZW5kZXJDaGlsZHJlbigpKTt9fV0pO3JldHVybiBDaGVja2JveEdyb3VwO30oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLlB1cmVDb21wb25lbnQpO0NoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb249e0JFRk9SRTpfX3dlYnBhY2tfcmVxdWlyZV9fLmkoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19bXCJhXCIgLyogZGVmYXVsdCAqL10pKCksQUZURVI6X193ZWJwYWNrX3JlcXVpcmVfXy5pKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fW1wiYVwiIC8qIGRlZmF1bHQgKi9dKSgpfTtDaGVja2JveEdyb3VwLnByb3BUeXBlcz17aXRlbXM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uYXJyYXlPZihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdC5hLnByb3BUeXBlcy5pbnB1dFByb3BzKS5pc1JlcXVpcmVkLG9uQWxsQ2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLG9uQWxsVW5jaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMsb25DaGlsZENoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxvbkNoaWxkVW5jaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMsc2VsZWN0QWxsOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmJvb2wsc2VsZWN0QWxsUHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc2hhcGUoe2xhYmVsOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnN0cmluZyxpbnB1dFByb3BzOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm9iamVjdH0pLHNlbGVjdEFsbFBvc2l0aW9uOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLm9uZU9mKFtDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkJFRk9SRSxDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkFGVEVSXSl9O0NoZWNrYm94R3JvdXAuZGVmYXVsdFByb3BzPXtpdGVtczpbXSxvbkFsbENoZWNrZWQ6bm9vcCxvbkFsbFVuY2hlY2tlZDpub29wLG9uQ2hpbGRDaGVja2VkOm5vb3Asb25DaGlsZFVuY2hlY2tlZDpub29wLHNlbGVjdEFsbDpmYWxzZSxzZWxlY3RBbGxQcm9wczp7fSxzZWxlY3RBbGxQb3NpdGlvbjpDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkJFRk9SRX07Q2hlY2tib3hHcm91cC5pbnRlcm5hbEtleXM9T2JqZWN0LmtleXMoQ2hlY2tib3hHcm91cC5kZWZhdWx0UHJvcHMpOy8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcImRlZmF1bHRcIl0gPSBDaGVja2JveEdyb3VwO1xuXG4vKioqLyB9KVxuLyoqKioqKi8gXSk7XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIGluZGV4LmpzIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGlkZW50aXR5IGZ1bmN0aW9uIGZvciBjYWxsaW5nIGhhcm1vbnkgaW1wb3J0cyB3aXRoIHRoZSBjb3JyZWN0IGNvbnRleHRcbiBcdF9fd2VicGFja19yZXF1aXJlX18uaSA9IGZ1bmN0aW9uKHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfTtcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7XG4gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbiBcdFx0XHRcdGdldDogZ2V0dGVyXG4gXHRcdFx0fSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gNSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYTQwN2IxZDczZjY1ZjAwYjUwZjEiLCIvKipcbiAqIFJldHVybnMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBzdXBwbGllZCBvYmplY3Qgd2l0aG91dCB0aGUgZ2l2ZW4ga2V5cy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb21pdEtleXNGcm9tU291cmNlT2JqZWN0KHNvdXJjZSwgb21pdHRlZEtleXMgPSBbXSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZShmdW5jdGlvbiByZWxvY2F0ZUFjY2VwdGVkS2V5cyhoYXNoLCBrZXkpIHtcbiAgICAgICAgaWYgKG9taXR0ZWRLZXlzLmluZGV4T2Yoa2V5KSA9PT0gLTEpIHtcbiAgICAgICAgICAgIGhhc2hba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfSwge30pO1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcGFja2FnZXMvYm91bmRsZXNzLXV0aWxzLW9taXQta2V5cy9pbmRleC5qcyIsIi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBBZGRzIGEgcHJlZml4IHNvIGl0IGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgYW4gSFRNTCBJRC5cbiAqIEJhc2VkIG9uIHtAbGluayBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9qZWQvOTgyODgzIHRoaXMgaW1wbGVtZW50YXRpb259LlxuICpcbiAqIEByZXR1cm4ge3N0cmluZ30gYSB1bmlxdWUgaWRlbnRpZmllclxuICpcbiAqIEBleGFtcGxlXG4gKiB1dWlkKCk7IC8vIGItMWYyY2QyN2YtMDc1NC00MzQ0LTlkMjAtNDM2YTIwMWIyZjgwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHV1aWQoKSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgKi9cbiAgICByZXR1cm4gJ2ItJyArIChbMWU3XSstMWUzKy00ZTMrLThlMystMWUxMSkucmVwbGFjZSgvWzAxOF0vZyxhPT4oYV5NYXRoLnJhbmRvbSgpKjE2Pj5hLzQpLnRvU3RyaW5nKDE2KSk7XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xufVxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcGFja2FnZXMvYm91bmRsZXNzLXV0aWxzLXV1aWQvaW5kZXguanMiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtY2hlY2tib3hcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJib3VuZGxlc3MtY2hlY2tib3hcIn1cbi8vIG1vZHVsZSBpZCA9IDJcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2xhc3NuYW1lc1wiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn1cbi8vIG1vZHVsZSBpZCA9IDNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJyZWFjdFwifVxuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJpbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXN9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcblxuaW1wb3J0IENoZWNrYm94IGZyb20gJ2JvdW5kbGVzcy1jaGVja2JveCc7XG5pbXBvcnQgb21pdCBmcm9tICdib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzJztcbmltcG9ydCB1dWlkIGZyb20gJ2JvdW5kbGVzcy11dGlscy11dWlkJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuXG4vKipcbiMgQ2hlY2tib3hHcm91cFxuX19BIGNvbnRyb2xsZXIgdmlldyBmb3IgbWFuYWdpbmcgdGhlIGFnZ3JlZ2F0ZSBzdGF0ZSBvZiBtdWx0aXBsZSwgcmVsYXRlZCBjaGVja2JveGVzLl9fXG5cblRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgYENoZWNrYm94R3JvdXBgIGlzIGEgXCJzZWxlY3QgYWxsXCIgLyBjaGlsZHJlbiBzY2VuYXJpby4gVGhpcyBwYXJ0aWN1bGFyXG5jb25maWd1cmF0aW9uIGlzIGJ1aWx0LWluIGFuZCBpcyBhY3RpdmF0ZWQgYnkgcGFzc2luZyB0aGUgYHNlbGVjdEFsbGAgcHJvcC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hlY2tib3hHcm91cCBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQge1xuICAgIHN0YXRpYyBzZWxlY3RBbGxQb3NpdGlvbiA9IHtcbiAgICAgICAgQkVGT1JFOiB1dWlkKCksXG4gICAgICAgIEFGVEVSOiB1dWlkKCksXG4gICAgfVxuXG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBkYXRhIHdpc2hlZCB0byBiZSByZW5kZXJlZCwgZWFjaCBpdGVtIG11c3QgY29uZm9ybSB0byB0aGUgW0NoZWNrYm94IHByb3Agc3BlY10oLi9DaGVja2JveCNwcm9wcylcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBQcm9wVHlwZXMuYXJyYXlPZihDaGVja2JveC5wcm9wVHlwZXMuaW5wdXRQcm9wcykuaXNSZXF1aXJlZCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbGVkIHdoZW4gYWxsIGNoaWxkcmVuIGJlY29tZSBjaGVja2VkIChub3QgZmlyZWQgb24gZmlyc3QgcmVuZGVyKSwgbm8gcmV0dXJuXG4gICAgICAgICAqL1xuICAgICAgICBvbkFsbENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhbGwgY2hpbGRyZW4gYmVjb21lIHVuY2hlY2tlZCAobm90IGZpcmVkIG9uIGZpcnN0IHJlbmRlciksIG5vIHJldHVyblxuICAgICAgICAgKi9cbiAgICAgICAgb25BbGxVbmNoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZFVuY2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlbmRlcnMgYSBtYXN0ZXIgY2hlY2tib3ggdGhhdCBjYW4gbWFuaXB1bGF0ZSB0aGUgdmFsdWVzIG9mIGFsbCBjaGlsZHJlbiBzaW11bHRhbmVvdXNseVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsOiBQcm9wVHlwZXMuYm9vbCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogbXVzdCBjb25mb3JtIHRvIHRoZSBbQ2hlY2tib3ggcHJvcCBzcGVjXSguL0NoZWNrYm94I3Byb3BzKVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHRoZSB0ZXh0IG9yIHJlbmRlcmFibGUgbm9kZSB0byBkaXNwbGF5IG5leHQgdG8gdGhlIGNoZWNrYm94XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICAgICAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgfSksXG5cbiAgICAgICAgc2VsZWN0QWxsUG9zaXRpb246IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICAgICAgICBDaGVja2JveEdyb3VwLnNlbGVjdEFsbFBvc2l0aW9uLkJFRk9SRSxcbiAgICAgICAgICAgIENoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb24uQUZURVIsXG4gICAgICAgIF0pLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgb25BbGxDaGVja2VkOiBub29wLFxuICAgICAgICBvbkFsbFVuY2hlY2tlZDogbm9vcCxcbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IG5vb3AsXG4gICAgICAgIG9uQ2hpbGRVbmNoZWNrZWQ6IG5vb3AsXG4gICAgICAgIHNlbGVjdEFsbDogZmFsc2UsXG4gICAgICAgIHNlbGVjdEFsbFByb3BzOiB7fSxcbiAgICAgICAgc2VsZWN0QWxsUG9zaXRpb246IENoZWNrYm94R3JvdXAuc2VsZWN0QWxsUG9zaXRpb24uQkVGT1JFLFxuICAgIH1cblxuICAgIHN0YXRpYyBpbnRlcm5hbEtleXMgPSBPYmplY3Qua2V5cyhDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcylcblxuICAgIGFsbEl0ZW1zQ2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICBhbnlJdGVtc0NoZWNrZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLml0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICByZW5kZXJTZWxlY3RBbGwoKSB7XG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdEFsbCkge1xuICAgICAgICAgICAgY29uc3QgYWxsQ2hlY2tlZCA9IHRoaXMuYWxsSXRlbXNDaGVja2VkKCk7XG4gICAgICAgICAgICBjb25zdCB7aW5wdXRQcm9wc30gPSB0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wc31cbiAgICAgICAgICAgICAgICAgICAgcmVmPSdzZWxlY3RfYWxsJ1xuICAgICAgICAgICAgICAgICAgICBrZXk9J2NiX3NlbGVjdF9hbGwnXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAtc2VsZWN0YWxsJywgdGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYWxsQ2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU6ICFhbGxDaGVja2VkICYmIHRoaXMuYW55SXRlbXNDaGVja2VkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dFByb3BzICYmIGlucHV0UHJvcHMubmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBpbnB1dFByb3BzLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NiX3NlbGVjdF9hbGwnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBsYWJlbD17dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbCB8fCAnU2VsZWN0IEFsbCd9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZD17dGhpcy5wcm9wcy5vbkFsbENoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uVW5jaGVja2VkPXt0aGlzLnByb3BzLm9uQWxsVW5jaGVja2VkfSAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbmRlckNoZWNrYm94ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLml0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgey4uLml0ZW19XG4gICAgICAgICAgICAgICAgICAgIGtleT17aXRlbS5pbnB1dFByb3BzLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hlY2tlZD17dGhpcy5wcm9wcy5vbkNoaWxkQ2hlY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgb25VbmNoZWNrZWQ9e3RoaXMucHJvcHMub25DaGlsZFVuY2hlY2tlZH0gLz5cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlbmRlckNoaWxkcmVuKCkge1xuICAgICAgICBjb25zdCB0b0JlUmVuZGVyZWQgPSBbdGhpcy5yZW5kZXJDaGVja2JveGVzKCldO1xuXG4gICAgICAgIGlmICh0aGlzLnByb3BzLnNlbGVjdEFsbCAmJiB0aGlzLnByb3BzLnNlbGVjdEFsbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucHJvcHMuc2VsZWN0QWxsUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5CRUZPUkU6XG4gICAgICAgICAgICAgICAgdG9CZVJlbmRlcmVkLnVuc2hpZnQodGhpcy5yZW5kZXJTZWxlY3RBbGwoKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGxQb3NpdGlvbi5BRlRFUjpcbiAgICAgICAgICAgICAgICB0b0JlUmVuZGVyZWQucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbCgpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0b0JlUmVuZGVyZWQ7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIHsuLi5vbWl0KHRoaXMucHJvcHMsIENoZWNrYm94R3JvdXAuaW50ZXJuYWxLZXlzKX1cbiAgICAgICAgICAgICAgICByZWY9J2dyb3VwJ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAnLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9wYWNrYWdlcy9ib3VuZGxlc3MtY2hlY2tib3gtZ3JvdXAvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9

@@ -5,6 +5,7 @@ import React, {PropTypes} from 'react';

import Checkbox from 'boundless-checkbox';
import omit from '../boundless-utils-omit-keys/index';
import noop from '../boundless-utils-noop/index';
import uuid from '../boundless-utils-uuid/index';
import omit from 'boundless-utils-omit-keys';
import uuid from 'boundless-utils-uuid';
const noop = () => {};
/**

@@ -11,0 +12,0 @@ # CheckboxGroup

{
"name": "boundless-checkbox-group",
"version": "1.0.0-beta.5",
"version": "1.0.0-beta.6",
"description": "A controller view for managing the aggregate state of multiple, related checkboxes.",
"browser": "build/index.js",
"main": "build/index.js",
"module": "index.js",
"repository": {

@@ -29,10 +30,7 @@ "type": "git",

"dependencies": {
"boundless-checkbox": "^1.0.0-beta.5",
"boundless-checkbox": "^1.0.0-beta.6",
"boundless-utils-omit-keys": "^1.0.0-beta.6",
"boundless-utils-uuid": "^1.0.0-beta.5",
"classnames": "^2.1.5"
},
"devDependencies": {
"boundless-utils-noop": "^1.0.0",
"boundless-utils-omit-keys": "^1.0.0-beta.3",
"boundless-utils-uuid": "^1.0.0"
},
"peerDependencies": {

@@ -39,0 +37,0 @@ "react": ">= 15.3",

@@ -46,3 +46,3 @@ THIS IS AN AUTOGENERATED FILE. EDIT INDEX.JS INSTEAD.

<td><pre><code>function</code></pre></td>
<td><pre><code class="language-js">noop</code></pre></td>
<td><pre><code class="language-js">() => {}</code></pre></td>
<td>called when all children become checked (not fired on first render), no return</td>

@@ -54,3 +54,3 @@ </tr>

<td><pre><code>function</code></pre></td>
<td><pre><code class="language-js">noop</code></pre></td>
<td><pre><code class="language-js">() => {}</code></pre></td>
<td>called when all children become unchecked (not fired on first render), no return</td>

@@ -62,3 +62,3 @@ </tr>

<td><pre><code>function</code></pre></td>
<td><pre><code class="language-js">noop</code></pre></td>
<td><pre><code class="language-js">() => {}</code></pre></td>
<td>called when a specific child has become checked, returns the child definition</td>

@@ -70,3 +70,3 @@ </tr>

<td><pre><code>function</code></pre></td>
<td><pre><code class="language-js">noop</code></pre></td>
<td><pre><code class="language-js">() => {}</code></pre></td>
<td>called when a specific child has become checked, returns the child definition</td>

@@ -99,1 +99,2 @@ </tr>

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc