boundless-checkbox-group
Advanced tools
Comparing version 1.0.1 to 1.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=5)}([function(e,t){e.exports=require("boundless-checkbox")},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,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),p=n(3),i=n.n(p),u=n(0),a=n.n(u),h=n(1),f=n.n(h),d=n(2),y=n.n(d),k=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},b=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}}(),m=function(){},P=function(e){function t(){var e,n,s,l;r(this,t);for(var c=arguments.length,p=Array(c),i=0;i<c;i++)p[i]=arguments[i];return n=s=o(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(p))),s.selectAllUUID=y()(),l=n,o(s,l)}return s(t,e),b(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:"renderSelectAllCheckbox",value:function(){var e=this.allItemsChecked(),t=this.props.selectAllProps.inputProps;return c.a.createElement(a.a,k({},this.props.selectAllProps,{key:this.selectAllUUID,className:i()("b-checkbox-group-all",this.props.selectAllProps.className),inputProps:k({},t,{checked:e,indeterminate:!e&&this.anyItemsChecked(),name:t&&t.name?t.name:null}),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,k({},t,{key:t.inputProps.name,onChecked:e.props.onChildChecked,onUnchecked:e.props.onChildUnchecked}))})}},{key:"renderChildren",value:function(){var e=[this.renderCheckboxes()];switch(this.props.selectAll){case t.selectAll.BEFORE:e.unshift(this.renderSelectAllCheckbox());break;case t.selectAll.AFTER:e.push(this.renderSelectAllCheckbox())}return e}},{key:"render",value:function(){return c.a.createElement(this.props.component,k({},f()(this.props,t.internalKeys),{className:i()("b-checkbox-group",this.props.className)}),this.renderChildren())}}]),t}(c.a.PureComponent);P.selectAll={BEFORE:y()(),AFTER:y()(),NONE:y()()},P.propTypes={"*":l.PropTypes.any,component:l.PropTypes.string,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.oneOf([P.selectAll.BEFORE,P.selectAll.AFTER,P.selectAll.NONE]),selectAllProps:l.PropTypes.shape({"*":l.PropTypes.any,label:l.PropTypes.string,inputProps:l.PropTypes.object})},P.defaultProps={component:"div",items:[],onAllChecked:m,onAllUnchecked:m,onChildChecked:m,onChildUnchecked:m,selectAll:P.selectAll.BEFORE,selectAllProps:{}},P.internalKeys=Object.keys(P.defaultProps),t.default=P}]); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIDIyZGI0MDhkYjIwMGY2Y2U2NDU1Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy1jaGVja2JveFwifSIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy11dGlscy11dWlkXCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLWNoZWNrYm94LWdyb3VwL2luZGV4LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsInJlcXVpcmUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwic2VsZiIsIlJlZmVyZW5jZUVycm9yIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZSIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIm5vb3AiLCJDaGVja2JveEdyb3VwIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJfcmVmIiwiX3RlbXAiLCJfdGhpcyIsIl9yZXQiLCJ0aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJnZXRQcm90b3R5cGVPZiIsImFwcGx5IiwiY29uY2F0Iiwic2VsZWN0QWxsVVVJRCIsIml0ZW1zIiwiZXZlcnkiLCJpdGVtIiwiaW5wdXRQcm9wcyIsImNoZWNrZWQiLCJzb21lIiwiYWxsQ2hlY2tlZCIsImFsbEl0ZW1zQ2hlY2tlZCIsInNlbGVjdEFsbFByb3BzIiwiYSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJpbmRldGVybWluYXRlIiwiYW55SXRlbXNDaGVja2VkIiwibGFiZWwiLCJvbkNoZWNrZWQiLCJvbkFsbENoZWNrZWQiLCJvblVuY2hlY2tlZCIsIm9uQWxsVW5jaGVja2VkIiwiX3RoaXMyIiwibWFwIiwib25DaGlsZENoZWNrZWQiLCJvbkNoaWxkVW5jaGVja2VkIiwiY2hpbGRyZW4iLCJyZW5kZXJDaGVja2JveGVzIiwic2VsZWN0QWxsIiwiQkVGT1JFIiwidW5zaGlmdCIsInJlbmRlclNlbGVjdEFsbENoZWNrYm94IiwiQUZURVIiLCJwdXNoIiwiY29tcG9uZW50IiwiaW50ZXJuYWxLZXlzIiwicmVuZGVyQ2hpbGRyZW4iLCJQdXJlQ29tcG9uZW50IiwiTk9ORSIsInByb3BUeXBlcyIsIioiLCJhbnkiLCJzdHJpbmciLCJhcnJheU9mIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJvbmVPZiIsInNoYXBlIiwiZGVmYXVsdFByb3BzIiwia2V5cyJdLCJtYXBwaW5ncyI6IkFBQUFBLE9BQU9DLFFBQ0UsU0FBVUMsR0NHbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFILE9BR0EsSUFBQUQsR0FBQUssRUFBQUQsSUFDQUUsRUFBQUYsRUFDQUcsR0FBQSxFQUNBTixXQVVBLE9BTkFDLEdBQUFFLEdBQUFJLEtBQUFSLEVBQUFDLFFBQUFELElBQUFDLFFBQUFFLEdBR0FILEVBQUFPLEdBQUEsRUFHQVAsRUFBQUMsUUF2QkEsR0FBQUksS0ErREEsT0FuQ0FGLEdBQUFNLEVBQUFQLEVBR0FDLEVBQUFPLEVBQUFMLEVBR0FGLEVBQUFHLEVBQUEsU0FBQUssR0FBMkMsTUFBQUEsSUFHM0NSLEVBQUFTLEVBQUEsU0FBQVgsRUFB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QUNQaUUsS0FBTWpFLE9BSk9lLEVBT1ZtRCxXQUlIQyxJQUFLNUUsRUFBQSxVQUFVNkUsSUFLZlAsVUFBV3RFLEVBQUEsVUFBVThFLE9BS3JCdkMsTUFBT3ZDLEVBQUEsVUFBVStFLFFBQVExRSxFQUFBMkMsRUFBUzJCLFVBQVVqQyxZQUFZc0MsV0FLeER6QixhQUFjdkQsRUFBQSxVQUFVaUYsS0FLeEJ4QixlQUFnQnpELEVBQUEsVUFBVWlGLEtBSzFCckIsZUFBZ0I1RCxFQUFBLFVBQVVpRixLQUsxQnBCLGlCQUFrQjdELEVBQUEsVUFBVWlGLEtBSzVCakIsVUFBV2hFLEVBQUEsVUFBVWtGLE9BQ2pCMUQsRUFBY3dDLFVBQVVDLE9BQ3hCekMsRUFBY3dDLFVBQVVJLE1BQ3hCNUMsRUFBY3dDLFVBQVVVLE9BTTVCM0IsZUFBZ0IvQyxFQUFBLFVBQVVtRixPQUl0QlAsSUFBSzVFLEVBQUEsVUFBVTZFLElBS2Z4QixNQUFPckQsRUFBQSxVQUFVOEUsT0FDakJwQyxXQUFZMUMsRUFBQSxVQUFVdkIsVUFqRWIrQyxFQXFFVjRELGNBQ0hkLFVBQVcsTUFDWC9CLFNBQ0FnQixhQUFjaEMsRUFDZGtDLGVBQWdCbEMsRUFDaEJxQyxlQUFnQnJDLEVBQ2hCc0MsaUJBQWtCdEMsRUFDbEJ5QyxVQUFXeEMsRUFBY3dDLFVBQVVDLE9BQ25DbEIsbUJBN0VhdkIsRUFnRlYrQyxhQUFlckcsT0FBT21ILEtBQUs3RCxFQUFjNEQsY1BvQnV1THBHLEVBQTZCLFFPcEdueUx3QyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYm91bmRsZXNzLWNoZWNrYm94XCIpO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYm91bmRsZXNzLXV0aWxzLW9taXQta2V5c1wiKTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy11dGlscy11dWlkXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2xhc3NuYW1lc1wiKTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfYm91bmRsZXNzX3V0aWxzX3V1aWRfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fKTtcbnZhciBfZXh0ZW5kcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0YXJnZXQpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBzb3VyY2U9YXJndW1lbnRzW2ldO2Zvcih2YXIga2V5IGluIHNvdXJjZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKXt0YXJnZXRba2V5XT1zb3VyY2Vba2V5XTt9fX1yZXR1cm4gdGFyZ2V0O307dmFyIF9jcmVhdGVDbGFzcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LHByb3BzKXtmb3IodmFyIGk9MDtpPHByb3BzLmxlbmd0aDtpKyspe3ZhciBkZXNjcmlwdG9yPXByb3BzW2ldO2Rlc2NyaXB0b3IuZW51bWVyYWJsZT1kZXNjcmlwdG9yLmVudW1lcmFibGV8fGZhbHNlO2Rlc2NyaXB0b3IuY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gZGVzY3JpcHRvcilkZXNjcmlwdG9yLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxkZXNjcmlwdG9yLmtleSxkZXNjcmlwdG9yKTt9fXJldHVybiBmdW5jdGlvbihDb25zdHJ1Y3Rvcixwcm90b1Byb3BzLHN0YXRpY1Byb3BzKXtpZihwcm90b1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLHByb3RvUHJvcHMpO2lmKHN0YXRpY1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3Isc3RhdGljUHJvcHMpO3JldHVybiBDb25zdHJ1Y3Rvcjt9O30oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsQ29uc3RydWN0b3Ipe2lmKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7fX1mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLGNhbGwpe2lmKCFzZWxmKXt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7fXJldHVybiBjYWxsJiYodHlwZW9mIGNhbGw9PT1cIm9iamVjdFwifHx0eXBlb2YgY2FsbD09PVwiZnVuY3Rpb25cIik/Y2FsbDpzZWxmO31mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3Msc3VwZXJDbGFzcyl7aWYodHlwZW9mIHN1cGVyQ2xhc3MhPT1cImZ1bmN0aW9uXCImJnN1cGVyQ2xhc3MhPT1udWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygc3VwZXJDbGFzcyk7fXN1YkNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MmJnN1cGVyQ2xhc3MucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6c3ViQ2xhc3MsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pO2lmKHN1cGVyQ2xhc3MpT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcyxzdXBlckNsYXNzKTpzdWJDbGFzcy5fX3Byb3RvX189c3VwZXJDbGFzczt9dmFyIG5vb3A9ZnVuY3Rpb24gbm9vcCgpe307dmFyIENoZWNrYm94R3JvdXA9ZnVuY3Rpb24oX1JlYWN0JFB1cmVDb21wb25lbnQpe19pbmhlcml0cyhDaGVja2JveEdyb3VwLF9SZWFjdCRQdXJlQ29tcG9uZW50KTtmdW5jdGlvbiBDaGVja2JveEdyb3VwKCl7dmFyIF9yZWY7dmFyIF90ZW1wLF90aGlzLF9yZXQ7X2NsYXNzQ2FsbENoZWNrKHRoaXMsQ2hlY2tib3hHcm91cCk7Zm9yKHZhciBfbGVuPWFyZ3VtZW50cy5sZW5ndGgsYXJncz1BcnJheShfbGVuKSxfa2V5PTA7X2tleTxfbGVuO19rZXkrKyl7YXJnc1tfa2V5XT1hcmd1bWVudHNbX2tleV07fXJldHVybiBfcmV0PShfdGVtcD0oX3RoaXM9X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywoX3JlZj1DaGVja2JveEdyb3VwLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKENoZWNrYm94R3JvdXApKS5jYWxsLmFwcGx5KF9yZWYsW3RoaXNdLmNvbmNhdChhcmdzKSkpLF90aGlzKSxfdGhpcy5zZWxlY3RBbGxVVUlEPV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fX2RlZmF1bHQoKSgpLF90ZW1wKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcyxfcmV0KTt9X2NyZWF0ZUNsYXNzKENoZWNrYm94R3JvdXAsW3trZXk6J2FsbEl0ZW1zQ2hlY2tlZCcsdmFsdWU6ZnVuY3Rpb24gYWxsSXRlbXNDaGVja2VkKCl7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuZXZlcnkoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkPT09dHJ1ZTt9KTt9fSx7a2V5OidhbnlJdGVtc0NoZWNrZWQnLHZhbHVlOmZ1bmN0aW9uIGFueUl0ZW1zQ2hlY2tlZCgpe3JldHVybiB0aGlzLnByb3BzLml0ZW1zLnNvbWUoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkPT09dHJ1ZTt9KTt9fSx7a2V5OidyZW5kZXJTZWxlY3RBbGxDaGVja2JveCcsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyU2VsZWN0QWxsQ2hlY2tib3goKXt2YXIgYWxsQ2hlY2tlZD10aGlzLmFsbEl0ZW1zQ2hlY2tlZCgpO3ZhciBpbnB1dFByb3BzPXRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMuaW5wdXRQcm9wcztyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fX2RlZmF1bHQuYSxfZXh0ZW5kcyh7fSx0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLHtrZXk6dGhpcy5zZWxlY3RBbGxVVUlELGNsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cC1hbGwnLHRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMuY2xhc3NOYW1lKSxpbnB1dFByb3BzOl9leHRlbmRzKHt9LGlucHV0UHJvcHMse2NoZWNrZWQ6YWxsQ2hlY2tlZCxpbmRldGVybWluYXRlOiFhbGxDaGVja2VkJiZ0aGlzLmFueUl0ZW1zQ2hlY2tlZCgpLG5hbWU6aW5wdXRQcm9wcyYmaW5wdXRQcm9wcy5uYW1lP2lucHV0UHJvcHMubmFtZTpudWxsfSksbGFiZWw6dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbHx8J1NlbGVjdCBBbGwnLG9uQ2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsQ2hlY2tlZCxvblVuY2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsVW5jaGVja2VkfSkpO319LHtrZXk6J3JlbmRlckNoZWNrYm94ZXMnLHZhbHVlOmZ1bmN0aW9uIHJlbmRlckNoZWNrYm94ZXMoKXt2YXIgX3RoaXMyPXRoaXM7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdC5hLF9leHRlbmRzKHt9LGl0ZW0se2tleTppdGVtLmlucHV0UHJvcHMubmFtZSxvbkNoZWNrZWQ6X3RoaXMyLnByb3BzLm9uQ2hpbGRDaGVja2VkLG9uVW5jaGVja2VkOl90aGlzMi5wcm9wcy5vbkNoaWxkVW5jaGVja2VkfSkpO30pO319LHtrZXk6J3JlbmRlckNoaWxkcmVuJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJDaGlsZHJlbigpe3ZhciBjaGlsZHJlbj1bdGhpcy5yZW5kZXJDaGVja2JveGVzKCldO3N3aXRjaCh0aGlzLnByb3BzLnNlbGVjdEFsbCl7Y2FzZSBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5CRUZPUkU6Y2hpbGRyZW4udW5zaGlmdCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO2JyZWFrO2Nhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQUZURVI6Y2hpbGRyZW4ucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO2JyZWFrO31yZXR1cm4gY2hpbGRyZW47fX0se2tleToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQsX2V4dGVuZHMoe30sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX19kZWZhdWx0KCkodGhpcy5wcm9wcyxDaGVja2JveEdyb3VwLmludGVybmFsS2V5cykse2NsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cCcsdGhpcy5wcm9wcy5jbGFzc05hbWUpfSksdGhpcy5yZW5kZXJDaGlsZHJlbigpKTt9fV0pO3JldHVybiBDaGVja2JveEdyb3VwO30oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLlB1cmVDb21wb25lbnQpO0NoZWNrYm94R3JvdXAuc2VsZWN0QWxsPXtCRUZPUkU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCgpKCksQUZURVI6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCgpKCksTk9ORTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfYm91bmRsZXNzX3V0aWxzX3V1aWRfX19kZWZhdWx0KCkoKX07Q2hlY2tib3hHcm91cC5wcm9wVHlwZXM9eycqJzpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hbnksY29tcG9uZW50Ol9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnN0cmluZyxpdGVtczpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hcnJheU9mKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0LmEucHJvcFR5cGVzLmlucHV0UHJvcHMpLmlzUmVxdWlyZWQsb25BbGxDaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMsb25BbGxVbmNoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxvbkNoaWxkQ2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLG9uQ2hpbGRVbmNoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxzZWxlY3RBbGw6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0ub25lT2YoW0NoZWNrYm94R3JvdXAuc2VsZWN0QWxsLkJFRk9SRSxDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5BRlRFUixDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5OT05FXSksc2VsZWN0QWxsUHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc2hhcGUoeycqJzpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hbnksbGFiZWw6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc3RyaW5nLGlucHV0UHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0ub2JqZWN0fSl9O0NoZWNrYm94R3JvdXAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6J2RpdicsaXRlbXM6W10sb25BbGxDaGVja2VkOm5vb3Asb25BbGxVbmNoZWNrZWQ6bm9vcCxvbkNoaWxkQ2hlY2tlZDpub29wLG9uQ2hpbGRVbmNoZWNrZWQ6bm9vcCxzZWxlY3RBbGw6Q2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQkVGT1JFLHNlbGVjdEFsbFByb3BzOnt9fTtDaGVja2JveEdyb3VwLmludGVybmFsS2V5cz1PYmplY3Qua2V5cyhDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcyk7LyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IENoZWNrYm94R3JvdXA7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gaW5kZXguanMiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAyMmRiNDA4ZGIyMDBmNmNlNjQ1NSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy1jaGVja2JveFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy1jaGVja2JveFwifVxuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLXV0aWxzLW9taXQta2V5c1wifVxuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtdXRpbHMtdXVpZFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy11dGlscy11dWlkXCJ9XG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNsYXNzbmFtZXNcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJjbGFzc25hbWVzXCJ9XG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn1cbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmltcG9ydCBDaGVja2JveCBmcm9tICdib3VuZGxlc3MtY2hlY2tib3gnO1xuaW1wb3J0IG9taXQgZnJvbSAnYm91bmRsZXNzLXV0aWxzLW9taXQta2V5cyc7XG5pbXBvcnQgdXVpZCBmcm9tICdib3VuZGxlc3MtdXRpbHMtdXVpZCc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG5fX0EgY29udHJvbGxlciB2aWV3IGZvciBtYW5hZ2luZyB0aGUgYWdncmVnYXRlIHN0YXRlIG9mIG11bHRpcGxlLCByZWxhdGVkIGNoZWNrYm94ZXMuX19cblxuVGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciBgQ2hlY2tib3hHcm91cGAgaXMgYSBcInNlbGVjdCBhbGxcIiAvIGNoaWxkcmVuIHNjZW5hcmlvLiBUaGlzIHBhcnRpY3VsYXJcbmNvbmZpZ3VyYXRpb24gaXMgYnVpbHQtaW4gYW5kIGlzIGFjdGl2YXRlZCBieSBwYXNzaW5nIHRoZSBgc2VsZWN0QWxsYCBwcm9wLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveEdyb3VwIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHNlbGVjdEFsbCA9IHtcbiAgICAgICAgQkVGT1JFOiB1dWlkKCksXG4gICAgICAgIEFGVEVSOiB1dWlkKCksXG4gICAgICAgIE5PTkU6IHV1aWQoKSxcbiAgICB9XG5cbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogYW55IFtSZWFjdC1zdXBwb3J0ZWQgYXR0cmlidXRlXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RhZ3MtYW5kLWF0dHJpYnV0ZXMuaHRtbCNodG1sLWF0dHJpYnV0ZXMpXG4gICAgICAgICAqL1xuICAgICAgICAnKic6IFByb3BUeXBlcy5hbnksXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIG92ZXJyaWRlIHRoZSB3cmFwcGVyIEhUTUwgZWxlbWVudCBpZiBkZXNpcmVkXG4gICAgICAgICAqL1xuICAgICAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBkYXRhIHdpc2hlZCB0byBiZSByZW5kZXJlZCwgZWFjaCBpdGVtIG11c3QgY29uZm9ybSB0byB0aGUgW0NoZWNrYm94IHByb3Agc3BlY10oLi9DaGVja2JveCNwcm9wcylcbiAgICAgICAgICovXG4gICAgICAgIGl0ZW1zOiBQcm9wVHlwZXMuYXJyYXlPZihDaGVja2JveC5wcm9wVHlwZXMuaW5wdXRQcm9wcykuaXNSZXF1aXJlZCxcblxuICAgICAgICAvKipcbiAgICAgICAgICogY2FsbGVkIHdoZW4gYWxsIGNoaWxkcmVuIGJlY29tZSBjaGVja2VkIChub3QgZmlyZWQgb24gZmlyc3QgcmVuZGVyKSwgbm8gcmV0dXJuXG4gICAgICAgICAqL1xuICAgICAgICBvbkFsbENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhbGwgY2hpbGRyZW4gYmVjb21lIHVuY2hlY2tlZCAobm90IGZpcmVkIG9uIGZpcnN0IHJlbmRlciksIG5vIHJldHVyblxuICAgICAgICAgKi9cbiAgICAgICAgb25BbGxVbmNoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhIHNwZWNpZmljIGNoaWxkIGhhcyBiZWNvbWUgY2hlY2tlZCwgcmV0dXJucyB0aGUgY2hpbGQgZGVmaW5pdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgb25DaGlsZFVuY2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlbmRlcnMgYSBtYXN0ZXIgY2hlY2tib3ggdGhhdCBjYW4gbWFuaXB1bGF0ZSB0aGUgdmFsdWVzIG9mIGFsbCBjaGlsZHJlbiBzaW11bHRhbmVvdXNseVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsOiBQcm9wVHlwZXMub25lT2YoW1xuICAgICAgICAgICAgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQkVGT1JFLFxuICAgICAgICAgICAgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQUZURVIsXG4gICAgICAgICAgICBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5OT05FLFxuICAgICAgICBdKSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogbXVzdCBjb25mb3JtIHRvIHRoZSBbQ2hlY2tib3ggcHJvcCBzcGVjXSguL0NoZWNrYm94I3Byb3BzKVxuICAgICAgICAgKi9cbiAgICAgICAgc2VsZWN0QWxsUHJvcHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIGFueSBbUmVhY3Qtc3VwcG9ydGVkIGF0dHJpYnV0ZV0oaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90YWdzLWFuZC1hdHRyaWJ1dGVzLmh0bWwjaHRtbC1hdHRyaWJ1dGVzKVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICAnKic6IFByb3BUeXBlcy5hbnksXG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogdGhlIHRleHQgb3IgcmVuZGVyYWJsZSBub2RlIHRvIGRpc3BsYXkgbmV4dCB0byB0aGUgY2hlY2tib3hcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgICAgICBpbnB1dFByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgICB9KSxcbiAgICB9XG5cbiAgICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgICAgICBjb21wb25lbnQ6ICdkaXYnLFxuICAgICAgICBpdGVtczogW10sXG4gICAgICAgIG9uQWxsQ2hlY2tlZDogbm9vcCxcbiAgICAgICAgb25BbGxVbmNoZWNrZWQ6IG5vb3AsXG4gICAgICAgIG9uQ2hpbGRDaGVja2VkOiBub29wLFxuICAgICAgICBvbkNoaWxkVW5jaGVja2VkOiBub29wLFxuICAgICAgICBzZWxlY3RBbGw6IENoZWNrYm94R3JvdXAuc2VsZWN0QWxsLkJFRk9SRSxcbiAgICAgICAgc2VsZWN0QWxsUHJvcHM6IHt9LFxuICAgIH1cblxuICAgIHN0YXRpYyBpbnRlcm5hbEtleXMgPSBPYmplY3Qua2V5cyhDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcylcblxuICAgIHNlbGVjdEFsbFVVSUQgPSB1dWlkKClcblxuICAgIGFsbEl0ZW1zQ2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuZXZlcnkoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICBhbnlJdGVtc0NoZWNrZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3BzLml0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkID09PSB0cnVlKTtcbiAgICB9XG5cbiAgICByZW5kZXJTZWxlY3RBbGxDaGVja2JveCgpIHtcbiAgICAgICAgY29uc3QgYWxsQ2hlY2tlZCA9IHRoaXMuYWxsSXRlbXNDaGVja2VkKCk7XG4gICAgICAgIGNvbnN0IHtpbnB1dFByb3BzfSA9IHRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHM7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzfVxuICAgICAgICAgICAgICAgIGtleT17dGhpcy5zZWxlY3RBbGxVVUlEfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAtYWxsJywgdGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgICAgIGlucHV0UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgLi4uaW5wdXRQcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYWxsQ2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXRlcm1pbmF0ZTogIWFsbENoZWNrZWQgJiYgdGhpcy5hbnlJdGVtc0NoZWNrZWQoKSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXRQcm9wcyAmJiBpbnB1dFByb3BzLm5hbWUgPyBpbnB1dFByb3BzLm5hbWUgOiBudWxsLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgbGFiZWw9e3RoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMubGFiZWwgfHwgJ1NlbGVjdCBBbGwnfVxuICAgICAgICAgICAgICAgIG9uQ2hlY2tlZD17dGhpcy5wcm9wcy5vbkFsbENoZWNrZWR9XG4gICAgICAgICAgICAgICAgb25VbmNoZWNrZWQ9e3RoaXMucHJvcHMub25BbGxVbmNoZWNrZWR9IC8+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ2hlY2tib3hlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICB7Li4uaXRlbX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtpdGVtLmlucHV0UHJvcHMubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGVja2VkPXt0aGlzLnByb3BzLm9uQ2hpbGRDaGVja2VkfVxuICAgICAgICAgICAgICAgICAgICBvblVuY2hlY2tlZD17dGhpcy5wcm9wcy5vbkNoaWxkVW5jaGVja2VkfSAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVuZGVyQ2hpbGRyZW4oKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gW3RoaXMucmVuZGVyQ2hlY2tib3hlcygpXTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMucHJvcHMuc2VsZWN0QWxsKSB7XG4gICAgICAgIGNhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQkVGT1JFOlxuICAgICAgICAgICAgY2hpbGRyZW4udW5zaGlmdCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5BRlRFUjpcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2godGhpcy5yZW5kZXJTZWxlY3RBbGxDaGVja2JveCgpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDx0aGlzLnByb3BzLmNvbXBvbmVudFxuICAgICAgICAgICAgICAgIHsuLi5vbWl0KHRoaXMucHJvcHMsIENoZWNrYm94R3JvdXAuaW50ZXJuYWxLZXlzKX1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2N4KCdiLWNoZWNrYm94LWdyb3VwJywgdGhpcy5wcm9wcy5jbGFzc05hbWUpfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbigpfVxuICAgICAgICAgICAgPC90aGlzLnByb3BzLmNvbXBvbmVudD5cbiAgICAgICAgKTtcbiAgICB9XG59XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9wYWNrYWdlcy9ib3VuZGxlc3MtY2hlY2tib3gtZ3JvdXAvaW5kZXguanMiXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vaW5kZXguanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIDIyZGI0MDhkYjIwMGY2Y2U2NDU1Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy1jaGVja2JveFwifSIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy11dGlscy11dWlkXCJ9Iiwid2VicGFjazovLy9leHRlcm5hbCB7XCJjb21tb25qczJcIjpcImNsYXNzbmFtZXNcIn0iLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vLy4vcGFja2FnZXMvYm91bmRsZXNzLWNoZWNrYm94LWdyb3VwL2luZGV4LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiaW5zdGFsbGVkTW9kdWxlcyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwidmFsdWUiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsInJlcXVpcmUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwic2VsZiIsIlJlZmVyZW5jZUVycm9yIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZSIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18iLCJfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX2NsYXNzbmFtZXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0IiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfXyIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX19fZGVmYXVsdCIsIl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fIiwiX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCIsIl9leHRlbmRzIiwiYXNzaWduIiwidGFyZ2V0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIm5vb3AiLCJDaGVja2JveEdyb3VwIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJfcmVmIiwiX3RlbXAiLCJfdGhpcyIsIl9yZXQiLCJ0aGlzIiwiX2xlbiIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJnZXRQcm90b3R5cGVPZiIsImFwcGx5IiwiY29uY2F0Iiwic2VsZWN0QWxsVVVJRCIsIml0ZW1zIiwiZXZlcnkiLCJpdGVtIiwiaW5wdXRQcm9wcyIsImNoZWNrZWQiLCJzb21lIiwiYWxsQ2hlY2tlZCIsImFsbEl0ZW1zQ2hlY2tlZCIsInNlbGVjdEFsbFByb3BzIiwiYSIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJpbmRldGVybWluYXRlIiwiYW55SXRlbXNDaGVja2VkIiwibGFiZWwiLCJvbkNoZWNrZWQiLCJvbkFsbENoZWNrZWQiLCJvblVuY2hlY2tlZCIsIm9uQWxsVW5jaGVja2VkIiwiX3RoaXMyIiwibWFwIiwib25DaGlsZENoZWNrZWQiLCJvbkNoaWxkVW5jaGVja2VkIiwiY2hpbGRyZW4iLCJyZW5kZXJDaGVja2JveGVzIiwic2VsZWN0QWxsIiwiQkVGT1JFIiwidW5zaGlmdCIsInJlbmRlclNlbGVjdEFsbENoZWNrYm94IiwiQUZURVIiLCJwdXNoIiwiY29tcG9uZW50IiwiaW50ZXJuYWxLZXlzIiwicmVuZGVyQ2hpbGRyZW4iLCJQdXJlQ29tcG9uZW50IiwiTk9ORSIsInByb3BUeXBlcyIsIioiLCJhbnkiLCJzdHJpbmciLCJhcnJheU9mIiwiaXNSZXF1aXJlZCIsImZ1bmMiLCJvbmVPZiIsInNoYXBlIiwiZGVmYXVsdFByb3BzIiwia2V5cyJdLCJtYXBwaW5ncyI6IkFBQUFBLE9BQU9DLFFBQ0UsU0FBVUMsR0NHbkIsUUFBQUMsR0FBQUMsR0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFILE9BR0EsSUFBQUQsR0FBQUssRUFBQUQsSUFDQUUsRUFBQUYsRUFDQUcsR0FBQSxFQUNBTixXQVVBLE9BTkFDLEdBQUFFLEdBQUFJLEtBQUFSLEVBQUFDLFFBQUFELElBQUFDLFFBQUFFLEdBR0FILEVBQUFPLEdBQUEsRUFHQVAsRUFBQUMsUUF2QkEsR0FBQUksS0ErREEsT0FuQ0FGLEdBQUFNLEVBQUFQLEVBR0FDLEVBQUFPLEVBQUFMLEVBR0FGLEVBQUFHLEVBQUEsU0FBQUssR0FBMkMsTUFBQUEsSUFHM0NSLEVBQUFTLEVBQUEsU0FBQVgsRUFB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QUNQaUUsS0FBTWpFLE9BSk9lLEVBT1ZtRCxXQUlIQyxJQUFLNUUsRUFBQSxVQUFVNkUsSUFLZlAsVUFBV3RFLEVBQUEsVUFBVThFLE9BS3JCdkMsTUFBT3ZDLEVBQUEsVUFBVStFLFFBQVExRSxFQUFBMkMsRUFBUzJCLFVBQVVqQyxZQUFZc0MsV0FLeER6QixhQUFjdkQsRUFBQSxVQUFVaUYsS0FLeEJ4QixlQUFnQnpELEVBQUEsVUFBVWlGLEtBSzFCckIsZUFBZ0I1RCxFQUFBLFVBQVVpRixLQUsxQnBCLGlCQUFrQjdELEVBQUEsVUFBVWlGLEtBSzVCakIsVUFBV2hFLEVBQUEsVUFBVWtGLE9BQ2pCMUQsRUFBY3dDLFVBQVVDLE9BQ3hCekMsRUFBY3dDLFVBQVVJLE1BQ3hCNUMsRUFBY3dDLFVBQVVVLE9BTTVCM0IsZUFBZ0IvQyxFQUFBLFVBQVVtRixPQUl0QlAsSUFBSzVFLEVBQUEsVUFBVTZFLElBS2Z4QixNQUFPckQsRUFBQSxVQUFVOEUsT0FDakJwQyxXQUFZMUMsRUFBQSxVQUFVdkIsVUFqRWIrQyxFQXFFVjRELGNBQ0hkLFVBQVcsTUFDWC9CLFNBQ0FnQixhQUFjaEMsRUFDZGtDLGVBQWdCbEMsRUFDaEJxQyxlQUFnQnJDLEVBQ2hCc0MsaUJBQWtCdEMsRUFDbEJ5QyxVQUFXeEMsRUFBY3dDLFVBQVVDLE9BQ25DbEIsbUJBN0VhdkIsRUFnRlYrQyxhQUFlckcsT0FBT21ILEtBQUs3RCxFQUFjNEQsY1BvQnV1THBHLEVBQTZCLFFPcEdueUx3QyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID1cbi8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcbi8qKioqKiovIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbi8qKioqKiovIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbi8qKioqKiovIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmkgPSBmdW5jdGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4vKioqKioqLyBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbi8qKioqKiovIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbi8qKioqKiovIFx0XHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcbi8qKioqKiovIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbi8qKioqKiovIFx0XHRcdH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1KTtcbi8qKioqKiovIH0pXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKFtcbi8qIDAgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYm91bmRsZXNzLWNoZWNrYm94XCIpO1xuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiYm91bmRsZXNzLXV0aWxzLW9taXQta2V5c1wiKTtcblxuLyoqKi8gfSksXG4vKiAyICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy11dGlscy11dWlkXCIpO1xuXG4vKioqLyB9KSxcbi8qIDMgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY2xhc3NuYW1lc1wiKTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpO1xuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoX193ZWJwYWNrX2V4cG9ydHNfXywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fX2RlZmF1bHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLm4oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9jbGFzc25hbWVzX19fZGVmYXVsdCA9IF9fd2VicGFja19yZXF1aXJlX18ubihfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19ib3VuZGxlc3NfdXRpbHNfb21pdF9rZXlzX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfYm91bmRsZXNzX3V0aWxzX3V1aWRfX19kZWZhdWx0ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5uKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fKTtcbnZhciBfZXh0ZW5kcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0YXJnZXQpe2Zvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspe3ZhciBzb3VyY2U9YXJndW1lbnRzW2ldO2Zvcih2YXIga2V5IGluIHNvdXJjZSl7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKXt0YXJnZXRba2V5XT1zb3VyY2Vba2V5XTt9fX1yZXR1cm4gdGFyZ2V0O307dmFyIF9jcmVhdGVDbGFzcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LHByb3BzKXtmb3IodmFyIGk9MDtpPHByb3BzLmxlbmd0aDtpKyspe3ZhciBkZXNjcmlwdG9yPXByb3BzW2ldO2Rlc2NyaXB0b3IuZW51bWVyYWJsZT1kZXNjcmlwdG9yLmVudW1lcmFibGV8fGZhbHNlO2Rlc2NyaXB0b3IuY29uZmlndXJhYmxlPXRydWU7aWYoXCJ2YWx1ZVwiaW4gZGVzY3JpcHRvcilkZXNjcmlwdG9yLndyaXRhYmxlPXRydWU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCxkZXNjcmlwdG9yLmtleSxkZXNjcmlwdG9yKTt9fXJldHVybiBmdW5jdGlvbihDb25zdHJ1Y3Rvcixwcm90b1Byb3BzLHN0YXRpY1Byb3BzKXtpZihwcm90b1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLHByb3RvUHJvcHMpO2lmKHN0YXRpY1Byb3BzKWRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3Isc3RhdGljUHJvcHMpO3JldHVybiBDb25zdHJ1Y3Rvcjt9O30oKTtmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsQ29uc3RydWN0b3Ipe2lmKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcikpe3Rocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7fX1mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLGNhbGwpe2lmKCFzZWxmKXt0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7fXJldHVybiBjYWxsJiYodHlwZW9mIGNhbGw9PT1cIm9iamVjdFwifHx0eXBlb2YgY2FsbD09PVwiZnVuY3Rpb25cIik/Y2FsbDpzZWxmO31mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3Msc3VwZXJDbGFzcyl7aWYodHlwZW9mIHN1cGVyQ2xhc3MhPT1cImZ1bmN0aW9uXCImJnN1cGVyQ2xhc3MhPT1udWxsKXt0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygc3VwZXJDbGFzcyk7fXN1YkNsYXNzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MmJnN1cGVyQ2xhc3MucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6c3ViQ2xhc3MsZW51bWVyYWJsZTpmYWxzZSx3cml0YWJsZTp0cnVlLGNvbmZpZ3VyYWJsZTp0cnVlfX0pO2lmKHN1cGVyQ2xhc3MpT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcyxzdXBlckNsYXNzKTpzdWJDbGFzcy5fX3Byb3RvX189c3VwZXJDbGFzczt9dmFyIG5vb3A9ZnVuY3Rpb24gbm9vcCgpe307dmFyIENoZWNrYm94R3JvdXA9ZnVuY3Rpb24oX1JlYWN0JFB1cmVDb21wb25lbnQpe19pbmhlcml0cyhDaGVja2JveEdyb3VwLF9SZWFjdCRQdXJlQ29tcG9uZW50KTtmdW5jdGlvbiBDaGVja2JveEdyb3VwKCl7dmFyIF9yZWY7dmFyIF90ZW1wLF90aGlzLF9yZXQ7X2NsYXNzQ2FsbENoZWNrKHRoaXMsQ2hlY2tib3hHcm91cCk7Zm9yKHZhciBfbGVuPWFyZ3VtZW50cy5sZW5ndGgsYXJncz1BcnJheShfbGVuKSxfa2V5PTA7X2tleTxfbGVuO19rZXkrKyl7YXJnc1tfa2V5XT1hcmd1bWVudHNbX2tleV07fXJldHVybiBfcmV0PShfdGVtcD0oX3RoaXM9X3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywoX3JlZj1DaGVja2JveEdyb3VwLl9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKENoZWNrYm94R3JvdXApKS5jYWxsLmFwcGx5KF9yZWYsW3RoaXNdLmNvbmNhdChhcmdzKSkpLF90aGlzKSxfdGhpcy5zZWxlY3RBbGxVVUlEPV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNF9ib3VuZGxlc3NfdXRpbHNfdXVpZF9fX2RlZmF1bHQoKSgpLF90ZW1wKSxfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcyxfcmV0KTt9X2NyZWF0ZUNsYXNzKENoZWNrYm94R3JvdXAsW3trZXk6J2FsbEl0ZW1zQ2hlY2tlZCcsdmFsdWU6ZnVuY3Rpb24gYWxsSXRlbXNDaGVja2VkKCl7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuZXZlcnkoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkPT09dHJ1ZTt9KTt9fSx7a2V5OidhbnlJdGVtc0NoZWNrZWQnLHZhbHVlOmZ1bmN0aW9uIGFueUl0ZW1zQ2hlY2tlZCgpe3JldHVybiB0aGlzLnByb3BzLml0ZW1zLnNvbWUoZnVuY3Rpb24oaXRlbSl7cmV0dXJuIGl0ZW0uaW5wdXRQcm9wcy5jaGVja2VkPT09dHJ1ZTt9KTt9fSx7a2V5OidyZW5kZXJTZWxlY3RBbGxDaGVja2JveCcsdmFsdWU6ZnVuY3Rpb24gcmVuZGVyU2VsZWN0QWxsQ2hlY2tib3goKXt2YXIgYWxsQ2hlY2tlZD10aGlzLmFsbEl0ZW1zQ2hlY2tlZCgpO3ZhciBpbnB1dFByb3BzPXRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMuaW5wdXRQcm9wcztyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQoX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX2JvdW5kbGVzc19jaGVja2JveF9fX2RlZmF1bHQuYSxfZXh0ZW5kcyh7fSx0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLHtrZXk6dGhpcy5zZWxlY3RBbGxVVUlELGNsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cC1hbGwnLHRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHMuY2xhc3NOYW1lKSxpbnB1dFByb3BzOl9leHRlbmRzKHt9LGlucHV0UHJvcHMse2NoZWNrZWQ6YWxsQ2hlY2tlZCxpbmRldGVybWluYXRlOiFhbGxDaGVja2VkJiZ0aGlzLmFueUl0ZW1zQ2hlY2tlZCgpLG5hbWU6aW5wdXRQcm9wcyYmaW5wdXRQcm9wcy5uYW1lP2lucHV0UHJvcHMubmFtZTpudWxsfSksbGFiZWw6dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbHx8J1NlbGVjdCBBbGwnLG9uQ2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsQ2hlY2tlZCxvblVuY2hlY2tlZDp0aGlzLnByb3BzLm9uQWxsVW5jaGVja2VkfSkpO319LHtrZXk6J3JlbmRlckNoZWNrYm94ZXMnLHZhbHVlOmZ1bmN0aW9uIHJlbmRlckNoZWNrYm94ZXMoKXt2YXIgX3RoaXMyPXRoaXM7cmV0dXJuIHRoaXMucHJvcHMuaXRlbXMubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfYm91bmRsZXNzX2NoZWNrYm94X19fZGVmYXVsdC5hLF9leHRlbmRzKHt9LGl0ZW0se2tleTppdGVtLmlucHV0UHJvcHMubmFtZSxvbkNoZWNrZWQ6X3RoaXMyLnByb3BzLm9uQ2hpbGRDaGVja2VkLG9uVW5jaGVja2VkOl90aGlzMi5wcm9wcy5vbkNoaWxkVW5jaGVja2VkfSkpO30pO319LHtrZXk6J3JlbmRlckNoaWxkcmVuJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXJDaGlsZHJlbigpe3ZhciBjaGlsZHJlbj1bdGhpcy5yZW5kZXJDaGVja2JveGVzKCldO3N3aXRjaCh0aGlzLnByb3BzLnNlbGVjdEFsbCl7Y2FzZSBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5CRUZPUkU6Y2hpbGRyZW4udW5zaGlmdCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO2JyZWFrO2Nhc2UgQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQUZURVI6Y2hpbGRyZW4ucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO2JyZWFrO31yZXR1cm4gY2hpbGRyZW47fX0se2tleToncmVuZGVyJyx2YWx1ZTpmdW5jdGlvbiByZW5kZXIoKXtyZXR1cm4gX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLmNyZWF0ZUVsZW1lbnQodGhpcy5wcm9wcy5jb21wb25lbnQsX2V4dGVuZHMoe30sX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX2JvdW5kbGVzc191dGlsc19vbWl0X2tleXNfX19kZWZhdWx0KCkodGhpcy5wcm9wcyxDaGVja2JveEdyb3VwLmludGVybmFsS2V5cykse2NsYXNzTmFtZTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfY2xhc3NuYW1lc19fX2RlZmF1bHQoKSgnYi1jaGVja2JveC1ncm91cCcsdGhpcy5wcm9wcy5jbGFzc05hbWUpfSksdGhpcy5yZW5kZXJDaGlsZHJlbigpKTt9fV0pO3JldHVybiBDaGVja2JveEdyb3VwO30oX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19fZGVmYXVsdC5hLlB1cmVDb21wb25lbnQpO0NoZWNrYm94R3JvdXAuc2VsZWN0QWxsPXtCRUZPUkU6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCgpKCksQUZURVI6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X2JvdW5kbGVzc191dGlsc191dWlkX19fZGVmYXVsdCgpKCksTk9ORTpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzRfYm91bmRsZXNzX3V0aWxzX3V1aWRfX19kZWZhdWx0KCkoKX07Q2hlY2tib3hHcm91cC5wcm9wVHlwZXM9eycqJzpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hbnksY29tcG9uZW50Ol9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLnN0cmluZyxpdGVtczpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hcnJheU9mKF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9ib3VuZGxlc3NfY2hlY2tib3hfX19kZWZhdWx0LmEucHJvcFR5cGVzLmlucHV0UHJvcHMpLmlzUmVxdWlyZWQsb25BbGxDaGVja2VkOl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9yZWFjdF9fW1wiUHJvcFR5cGVzXCJdLmZ1bmMsb25BbGxVbmNoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxvbkNoaWxkQ2hlY2tlZDpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5mdW5jLG9uQ2hpbGRVbmNoZWNrZWQ6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uZnVuYyxzZWxlY3RBbGw6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0ub25lT2YoW0NoZWNrYm94R3JvdXAuc2VsZWN0QWxsLkJFRk9SRSxDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5BRlRFUixDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5OT05FXSksc2VsZWN0QWxsUHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc2hhcGUoeycqJzpfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfcmVhY3RfX1tcIlByb3BUeXBlc1wiXS5hbnksbGFiZWw6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0uc3RyaW5nLGlucHV0UHJvcHM6X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX3JlYWN0X19bXCJQcm9wVHlwZXNcIl0ub2JqZWN0fSl9O0NoZWNrYm94R3JvdXAuZGVmYXVsdFByb3BzPXtjb21wb25lbnQ6J2RpdicsaXRlbXM6W10sb25BbGxDaGVja2VkOm5vb3Asb25BbGxVbmNoZWNrZWQ6bm9vcCxvbkNoaWxkQ2hlY2tlZDpub29wLG9uQ2hpbGRVbmNoZWNrZWQ6bm9vcCxzZWxlY3RBbGw6Q2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQkVGT1JFLHNlbGVjdEFsbFByb3BzOnt9fTtDaGVja2JveEdyb3VwLmludGVybmFsS2V5cz1PYmplY3Qua2V5cyhDaGVja2JveEdyb3VwLmRlZmF1bHRQcm9wcyk7LyogaGFybW9ueSBkZWZhdWx0IGV4cG9ydCAqLyBfX3dlYnBhY2tfZXhwb3J0c19fW1wiZGVmYXVsdFwiXSA9IENoZWNrYm94R3JvdXA7XG5cbi8qKiovIH0pXG4vKioqKioqLyBdKTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gaW5kZXguanMiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1KTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyB3ZWJwYWNrL2Jvb3RzdHJhcCAyMmRiNDA4ZGIyMDBmNmNlNjQ1NSIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImJvdW5kbGVzcy1jaGVja2JveFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy1jaGVja2JveFwifVxuLy8gbW9kdWxlIGlkID0gMFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtdXRpbHMtb21pdC1rZXlzXCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwiYm91bmRsZXNzLXV0aWxzLW9taXQta2V5c1wifVxuLy8gbW9kdWxlIGlkID0gMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJib3VuZGxlc3MtdXRpbHMtdXVpZFwiKTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyBleHRlcm5hbCB7XCJjb21tb25qczJcIjpcImJvdW5kbGVzcy11dGlscy11dWlkXCJ9XG4vLyBtb2R1bGUgaWQgPSAyXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNsYXNzbmFtZXNcIik7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gZXh0ZXJuYWwge1wiY29tbW9uanMyXCI6XCJjbGFzc25hbWVzXCJ9XG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIGV4dGVybmFsIHtcImNvbW1vbmpzMlwiOlwicmVhY3RcIn1cbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5cbmltcG9ydCBDaGVja2JveCBmcm9tICdib3VuZGxlc3MtY2hlY2tib3gnO1xuaW1wb3J0IG9taXQgZnJvbSAnYm91bmRsZXNzLXV0aWxzLW9taXQta2V5cyc7XG5pbXBvcnQgdXVpZCBmcm9tICdib3VuZGxlc3MtdXRpbHMtdXVpZCc7XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG5fX0EgY29udHJvbGxlciB2aWV3IGZvciBtYW5hZ2luZyB0aGUgYWdncmVnYXRlIHN0YXRlIG9mIG11bHRpcGxlLCByZWxhdGVkIGNoZWNrYm94ZXMuX19cblxuVGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciBgQ2hlY2tib3hHcm91cGAgaXMgYSBcInNlbGVjdCBhbGxcIiAvIGNoaWxkcmVuIHNjZW5hcmlvLiBUaGlzIHBhcnRpY3VsYXJcbmNvbmZpZ3VyYXRpb24gaXMgYnVpbHQtaW4gYW5kIGlzIGFjdGl2YXRlZCBieSBwYXNzaW5nIHRoZSBgc2VsZWN0QWxsYCBwcm9wLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaGVja2JveEdyb3VwIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7XG4gICAgc3RhdGljIHNlbGVjdEFsbCA9IHtcbiAgICAgICAgQkVGT1JFOiB1dWlkKCksXG4gICAgICAgIEFGVEVSOiB1dWlkKCksXG4gICAgICAgIE5PTkU6IHV1aWQoKSxcbiAgICB9XG5cbiAgICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgICAgICAvKipcbiAgICAgICAgICogYW55IFtSZWFjdC1zdXBwb3J0ZWQgYXR0cmlidXRlXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RhZ3MtYW5kLWF0dHJpYnV0ZXMuaHRtbCNodG1sLWF0dHJpYnV0ZXMpXG4gICAgICAgICAqL1xuICAgICAgICAnKic6IFByb3BUeXBlcy5hbnksXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIG92ZXJyaWRlIHRoZSB3cmFwcGVyIEhUTUwgZWxlbWVudCBpZiBkZXNpcmVkXG4gICAgICAgICAqL1xuICAgICAgICBjb21wb25lbnQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRoZSBkYXRhIHdpc2hlZCB0byBiZSByZW5kZXJlZCwgZWFjaCBpdGVtIG11c3QgY29uZm9ybSB0byB0aGUgW0NoZWNrYm94IHByb3Agc3BlY10oaHR0cHM6Ly9naXRodWIuY29tL2VuaWdtYS1pby9ib3VuZGxlc3MvYmxvYi9tYXN0ZXIvcGFja2FnZXMvYm91bmRsZXNzLWNoZWNrYm94KVxuICAgICAgICAgKi9cbiAgICAgICAgaXRlbXM6IFByb3BUeXBlcy5hcnJheU9mKENoZWNrYm94LnByb3BUeXBlcy5pbnB1dFByb3BzKS5pc1JlcXVpcmVkLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjYWxsZWQgd2hlbiBhbGwgY2hpbGRyZW4gYmVjb21lIGNoZWNrZWQgKG5vdCBmaXJlZCBvbiBmaXJzdCByZW5kZXIpLCBubyByZXR1cm5cbiAgICAgICAgICovXG4gICAgICAgIG9uQWxsQ2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxlZCB3aGVuIGFsbCBjaGlsZHJlbiBiZWNvbWUgdW5jaGVja2VkIChub3QgZmlyZWQgb24gZmlyc3QgcmVuZGVyKSwgbm8gcmV0dXJuXG4gICAgICAgICAqL1xuICAgICAgICBvbkFsbFVuY2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxlZCB3aGVuIGEgc3BlY2lmaWMgY2hpbGQgaGFzIGJlY29tZSBjaGVja2VkLCByZXR1cm5zIHRoZSBjaGlsZCBkZWZpbml0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBvbkNoaWxkQ2hlY2tlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNhbGxlZCB3aGVuIGEgc3BlY2lmaWMgY2hpbGQgaGFzIGJlY29tZSBjaGVja2VkLCByZXR1cm5zIHRoZSBjaGlsZCBkZWZpbml0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBvbkNoaWxkVW5jaGVja2VkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAgICAgICAvKipcbiAgICAgICAgICogcmVuZGVycyBhIG1hc3RlciBjaGVja2JveCB0aGF0IGNhbiBtYW5pcHVsYXRlIHRoZSB2YWx1ZXMgb2YgYWxsIGNoaWxkcmVuIHNpbXVsdGFuZW91c2x5XG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RBbGw6IFByb3BUeXBlcy5vbmVPZihbXG4gICAgICAgICAgICBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5CRUZPUkUsXG4gICAgICAgICAgICBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5BRlRFUixcbiAgICAgICAgICAgIENoZWNrYm94R3JvdXAuc2VsZWN0QWxsLk5PTkUsXG4gICAgICAgIF0pLFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBtdXN0IGNvbmZvcm0gdG8gdGhlIFtDaGVja2JveCBwcm9wIHNwZWNdKC4vQ2hlY2tib3gpXG4gICAgICAgICAqL1xuICAgICAgICBzZWxlY3RBbGxQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogYW55IFtSZWFjdC1zdXBwb3J0ZWQgYXR0cmlidXRlXShodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RhZ3MtYW5kLWF0dHJpYnV0ZXMuaHRtbCNodG1sLWF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICcqJzogUHJvcFR5cGVzLmFueSxcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiB0aGUgdGV4dCBvciByZW5kZXJhYmxlIG5vZGUgdG8gZGlzcGxheSBuZXh0IHRvIHRoZSBjaGVja2JveFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgICAgIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIH0pLFxuICAgIH1cblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIGNvbXBvbmVudDogJ2RpdicsXG4gICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgb25BbGxDaGVja2VkOiBub29wLFxuICAgICAgICBvbkFsbFVuY2hlY2tlZDogbm9vcCxcbiAgICAgICAgb25DaGlsZENoZWNrZWQ6IG5vb3AsXG4gICAgICAgIG9uQ2hpbGRVbmNoZWNrZWQ6IG5vb3AsXG4gICAgICAgIHNlbGVjdEFsbDogQ2hlY2tib3hHcm91cC5zZWxlY3RBbGwuQkVGT1JFLFxuICAgICAgICBzZWxlY3RBbGxQcm9wczoge30sXG4gICAgfVxuXG4gICAgc3RhdGljIGludGVybmFsS2V5cyA9IE9iamVjdC5rZXlzKENoZWNrYm94R3JvdXAuZGVmYXVsdFByb3BzKVxuXG4gICAgc2VsZWN0QWxsVVVJRCA9IHV1aWQoKVxuXG4gICAgYWxsSXRlbXNDaGVja2VkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5pdGVtcy5ldmVyeSgoaXRlbSkgPT4gaXRlbS5pbnB1dFByb3BzLmNoZWNrZWQgPT09IHRydWUpO1xuICAgIH1cblxuICAgIGFueUl0ZW1zQ2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMuaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pbnB1dFByb3BzLmNoZWNrZWQgPT09IHRydWUpO1xuICAgIH1cblxuICAgIHJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkge1xuICAgICAgICBjb25zdCBhbGxDaGVja2VkID0gdGhpcy5hbGxJdGVtc0NoZWNrZWQoKTtcbiAgICAgICAgY29uc3Qge2lucHV0UHJvcHN9ID0gdGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcztcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuc2VsZWN0QWxsUHJvcHN9XG4gICAgICAgICAgICAgICAga2V5PXt0aGlzLnNlbGVjdEFsbFVVSUR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjeCgnYi1jaGVja2JveC1ncm91cC1hbGwnLCB0aGlzLnByb3BzLnNlbGVjdEFsbFByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgICAgICAgaW5wdXRQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dFByb3BzLFxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkOiBhbGxDaGVja2VkLFxuICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlOiAhYWxsQ2hlY2tlZCAmJiB0aGlzLmFueUl0ZW1zQ2hlY2tlZCgpLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dFByb3BzICYmIGlucHV0UHJvcHMubmFtZSA/IGlucHV0UHJvcHMubmFtZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBsYWJlbD17dGhpcy5wcm9wcy5zZWxlY3RBbGxQcm9wcy5sYWJlbCB8fCAnU2VsZWN0IEFsbCd9XG4gICAgICAgICAgICAgICAgb25DaGVja2VkPXt0aGlzLnByb3BzLm9uQWxsQ2hlY2tlZH1cbiAgICAgICAgICAgICAgICBvblVuY2hlY2tlZD17dGhpcy5wcm9wcy5vbkFsbFVuY2hlY2tlZH0gLz5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZW5kZXJDaGVja2JveGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIHsuLi5pdGVtfVxuICAgICAgICAgICAgICAgICAgICBrZXk9e2l0ZW0uaW5wdXRQcm9wcy5uYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoZWNrZWQ9e3RoaXMucHJvcHMub25DaGlsZENoZWNrZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uVW5jaGVja2VkPXt0aGlzLnByb3BzLm9uQ2hpbGRVbmNoZWNrZWR9IC8+XG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW5kZXJDaGlsZHJlbigpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBbdGhpcy5yZW5kZXJDaGVja2JveGVzKCldO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5wcm9wcy5zZWxlY3RBbGwpIHtcbiAgICAgICAgY2FzZSBDaGVja2JveEdyb3VwLnNlbGVjdEFsbC5CRUZPUkU6XG4gICAgICAgICAgICBjaGlsZHJlbi51bnNoaWZ0KHRoaXMucmVuZGVyU2VsZWN0QWxsQ2hlY2tib3goKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIENoZWNrYm94R3JvdXAuc2VsZWN0QWxsLkFGVEVSOlxuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaCh0aGlzLnJlbmRlclNlbGVjdEFsbENoZWNrYm94KCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPHRoaXMucHJvcHMuY29tcG9uZW50XG4gICAgICAgICAgICAgICAgey4uLm9taXQodGhpcy5wcm9wcywgQ2hlY2tib3hHcm91cC5pbnRlcm5hbEtleXMpfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y3goJ2ItY2hlY2tib3gtZ3JvdXAnLCB0aGlzLnByb3BzLmNsYXNzTmFtZSl9PlxuICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKCl9XG4gICAgICAgICAgICA8L3RoaXMucHJvcHMuY29tcG9uZW50PlxuICAgICAgICApO1xuICAgIH1cbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3BhY2thZ2VzL2JvdW5kbGVzcy1jaGVja2JveC1ncm91cC9pbmRleC5qcyJdLCJzb3VyY2VSb290IjoiIn0= |
@@ -35,3 +35,3 @@ import React, {PropTypes} from 'react'; | ||
/** | ||
* the data wished to be rendered, each item must conform to the [Checkbox prop spec](./Checkbox#props) | ||
* the data wished to be rendered, each item must conform to the [Checkbox prop spec](https://github.com/enigma-io/boundless/blob/master/packages/boundless-checkbox) | ||
*/ | ||
@@ -70,3 +70,3 @@ items: PropTypes.arrayOf(Checkbox.propTypes.inputProps).isRequired, | ||
/** | ||
* must conform to the [Checkbox prop spec](./Checkbox#props) | ||
* must conform to the [Checkbox prop spec](./Checkbox) | ||
*/ | ||
@@ -73,0 +73,0 @@ selectAllProps: PropTypes.shape({ |
{ | ||
"name": "boundless-checkbox-group", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "A controller view for managing the aggregate state of multiple, related checkboxes.", | ||
@@ -28,7 +28,7 @@ "main": "build/index.js", | ||
}, | ||
"homepage": "http://boundless.js.org/CheckboxGroup", | ||
"homepage": "http://boundless.js.org/#/CheckboxGroup", | ||
"dependencies": { | ||
"boundless-checkbox": "^1.0.1", | ||
"boundless-utils-omit-keys": "^1.0.1", | ||
"boundless-utils-uuid": "^1.0.1", | ||
"boundless-checkbox": "^1.0.2", | ||
"boundless-utils-omit-keys": "^1.0.2", | ||
"boundless-utils-uuid": "^1.0.2", | ||
"classnames": "^2.1.5" | ||
@@ -35,0 +35,0 @@ }, |
@@ -124,7 +124,7 @@ <!--- | ||
> Note: only top-level props are in the README, for the full list check out the [website](http://boundless.js.org/CheckboxGroup#props). | ||
> Note: only top-level props are in the README, for the full list check out the [website](http://boundless.js.org/#/CheckboxGroup). | ||
### Required Props | ||
- __`items`__ ・ the data wished to be rendered, each item must conform to the [Checkbox prop spec](./Checkbox#props) | ||
- __`items`__ ・ the data wished to be rendered, each item must conform to the [Checkbox prop spec](https://github.com/enigma-io/boundless/blob/master/packages/boundless-checkbox) | ||
@@ -180,3 +180,3 @@ Expects | Default Value | ||
- __`selectAllProps`__ ・ must conform to the [Checkbox prop spec](./Checkbox#props) | ||
- __`selectAllProps`__ ・ must conform to the [Checkbox prop spec](./Checkbox) | ||
@@ -183,0 +183,0 @@ Expects | Default Value |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
69507
Updatedboundless-checkbox@^1.0.2
Updatedboundless-utils-uuid@^1.0.2