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

react-number-textfield

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-number-textfield - npm Package Compare versions

Comparing version 1.3.0 to 1.3.1

2

build/react-number-textfield.js
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define("ReactNumberTextfield",["react"],t):"object"==typeof exports?exports.ReactNumberTextfield=t(require("react")):e.ReactNumberTextfield=t(e.react)}(window,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},r.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0);const o={string_value:""};class i extends n.Component{constructor(e){var t;if(super(e),this.state=o,this.handleKeyPress=(e=>{const t=e.charCode;let r=!1;if(!((t=t)>=48&&t<=57)){String.fromCharCode(t)!==this.props.decimal_character?r=!0:(0===this.props.precision||this.state.string_value.indexOf(this.props.decimal_character)>-1)&&(r=!0)}if(r)return e.preventDefault(),e.stopPropagation(),!1}),this.handleChange=(e=>{const t=s(e.target.value,this.props.decimal_character,this.props.group_separator,this.props.precision);this.setState({string_value:t.string_value}),"function"==typeof this.props.didChangeNumber&&this.props.didChangeNumber(t.number_value)}),e.precision<0||e.precision%1!=0)throw new Error("Maximum precision must be a positive integer.")}static derivedStateFromProps(e,t){if("number"==typeof e.number)return s(e.number.toString(),e.decimal_character,e.group_separator,e.precision)}render(){return n.createElement("input",{type:"text",className:this.props.className,value:this.state.string_value,placeholder:this.props.placeholder,onKeyPress:this.handleKeyPress,onChange:this.handleChange})}}function s(e,t,r,n){const o=new RegExp(`[^0-9${i=t,i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}]+`,"g");var i;let s=e.replace(o,"").replace(t,"."),a=function(e){let t=void 0;const r=e.indexOf(".")>-1;r&&1===e.length&&(e="0"+e);t=r?parseFloat(e):parseInt(e);return t}(s);if(void 0===a||isNaN(a))return console.warn("String could not be represented as a number. Resetting textfield value."),{number_value:void 0,string_value:""};const c=s.indexOf(".")>-1,u=function(e){const t=e.toString().split(".");if(t.length>1)return t[1].length;return 0}(s);if(a%1!=0&&u>n){console.warn("Additional decimal digit will exceed maximum precision.");const e=Math.pow(10,n);a=Math.floor(a*e)/e}return{number_value:a,string_value:s=function(e,t,r,n){const o=e.toString().split("."),i=o[0],s=o.length>1?o[1]:"",a=Math.floor(i.length/3);let c="";if(a>0)for(let e=1;e<=a;e++)c=i.substr(-3*e,3)+(e>1?t+c:"");const u=i.length%3;u>0&&(c=i.substr(0,u)+(c.length>0?t+c:""));n>-1&&(c+=r+s,n>s.length&&(c+=new Array(n-s.length).fill(0).join("")));return c}(a,r,t,c?Math.max(0,Math.min(u,n)):-1)}}i.defaultProps={decimal_character:".",group_separator:",",precision:2},r.d(t,"NumberTextfield",function(){return i})}])});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9SZWFjdE51bWJlclRleHRmaWVsZC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vUmVhY3ROdW1iZXJUZXh0ZmllbGQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vUmVhY3ROdW1iZXJUZXh0ZmllbGQvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL1JlYWN0TnVtYmVyVGV4dGZpZWxkLy4vc3JjL051bWJlclRleHRmaWVsZC50c3giXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsIndpbmRvdyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzBfXyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwidmFsdWUiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsImluaXRpYWxTdGF0ZSIsInN0cmluZ192YWx1ZSIsIk51bWJlclRleHRmaWVsZF9OdW1iZXJUZXh0ZmllbGQiLCJleHRlcm5hbF9yZWFjdF8iLCJbb2JqZWN0IE9iamVjdF0iLCJwcm9wcyIsImNoYXJDb2RlIiwic3VwZXIiLCJ0aGlzIiwic3RhdGUiLCJoYW5kbGVLZXlQcmVzcyIsImUiLCJzaG91bGRDYW5jZWwiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJkZWNpbWFsX2NoYXJhY3RlciIsInByZWNpc2lvbiIsImluZGV4T2YiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZUNoYW5nZSIsInBhcnNlUmVzdWx0IiwicGFyc2VTdHJpbmciLCJ0YXJnZXQiLCJncm91cF9zZXBhcmF0b3IiLCJzZXRTdGF0ZSIsImRpZENoYW5nZU51bWJlciIsIm51bWJlcl92YWx1ZSIsIkVycm9yIiwibmV4dFByb3BzIiwiY3VyclN0YXRlIiwibnVtYmVyIiwidG9TdHJpbmciLCJ0eXBlIiwiY2xhc3NOYW1lIiwicGxhY2Vob2xkZXIiLCJvbktleVByZXNzIiwib25DaGFuZ2UiLCJkZWNpbWFsQ2hhciIsImdyb3VwQ2hhciIsIm1heFByZWNpc2lvbiIsInNhbml0emVSZWdFeHAiLCJSZWdFeHAiLCJzdHIiLCJyZXBsYWNlIiwic3RyaW5nVmFsdWUiLCJudW1iZXJWYWx1ZSIsInVuZGVmaW5lZCIsImlzRGVjaW1hbCIsImxlbmd0aCIsInBhcnNlRmxvYXQiLCJwYXJzZUludCIsInN0cmluZ1RvTnVtYmVyIiwiaXNOYU4iLCJjb25zb2xlIiwid2FybiIsInN0cmluZ1BhcnRzIiwic3BsaXQiLCJjb3VudERlY2ltYWxQcmVjaXNpb24iLCJyb3VuZGluZ0NvbnN0YW50IiwiTWF0aCIsInBvdyIsImZsb29yIiwic3RyaW5nVmFsdWVQYXJ0cyIsImludGVnZXJTdHJpbmciLCJkZWNpbWFsU3RyaW5nIiwibnVtR3JvdXBzIiwiZm9ybWF0dGVkU3RyaW5nIiwic3Vic3RyIiwiaW50ZWdlclJlbWFpbmRlciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJudW1iZXJUb1N0cmluZyIsIm1heCIsIm1pbiIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6IkNBQUEsU0FBQUEsRUFBQUMsR0FDQSxpQkFBQUMsU0FBQSxpQkFBQUMsT0FDQUEsT0FBQUQsUUFBQUQsRUFBQUcsUUFBQSxVQUNBLG1CQUFBQyxlQUFBQyxJQUNBRCxPQUFBLGlDQUFBSixHQUNBLGlCQUFBQyxRQUNBQSxRQUFBLHFCQUFBRCxFQUFBRyxRQUFBLFVBRUFKLEVBQUEscUJBQUFDLEVBQUFELEVBQUEsT0FSQSxDQVNDTyxPQUFBLFNB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QUdBLEdBQUsyRixFQUFXM0YsSUFDL0I0RixFQUFrQkgsRUFBY0ksUUFBWSxFQUFMN0YsRUFBUSxJQUFNQSxFQUFJLEVBQUlnRSxFQUFZNEIsRUFBa0IsSUFLN0YsTUFBTUUsRUFBbUJMLEVBQWNmLE9BQVMsRUFDNUNvQixFQUFtQixJQUN0QkYsRUFBa0JILEVBQWNJLE9BQU8sRUFBR0MsSUFBcUJGLEVBQWdCbEIsT0FBUyxFQUFJVixFQUFZNEIsRUFBa0IsS0FLdkhuRCxHQUFhLElBQ2hCbUQsR0FBbUI3QixFQUFjMkIsRUFDN0JqRCxFQUFZaUQsRUFBY2hCLFNBQzdCa0IsR0FBbUIsSUFBS0csTUFBTXRELEVBQVlpRCxFQUFjaEIsUUFBU3NCLEtBQUssR0FBR0MsS0FBSyxNQUloRixPQUFPTCxFQWhGT00sQ0FDYjNCLEVBQ0FQLEVBQ0FELEVBQ0FVLEVBQVlZLEtBQUtjLElBQUksRUFBR2QsS0FBS2UsSUFBSTNELEVBQVd3QixLQUFrQixJQXhJakR0QyxFQUFBMEUsY0FYZDdELGtCQUFtQixJQUNuQlMsZ0JBQWlCLElBQ2pCUixVQUFXIiwiZmlsZSI6InJlYWN0LW51bWJlci10ZXh0ZmllbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCJdID0gZmFjdG9yeShyb290W1wicmVhY3RcIl0pO1xufSkod2luZG93LCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18wX18pIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18wX187IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuXHQvKipcblx0ICogSW5pdGlhbCBudW1iZXIgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGZpZWxkLlxuXHQgKiBAdHlwZSB7bnVtYmVyfVxuXHQgKi9cblx0bnVtYmVyPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGRlY2ltYWwgcGFydHMgZnJvbSB0aGUgd2hvbGUgbnVtYmVyLlxuXHQgKiBUaGlzIGlzIHVzdWFsbHkgYSBjb21tYSBvciBhIGRvdC5cblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdGRlY2ltYWxfY2hhcmFjdGVyOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBhIGdyb3VwIG9mIGRpZ2l0cyBpbiB0aGUgbnVtYmVyLlxuXHQgKiBUaGlzIGlzIGRvbmUgZXZlcnkgMyAodGhvdXNhbmQpIHZhbHVlcy5cblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdGdyb3VwX3NlcGFyYXRvcjogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8gYWxsb3cuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfVxuXHQgKi9cblx0cHJlY2lzaW9uOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIEpTWCBBdHRyaWJ1dGUgZm9yIENTUyBjbGFzc25hbWVzXG5cdCAqIEB0eXBlIHthbnl9XG5cdCAqL1xuXHRjbGFzc05hbWU/OiBhbnk7XG5cblx0LyoqXG5cdCAqIEpTWCBhdHRyaWJ1dGUgZm9yIHRoZSBpbnB1dCBwbGFjZWhvbGRlclxuXHQgKiBAdHlwZSB7YW55fVxuXHQgKi9cblx0IHBsYWNlaG9sZGVyPzogYW55O1xuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayBmdW5jdGlvbiB0byByZWNlaXZlIGNoYW5nZXMgaW4gdGhlIG51bWJlciB2YWx1ZS5cblx0ICogQHBhcmFtIHsodmFsdWU6IG51bWJlcnx1bmRlZmluZWQpID0+IHZvaWR9XG5cdCAqL1xuXHRkaWRDaGFuZ2VOdW1iZXI/OiAodmFsdWU6IG51bWJlcnx1bmRlZmluZWQpID0+IHZvaWQ7XG59O1xuXG5pbnRlcmZhY2UgSVN0YXRlIHtcblx0LyoqXG5cdCAqIFRoZSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGZpZWxkLlxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0c3RyaW5nX3ZhbHVlOiBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgSVBhcnNlUmVzdWx0IHtcblx0c3RyaW5nX3ZhbHVlOiBzdHJpbmc7XG5cdG51bWJlcl92YWx1ZTogbnVtYmVyfHVuZGVmaW5lZDtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBJUHJvcHMgPSB7XG5cdGRlY2ltYWxfY2hhcmFjdGVyOiBcIi5cIixcblx0Z3JvdXBfc2VwYXJhdG9yOiBcIixcIixcblx0cHJlY2lzaW9uOiAyLFxufTtcblxuY29uc3QgaW5pdGlhbFN0YXRlOiBJU3RhdGUgPSB7XG5cdHN0cmluZ192YWx1ZTogXCJcIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlclRleHRmaWVsZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuXG5cdHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuXG5cdHB1YmxpYyBzdGF0ZSA9IGluaXRpYWxTdGF0ZTtcblxuXHQvKipcblx0ICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQgYXMgYSBwcm9wLCB0aGlzIHdpbGwgY3JlYXRlIGEgbmV3IGZvcm1hdHRlZCBzdHJpbmdcblx0ICogZm9yIHRoYXQgbnVtYmVyLlxuXHQgKiBAcGFyYW0ge0lQcm9wc30gbmV4dFByb3BzXG5cdCAqIEBwYXJhbSB7SVN0YXRlfSBjdXJyU3RhdGVcblx0ICogQHJldHVybiB7UGFydGlhbDxJU3RhdGU+fHVuZGVmaW5lZH1cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wczogSVByb3BzLCBjdXJyU3RhdGU6IElTdGF0ZSk6IFBhcnRpYWw8SVN0YXRlPnx1bmRlZmluZWQge1xuXHRcdGlmICh0eXBlb2YgbmV4dFByb3BzLm51bWJlciA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0cmV0dXJuIHBhcnNlU3RyaW5nKFxuXHRcdFx0XHRuZXh0UHJvcHMubnVtYmVyLnRvU3RyaW5nKCksXG5cdFx0XHRcdG5leHRQcm9wcy5kZWNpbWFsX2NoYXJhY3Rlcixcblx0XHRcdFx0bmV4dFByb3BzLmdyb3VwX3NlcGFyYXRvcixcblx0XHRcdFx0bmV4dFByb3BzLnByZWNpc2lvblxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcblx0XHRzdXBlcihwcm9wcyk7XG5cblx0XHQvLyBwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgdmFsdWUuXG5cdFx0aWYgKHByb3BzLnByZWNpc2lvbiA8IDAgfHwgcHJvcHMucHJlY2lzaW9uICUgMSAhPT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTWF4aW11bSBwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxpbnB1dFxuXHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdGNsYXNzTmFtZT17IHRoaXMucHJvcHMuY2xhc3NOYW1lIH1cblx0XHRcdFx0dmFsdWU9eyB0aGlzLnN0YXRlLnN0cmluZ192YWx1ZSB9XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXsgdGhpcy5wcm9wcy5wbGFjZWhvbGRlciB9XG5cdFx0XHRcdG9uS2V5UHJlc3M9eyB0aGlzLmhhbmRsZUtleVByZXNzIH1cblx0XHRcdFx0b25DaGFuZ2U9eyB0aGlzLmhhbmRsZUNoYW5nZSB9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBLZXlQcmVzcyBldmVudCBmaXJlZCBmcm9tIHRoZSBpbnB1dCBjb250cm9sLlxuXHQgKiBAcGFyYW0ge1JlYWN0LktleWJvYXJkRXZlbnQ8YW55Pn1cblx0ICogQHJldHVybiBib29sZWFuXG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlS2V5UHJlc3MgPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxhbnk+KSA9PiB7XG5cdFx0Y29uc3QgY2hhckNvZGUgPSBlLmNoYXJDb2RlO1xuXHRcdGxldCBzaG91bGRDYW5jZWwgPSBmYWxzZTtcblxuXHRcdGlmICghY2hhckNvZGVJc0RpZ2l0KGNoYXJDb2RlKSkge1xuXHRcdFx0Y29uc3QgY2hhclN0cmluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuXG5cdFx0XHQvLyBJZiBpdCBpcyBub3QgYSBkaWdpdCBvciBhIGRlY2ltYWwgY2hhcmFjdGVyLCBjYW5jZWwgdGhlIGtleS5cblx0XHRcdGlmIChjaGFyU3RyaW5nICE9PSB0aGlzLnByb3BzLmRlY2ltYWxfY2hhcmFjdGVyKSB7XG5cdFx0XHRcdHNob3VsZENhbmNlbCA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJZiB0aGUgaW5wdXQgZmllbGQgZG9lcyBub3QgYWxsb3cgZGVjaW1hbHMsIG9yIGlmIHdlIGFscmVhZHkgdHlwZWQgb25lLCBjYW5jZWwgdGhlIGtleS5cblx0XHRcdFx0aWYgKHRoaXMucHJvcHMucHJlY2lzaW9uID09PSAwIHx8IHRoaXMuc3RhdGUuc3RyaW5nX3ZhbHVlLmluZGV4T2YodGhpcy5wcm9wcy5kZWNpbWFsX2NoYXJhY3RlcikgPiAtMSkge1xuXHRcdFx0XHRcdHNob3VsZENhbmNlbCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoc2hvdWxkQ2FuY2VsKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBjaGFuZ2UgZXZlbnQgZmlyZWQgZnJvbSB0aGUgaW5wdXQgY29udHJvbC5cblx0ICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxhbnk+fSBlXG5cdCAqIEByZXR1cm4gdm9pZFxuXHQgKi9cblx0cHVibGljIGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxhbnk+KSA9PiB7XG5cdFx0Y29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZVN0cmluZyhcblx0XHRcdGUudGFyZ2V0LnZhbHVlLFxuXHRcdFx0dGhpcy5wcm9wcy5kZWNpbWFsX2NoYXJhY3Rlcixcblx0XHRcdHRoaXMucHJvcHMuZ3JvdXBfc2VwYXJhdG9yLFxuXHRcdFx0dGhpcy5wcm9wcy5wcmVjaXNpb25cblx0XHQpO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRzdHJpbmdfdmFsdWU6IHBhcnNlUmVzdWx0LnN0cmluZ192YWx1ZSxcblx0XHR9KTtcblxuXHRcdGlmICh0eXBlb2YgdGhpcy5wcm9wcy5kaWRDaGFuZ2VOdW1iZXIgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0dGhpcy5wcm9wcy5kaWRDaGFuZ2VOdW1iZXIocGFyc2VSZXN1bHQubnVtYmVyX3ZhbHVlKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogUGFyc2VzIGEgc3RyaW5nIGFzIGEgbnVtYmVyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIGFuZCBmb3JtYXR0aW5nIHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlY2ltYWxDaGFyXG4gKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBDaGFyXG4gKiBAcGFyYW0ge251bWJlcn0gbWF4UHJlY2lzaW9uXG4gKiBAcmV0dXJuIHtJUGFyc2VSZXN1bHR9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nKHZhbHVlOiBzdHJpbmcsIGRlY2ltYWxDaGFyOiBzdHJpbmcsIGdyb3VwQ2hhcjogc3RyaW5nLCBtYXhQcmVjaXNpb246IG51bWJlcik6IElQYXJzZVJlc3VsdCB7XG5cdGNvbnN0IHNhbml0emVSZWdFeHAgPSBuZXcgUmVnRXhwKGBbXjAtOSR7IGVzY2FwZVJlZ0V4cChkZWNpbWFsQ2hhcikgfV0rYCwgXCJnXCIpO1xuXHRsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHNhbml0emVSZWdFeHAsIFwiXCIpLnJlcGxhY2UoZGVjaW1hbENoYXIsIFwiLlwiKTtcblx0bGV0IG51bWJlclZhbHVlID0gc3RyaW5nVG9OdW1iZXIoc3RyaW5nVmFsdWUpO1xuXG5cdC8vIElmIHdlIGNvdWxkIG5vdCBmaW5kIGEgbnVtYmVyLCByZXNldCB0aGUgdGV4dGZpZWxkLlxuXHRpZiAodHlwZW9mIG51bWJlclZhbHVlID09PSBcInVuZGVmaW5lZFwiIHx8IGlzTmFOKG51bWJlclZhbHVlKSkge1xuXHRcdGNvbnNvbGUud2FybihcIlN0cmluZyBjb3VsZCBub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBudW1iZXIuIFJlc2V0dGluZyB0ZXh0ZmllbGQgdmFsdWUuXCIpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRudW1iZXJfdmFsdWU6IHVuZGVmaW5lZCxcblx0XHRcdHN0cmluZ192YWx1ZTogXCJcIixcblx0XHR9O1xuXHR9XG5cblx0Ly8gSWYgaXQgZXhjZWVkcyB0aGUgbWF4aW11bSBwcmVjaXNpb24sIGNob3Agb2ZmIGV4Y2VzcyBkaWdpdHMuXG5cdGNvbnN0IGlzRGVjaW1hbCA9IHN0cmluZ1ZhbHVlLmluZGV4T2YoXCIuXCIpID4gLTE7XG5cdGNvbnN0IHByZWNpc2lvbiA9IGNvdW50RGVjaW1hbFByZWNpc2lvbihzdHJpbmdWYWx1ZSk7XG5cdGlmIChudW1iZXJWYWx1ZSAlIDEgIT09IDAgJiYgcHJlY2lzaW9uID4gbWF4UHJlY2lzaW9uKSB7XG5cdFx0Ly8gRXhjZWVkcyBwcmVjaXNpb24sIHdlIGNhbm5vdCBhbGxvdyBpdC5cblx0XHRjb25zb2xlLndhcm4oXCJBZGRpdGlvbmFsIGRlY2ltYWwgZGlnaXQgd2lsbCBleGNlZWQgbWF4aW11bSBwcmVjaXNpb24uXCIpO1xuXG5cdFx0Y29uc3Qgcm91bmRpbmdDb25zdGFudCA9IE1hdGgucG93KDEwLCBtYXhQcmVjaXNpb24pO1xuXHRcdG51bWJlclZhbHVlID0gTWF0aC5mbG9vcihudW1iZXJWYWx1ZSAqIHJvdW5kaW5nQ29uc3RhbnQpIC8gcm91bmRpbmdDb25zdGFudDtcblx0fVxuXG5cdC8vIFJlY3JlYXRlIGEgc3RyaW5nIHZhbHVlIHVzaW5nIHRoZSBkZXJpdmVkIG51bWJlclxuXHRzdHJpbmdWYWx1ZSA9IG51bWJlclRvU3RyaW5nKFxuXHRcdG51bWJlclZhbHVlLFxuXHRcdGdyb3VwQ2hhcixcblx0XHRkZWNpbWFsQ2hhcixcblx0XHRpc0RlY2ltYWwgPyBNYXRoLm1heCgwLCBNYXRoLm1pbihwcmVjaXNpb24sIG1heFByZWNpc2lvbikpIDogLTFcblx0KTtcblxuXHRyZXR1cm4ge1xuXHRcdG51bWJlcl92YWx1ZTogbnVtYmVyVmFsdWUsXG5cdFx0c3RyaW5nX3ZhbHVlOiBzdHJpbmdWYWx1ZSxcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4gbnVtYmVyfHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBzdHJpbmdUb051bWJlcih2YWx1ZTogc3RyaW5nKTogbnVtYmVyfHVuZGVmaW5lZCB7XG5cdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyfHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblx0XG5cdC8vIElmIHdlIGhhdmUgYSBkZWNpbWFsIGRvdCBpbiB0aGUgc3RyaW5nLCB0aGVuIGl0IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLlxuXHRjb25zdCBpc0RlY2ltYWw6IGJvb2xlYW4gPSB2YWx1ZS5pbmRleE9mKFwiLlwiKSA+IC0xO1xuXG5cdC8vIElmIGl0IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBtYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgd2hvbGUgbnVtYmVyLlxuXHQvLyBBc3N1bWUgemVybyBpZiBub3RoaW5nIGlzIHRoZXJlLlxuXHRpZiAoaXNEZWNpbWFsICYmIHZhbHVlLmxlbmd0aCA9PT0gMSkge1xuXHRcdHZhbHVlID0gXCIwXCIgKyB2YWx1ZTtcblx0fVxuXG5cdC8vIElmIGl0IGhhcyB0aGUgZGVjaW1hbCBjaGFyYWN0ZXIsIHdlIHdpbGwgcGFyc2UgdGhlIHN0cmluZyBhcyBhIGRlY2ltYWwgdmFsdWUuXG5cdGlmIChpc0RlY2ltYWwpIHtcblx0XHRudW1iZXJWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuXHR9IGVsc2Uge1xuXHRcdG51bWJlclZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuXHR9XG5cblx0cmV0dXJuIG51bWJlclZhbHVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIgZ2l2ZW4gYSBzcGVjaWZpYyBncm91cCBjaGFyYWN0ZXIgYW5kIGRlY2ltYWwgY2hhcmFjdGVyLlxuICogUHJvdmlkaW5nIC0xIGZvciBwcmVjaXNpb24gd2lsbCByZW1vdmUgdGhlIGRlY2ltYWwgcG9pbnQgYWx0b2dldGhlci5cbiAqIFByb3ZpZGluZyAwIGZvciBwcmVjaXNpb24gd2lsbCBhZGQganVzdCB0aGUgZGVjaW1hbCBwb2ludC5cbiAqIEFueSBwb3NpdGl2ZSBudW1iZXIgd2lsbCBhZGQgdGhlIGRlY2ltYWwgdmFsdWVzIGFuZCBwYWQgd2l0aCB6ZXJvZXMuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBncm91cENoYXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsQ2hhclxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvblxuICogQHJldHVybiBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcodmFsdWU6IG51bWJlciwgZ3JvdXBDaGFyOiBzdHJpbmcsIGRlY2ltYWxDaGFyOiBzdHJpbmcsIHByZWNpc2lvbjogbnVtYmVyKTogc3RyaW5nIHtcblx0Y29uc3Qgc3RyaW5nVmFsdWVQYXJ0cyA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuXHRjb25zdCBpbnRlZ2VyU3RyaW5nID0gc3RyaW5nVmFsdWVQYXJ0c1swXTtcblx0Y29uc3QgZGVjaW1hbFN0cmluZyA9IHN0cmluZ1ZhbHVlUGFydHMubGVuZ3RoID4gMSA/IHN0cmluZ1ZhbHVlUGFydHNbMV0gOiBcIlwiO1xuXHRjb25zdCBudW1Hcm91cHMgPSBNYXRoLmZsb29yKGludGVnZXJTdHJpbmcubGVuZ3RoIC8gMyk7XG5cdGxldCBmb3JtYXR0ZWRTdHJpbmc6IHN0cmluZyA9IFwiXCI7XG5cblx0Ly8gQWRkIHRoZSB3aG9sZSBpbnRlZ2VyIHZhbHVlcywgc2VwYXJhdGVkIGJ5IGV2ZXJ5IDMgbnVtYmVycyB3aXRoIHRoZSBncm91cENoYXJcblx0aWYgKG51bUdyb3VwcyA+IDApIHtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8PSBudW1Hcm91cHM7IGkrKykge1xuXHRcdFx0Zm9ybWF0dGVkU3RyaW5nID0gaW50ZWdlclN0cmluZy5zdWJzdHIoaSAqIC0zLCAzKSArIChpID4gMSA/IGdyb3VwQ2hhciArIGZvcm1hdHRlZFN0cmluZyA6IFwiXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEFkZCB0aGUgcmVtYWluaW5nIGludGVnZXJzIHRoYXQgZGlkbid0IGZhbGwgaW50byBhIGdyb3VwIG9mIDNcblx0Y29uc3QgaW50ZWdlclJlbWFpbmRlciA9IGludGVnZXJTdHJpbmcubGVuZ3RoICUgMztcblx0aWYgKGludGVnZXJSZW1haW5kZXIgPiAwKSB7XG5cdFx0Zm9ybWF0dGVkU3RyaW5nID0gaW50ZWdlclN0cmluZy5zdWJzdHIoMCwgaW50ZWdlclJlbWFpbmRlcikgKyAoZm9ybWF0dGVkU3RyaW5nLmxlbmd0aCA+IDAgPyBncm91cENoYXIgKyBmb3JtYXR0ZWRTdHJpbmcgOiBcIlwiKTtcblx0fVxuXG5cdC8vIElmIHdlIGFyZSBpbmNsdWRpbmcgZGVjaW1hbCB2YWx1ZXMsIGFkZCB0aGUgZGVjaW1hbCBjaGFyYWN0ZXIgYW5kIHRoZSBkZWNpbWFsIHN0cmluZyB2YWx1ZXMuXG5cdC8vIEZpbGwgaW4gMHMgZm9yIGFueSByZW1haW5pbmcgcHJlY2lzaW9uLlxuXHRpZiAocHJlY2lzaW9uID4gLTEpIHtcblx0XHRmb3JtYXR0ZWRTdHJpbmcgKz0gZGVjaW1hbENoYXIgKyBkZWNpbWFsU3RyaW5nO1xuXHRcdGlmIChwcmVjaXNpb24gPiBkZWNpbWFsU3RyaW5nLmxlbmd0aCkge1xuXHRcdFx0Zm9ybWF0dGVkU3RyaW5nICs9IChuZXcgQXJyYXkocHJlY2lzaW9uIC0gZGVjaW1hbFN0cmluZy5sZW5ndGgpKS5maWxsKDApLmpvaW4oXCJcIik7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZvcm1hdHRlZFN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcmVjaXNpb24gKG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcykgaW4gYSBudW1iZXJpY2FsIHN0cmluZy5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlY2ltYWxDaGFyIFRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgYSBkZWNpbWFsLlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBjb3VudERlY2ltYWxQcmVjaXNpb24odmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG5cdGNvbnN0IHN0cmluZ1BhcnRzID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XG5cdGlmIChzdHJpbmdQYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0cmV0dXJuIHN0cmluZ1BhcnRzWzFdLmxlbmd0aDtcblx0fVxuXG5cdHJldHVybiAwO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgY2VydGFpbiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nIGFuZCBwcmVwYXJlcyBpdCBmb3IgdXNlIGFzIGEgcmVndWxhciBleHByZXNzaW9uLlxuICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDQ2MTcwL2VzY2FwZS1zdHJpbmctZm9yLXVzZS1pbi1qYXZhc2NyaXB0LXJlZ2V4LzY5Njk0ODYjNjk2OTQ4NlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCBhIGdpdmVuIGNoYXJhY3RlciBjb2RlIG1hcHMgdG8gYSBkZWNpbWFsIGRpZ2l0ICgwLTkpLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gY2hhckNvZGVJc0RpZ2l0KGNoYXJDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcblx0cmV0dXJuIGNoYXJDb2RlID49IDQ4ICYmIGNoYXJDb2RlIDw9IDU3O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9SZWFjdE51bWJlclRleHRmaWVsZC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vUmVhY3ROdW1iZXJUZXh0ZmllbGQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vUmVhY3ROdW1iZXJUZXh0ZmllbGQvZXh0ZXJuYWwgXCJyZWFjdFwiIiwid2VicGFjazovL1JlYWN0TnVtYmVyVGV4dGZpZWxkLy4vc3JjL051bWJlclRleHRmaWVsZC50c3giXSwibmFtZXMiOlsicm9vdCIsImZhY3RvcnkiLCJleHBvcnRzIiwibW9kdWxlIiwicmVxdWlyZSIsImRlZmluZSIsImFtZCIsIndpbmRvdyIsIl9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzBfXyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwidmFsdWUiLCJuIiwiX19lc01vZHVsZSIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsImluaXRpYWxTdGF0ZSIsInN0cmluZ192YWx1ZSIsIk51bWJlclRleHRmaWVsZF9OdW1iZXJUZXh0ZmllbGQiLCJleHRlcm5hbF9yZWFjdF8iLCJbb2JqZWN0IE9iamVjdF0iLCJwcm9wcyIsImNoYXJDb2RlIiwic3VwZXIiLCJ0aGlzIiwic3RhdGUiLCJoYW5kbGVLZXlQcmVzcyIsImUiLCJzaG91bGRDYW5jZWwiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJkZWNpbWFsX2NoYXJhY3RlciIsInByZWNpc2lvbiIsImluZGV4T2YiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImhhbmRsZUNoYW5nZSIsInBhcnNlUmVzdWx0IiwicGFyc2VTdHJpbmciLCJ0YXJnZXQiLCJncm91cF9zZXBhcmF0b3IiLCJzZXRTdGF0ZSIsImRpZENoYW5nZU51bWJlciIsIm51bWJlcl92YWx1ZSIsIkVycm9yIiwibmV4dFByb3BzIiwiY3VyclN0YXRlIiwibnVtYmVyIiwidG9TdHJpbmciLCJ0eXBlIiwiY2xhc3NOYW1lIiwicGxhY2Vob2xkZXIiLCJvbktleVByZXNzIiwib25DaGFuZ2UiLCJkZWNpbWFsQ2hhciIsImdyb3VwQ2hhciIsIm1heFByZWNpc2lvbiIsInNhbml0emVSZWdFeHAiLCJSZWdFeHAiLCJzdHIiLCJyZXBsYWNlIiwic3RyaW5nVmFsdWUiLCJudW1iZXJWYWx1ZSIsInVuZGVmaW5lZCIsImlzRGVjaW1hbCIsImxlbmd0aCIsInBhcnNlRmxvYXQiLCJwYXJzZUludCIsInN0cmluZ1RvTnVtYmVyIiwiaXNOYU4iLCJjb25zb2xlIiwid2FybiIsInN0cmluZ1BhcnRzIiwic3BsaXQiLCJjb3VudERlY2ltYWxQcmVjaXNpb24iLCJyb3VuZGluZ0NvbnN0YW50IiwiTWF0aCIsInBvdyIsImZsb29yIiwic3RyaW5nVmFsdWVQYXJ0cyIsImludGVnZXJTdHJpbmciLCJkZWNpbWFsU3RyaW5nIiwibnVtR3JvdXBzIiwiZm9ybWF0dGVkU3RyaW5nIiwic3Vic3RyIiwiaW50ZWdlclJlbWFpbmRlciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJudW1iZXJUb1N0cmluZyIsIm1heCIsIm1pbiIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6IkNBQUEsU0FBQUEsRUFBQUMsR0FDQSxpQkFBQUMsU0FBQSxpQkFBQUMsT0FDQUEsT0FBQUQsUUFBQUQsRUFBQUcsUUFBQSxVQUNBLG1CQUFBQyxlQUFBQyxJQUNBRCxPQUFBLGlDQUFBSixHQUNBLGlCQUFBQyxRQUNBQSxRQUFBLHFCQUFBRCxFQUFBRyxRQUFBLFVBRUFKLEVBQUEscUJBQUFDLEVBQUFELEVBQUEsT0FSQSxDQVNDTyxPQUFBLFNB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QUdBLEdBQUsyRixFQUFXM0YsSUFDL0I0RixFQUFrQkgsRUFBY0ksUUFBWSxFQUFMN0YsRUFBUSxJQUFNQSxFQUFJLEVBQUlnRSxFQUFZNEIsRUFBa0IsSUFLN0YsTUFBTUUsRUFBbUJMLEVBQWNmLE9BQVMsRUFDNUNvQixFQUFtQixJQUN0QkYsRUFBa0JILEVBQWNJLE9BQU8sRUFBR0MsSUFBcUJGLEVBQWdCbEIsT0FBUyxFQUFJVixFQUFZNEIsRUFBa0IsS0FLdkhuRCxHQUFhLElBQ2hCbUQsR0FBbUI3QixFQUFjMkIsRUFDN0JqRCxFQUFZaUQsRUFBY2hCLFNBQzdCa0IsR0FBbUIsSUFBS0csTUFBTXRELEVBQVlpRCxFQUFjaEIsUUFBU3NCLEtBQUssR0FBR0MsS0FBSyxNQUloRixPQUFPTCxFQWhGT00sQ0FDYjNCLEVBQ0FQLEVBQ0FELEVBQ0FVLEVBQVlZLEtBQUtjLElBQUksRUFBR2QsS0FBS2UsSUFBSTNELEVBQVd3QixLQUFrQixJQTVJakR0QyxFQUFBMEUsY0FDYjdELGtCQUFtQixJQUNuQlMsZ0JBQWlCLElBQ2pCUixVQUFXIiwiZmlsZSI6InJlYWN0LW51bWJlci10ZXh0ZmllbGQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCIsIFtcInJlYWN0XCJdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCJdID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIlJlYWN0TnVtYmVyVGV4dGZpZWxkXCJdID0gZmFjdG9yeShyb290W1wicmVhY3RcIl0pO1xufSkod2luZG93LCBmdW5jdGlvbihfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18wX18pIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDEpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18wX187IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuXHQvKipcblx0ICogSW5pdGlhbCBudW1iZXIgdmFsdWUgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGZpZWxkLlxuXHQgKiBAdHlwZSB7bnVtYmVyfVxuXHQgKi9cblx0bnVtYmVyPzogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBUaGUgY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlIGRlY2ltYWwgcGFydHMgZnJvbSB0aGUgd2hvbGUgbnVtYmVyLlxuXHQgKiBUaGlzIGlzIHVzdWFsbHkgYSBjb21tYSBvciBhIGRvdC5cblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdGRlY2ltYWxfY2hhcmFjdGVyOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBhIGdyb3VwIG9mIGRpZ2l0cyBpbiB0aGUgbnVtYmVyLlxuXHQgKiBUaGlzIGlzIGRvbmUgZXZlcnkgMyAodGhvdXNhbmQpIHZhbHVlcy5cblx0ICogQHR5cGUge3N0cmluZ31cblx0ICovXG5cdGdyb3VwX3NlcGFyYXRvcjogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8gYWxsb3cuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfVxuXHQgKi9cblx0cHJlY2lzaW9uOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIEpTWCBBdHRyaWJ1dGUgZm9yIENTUyBjbGFzc25hbWVzXG5cdCAqIEB0eXBlIHthbnl9XG5cdCAqL1xuXHRjbGFzc05hbWU/OiBhbnk7XG5cblx0LyoqXG5cdCAqIEpTWCBhdHRyaWJ1dGUgZm9yIHRoZSBpbnB1dCBwbGFjZWhvbGRlclxuXHQgKiBAdHlwZSB7YW55fVxuXHQgKi9cblx0IHBsYWNlaG9sZGVyPzogYW55O1xuXG5cdC8qKlxuXHQgKiBDYWxsYmFjayBmdW5jdGlvbiB0byByZWNlaXZlIGNoYW5nZXMgaW4gdGhlIG51bWJlciB2YWx1ZS5cblx0ICogQHBhcmFtIHsodmFsdWU6IG51bWJlcnx1bmRlZmluZWQpID0+IHZvaWR9XG5cdCAqL1xuXHRkaWRDaGFuZ2VOdW1iZXI/OiAodmFsdWU6IG51bWJlcnx1bmRlZmluZWQpID0+IHZvaWQ7XG59O1xuXG5pbnRlcmZhY2UgSVN0YXRlIHtcblx0LyoqXG5cdCAqIFRoZSBzdHJpbmcgdG8gZGlzcGxheSBpbiB0aGUgdGV4dGZpZWxkLlxuXHQgKiBAdHlwZSB7c3RyaW5nfVxuXHQgKi9cblx0c3RyaW5nX3ZhbHVlOiBzdHJpbmc7XG59O1xuXG5pbnRlcmZhY2UgSVBhcnNlUmVzdWx0IHtcblx0c3RyaW5nX3ZhbHVlOiBzdHJpbmc7XG5cdG51bWJlcl92YWx1ZTogbnVtYmVyfHVuZGVmaW5lZDtcbn1cblxuY29uc3QgaW5pdGlhbFN0YXRlOiBJU3RhdGUgPSB7XG5cdHN0cmluZ192YWx1ZTogXCJcIixcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlclRleHRmaWVsZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuXG5cdHB1YmxpYyBzdGF0aWMgZGVmYXVsdFByb3BzOiBJUHJvcHMgPSB7XG5cdFx0ZGVjaW1hbF9jaGFyYWN0ZXI6IFwiLlwiLFxuXHRcdGdyb3VwX3NlcGFyYXRvcjogXCIsXCIsXG5cdFx0cHJlY2lzaW9uOiAyLFxuXHR9O1xuXG5cdHB1YmxpYyBzdGF0ZSA9IGluaXRpYWxTdGF0ZTtcblxuXHQvKipcblx0ICogSWYgYSBudW1iZXIgaXMgcHJvdmlkZWQgYXMgYSBwcm9wLCB0aGlzIHdpbGwgY3JlYXRlIGEgbmV3IGZvcm1hdHRlZCBzdHJpbmdcblx0ICogZm9yIHRoYXQgbnVtYmVyLlxuXHQgKiBAcGFyYW0ge0lQcm9wc30gbmV4dFByb3BzXG5cdCAqIEBwYXJhbSB7SVN0YXRlfSBjdXJyU3RhdGVcblx0ICogQHJldHVybiB7UGFydGlhbDxJU3RhdGU+fHVuZGVmaW5lZH1cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wczogSVByb3BzLCBjdXJyU3RhdGU6IElTdGF0ZSk6IFBhcnRpYWw8SVN0YXRlPnx1bmRlZmluZWQge1xuXHRcdGlmICh0eXBlb2YgbmV4dFByb3BzLm51bWJlciA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0cmV0dXJuIHBhcnNlU3RyaW5nKFxuXHRcdFx0XHRuZXh0UHJvcHMubnVtYmVyLnRvU3RyaW5nKCksXG5cdFx0XHRcdG5leHRQcm9wcy5kZWNpbWFsX2NoYXJhY3Rlcixcblx0XHRcdFx0bmV4dFByb3BzLmdyb3VwX3NlcGFyYXRvcixcblx0XHRcdFx0bmV4dFByb3BzLnByZWNpc2lvblxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcblx0XHRzdXBlcihwcm9wcyk7XG5cblx0XHQvLyBwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgdmFsdWUuXG5cdFx0aWYgKHByb3BzLnByZWNpc2lvbiA8IDAgfHwgcHJvcHMucHJlY2lzaW9uICUgMSAhPT0gMCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiTWF4aW11bSBwcmVjaXNpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXCIpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyByZW5kZXIoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxpbnB1dFxuXHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdGNsYXNzTmFtZT17IHRoaXMucHJvcHMuY2xhc3NOYW1lIH1cblx0XHRcdFx0dmFsdWU9eyB0aGlzLnN0YXRlLnN0cmluZ192YWx1ZSB9XG5cdFx0XHRcdHBsYWNlaG9sZGVyPXsgdGhpcy5wcm9wcy5wbGFjZWhvbGRlciB9XG5cdFx0XHRcdG9uS2V5UHJlc3M9eyB0aGlzLmhhbmRsZUtleVByZXNzIH1cblx0XHRcdFx0b25DaGFuZ2U9eyB0aGlzLmhhbmRsZUNoYW5nZSB9XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogRXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBLZXlQcmVzcyBldmVudCBmaXJlZCBmcm9tIHRoZSBpbnB1dCBjb250cm9sLlxuXHQgKiBAcGFyYW0ge1JlYWN0LktleWJvYXJkRXZlbnQ8YW55Pn1cblx0ICogQHJldHVybiBib29sZWFuXG5cdCAqL1xuXHRwdWJsaWMgaGFuZGxlS2V5UHJlc3MgPSAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxhbnk+KSA9PiB7XG5cdFx0Y29uc3QgY2hhckNvZGUgPSBlLmNoYXJDb2RlO1xuXHRcdGxldCBzaG91bGRDYW5jZWwgPSBmYWxzZTtcblxuXHRcdGlmICghY2hhckNvZGVJc0RpZ2l0KGNoYXJDb2RlKSkge1xuXHRcdFx0Y29uc3QgY2hhclN0cmluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuXG5cdFx0XHQvLyBJZiBpdCBpcyBub3QgYSBkaWdpdCBvciBhIGRlY2ltYWwgY2hhcmFjdGVyLCBjYW5jZWwgdGhlIGtleS5cblx0XHRcdGlmIChjaGFyU3RyaW5nICE9PSB0aGlzLnByb3BzLmRlY2ltYWxfY2hhcmFjdGVyKSB7XG5cdFx0XHRcdHNob3VsZENhbmNlbCA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBJZiB0aGUgaW5wdXQgZmllbGQgZG9lcyBub3QgYWxsb3cgZGVjaW1hbHMsIG9yIGlmIHdlIGFscmVhZHkgdHlwZWQgb25lLCBjYW5jZWwgdGhlIGtleS5cblx0XHRcdFx0aWYgKHRoaXMucHJvcHMucHJlY2lzaW9uID09PSAwIHx8IHRoaXMuc3RhdGUuc3RyaW5nX3ZhbHVlLmluZGV4T2YodGhpcy5wcm9wcy5kZWNpbWFsX2NoYXJhY3RlcikgPiAtMSkge1xuXHRcdFx0XHRcdHNob3VsZENhbmNlbCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoc2hvdWxkQ2FuY2VsKSB7XG5cdFx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fTtcblxuXHQvKipcblx0ICogRXZlbnQgbGlzdGVuZXIgZm9yIHRoZSBjaGFuZ2UgZXZlbnQgZmlyZWQgZnJvbSB0aGUgaW5wdXQgY29udHJvbC5cblx0ICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxhbnk+fSBlXG5cdCAqIEByZXR1cm4gdm9pZFxuXHQgKi9cblx0cHVibGljIGhhbmRsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxhbnk+KSA9PiB7XG5cdFx0Y29uc3QgcGFyc2VSZXN1bHQgPSBwYXJzZVN0cmluZyhcblx0XHRcdGUudGFyZ2V0LnZhbHVlLFxuXHRcdFx0dGhpcy5wcm9wcy5kZWNpbWFsX2NoYXJhY3Rlcixcblx0XHRcdHRoaXMucHJvcHMuZ3JvdXBfc2VwYXJhdG9yLFxuXHRcdFx0dGhpcy5wcm9wcy5wcmVjaXNpb25cblx0XHQpO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRzdHJpbmdfdmFsdWU6IHBhcnNlUmVzdWx0LnN0cmluZ192YWx1ZSxcblx0XHR9KTtcblxuXHRcdGlmICh0eXBlb2YgdGhpcy5wcm9wcy5kaWRDaGFuZ2VOdW1iZXIgPT09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0dGhpcy5wcm9wcy5kaWRDaGFuZ2VOdW1iZXIocGFyc2VSZXN1bHQubnVtYmVyX3ZhbHVlKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogUGFyc2VzIGEgc3RyaW5nIGFzIGEgbnVtYmVyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIGFuZCBmb3JtYXR0aW5nIHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlY2ltYWxDaGFyXG4gKiBAcGFyYW0ge3N0cmluZ30gZ3JvdXBDaGFyXG4gKiBAcGFyYW0ge251bWJlcn0gbWF4UHJlY2lzaW9uXG4gKiBAcmV0dXJuIHtJUGFyc2VSZXN1bHR9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlU3RyaW5nKHZhbHVlOiBzdHJpbmcsIGRlY2ltYWxDaGFyOiBzdHJpbmcsIGdyb3VwQ2hhcjogc3RyaW5nLCBtYXhQcmVjaXNpb246IG51bWJlcik6IElQYXJzZVJlc3VsdCB7XG5cdGNvbnN0IHNhbml0emVSZWdFeHAgPSBuZXcgUmVnRXhwKGBbXjAtOSR7IGVzY2FwZVJlZ0V4cChkZWNpbWFsQ2hhcikgfV0rYCwgXCJnXCIpO1xuXHRsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHNhbml0emVSZWdFeHAsIFwiXCIpLnJlcGxhY2UoZGVjaW1hbENoYXIsIFwiLlwiKTtcblx0bGV0IG51bWJlclZhbHVlID0gc3RyaW5nVG9OdW1iZXIoc3RyaW5nVmFsdWUpO1xuXG5cdC8vIElmIHdlIGNvdWxkIG5vdCBmaW5kIGEgbnVtYmVyLCByZXNldCB0aGUgdGV4dGZpZWxkLlxuXHRpZiAodHlwZW9mIG51bWJlclZhbHVlID09PSBcInVuZGVmaW5lZFwiIHx8IGlzTmFOKG51bWJlclZhbHVlKSkge1xuXHRcdGNvbnNvbGUud2FybihcIlN0cmluZyBjb3VsZCBub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSBudW1iZXIuIFJlc2V0dGluZyB0ZXh0ZmllbGQgdmFsdWUuXCIpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRudW1iZXJfdmFsdWU6IHVuZGVmaW5lZCxcblx0XHRcdHN0cmluZ192YWx1ZTogXCJcIixcblx0XHR9O1xuXHR9XG5cblx0Ly8gSWYgaXQgZXhjZWVkcyB0aGUgbWF4aW11bSBwcmVjaXNpb24sIGNob3Agb2ZmIGV4Y2VzcyBkaWdpdHMuXG5cdGNvbnN0IGlzRGVjaW1hbCA9IHN0cmluZ1ZhbHVlLmluZGV4T2YoXCIuXCIpID4gLTE7XG5cdGNvbnN0IHByZWNpc2lvbiA9IGNvdW50RGVjaW1hbFByZWNpc2lvbihzdHJpbmdWYWx1ZSk7XG5cdGlmIChudW1iZXJWYWx1ZSAlIDEgIT09IDAgJiYgcHJlY2lzaW9uID4gbWF4UHJlY2lzaW9uKSB7XG5cdFx0Ly8gRXhjZWVkcyBwcmVjaXNpb24sIHdlIGNhbm5vdCBhbGxvdyBpdC5cblx0XHRjb25zb2xlLndhcm4oXCJBZGRpdGlvbmFsIGRlY2ltYWwgZGlnaXQgd2lsbCBleGNlZWQgbWF4aW11bSBwcmVjaXNpb24uXCIpO1xuXG5cdFx0Y29uc3Qgcm91bmRpbmdDb25zdGFudCA9IE1hdGgucG93KDEwLCBtYXhQcmVjaXNpb24pO1xuXHRcdG51bWJlclZhbHVlID0gTWF0aC5mbG9vcihudW1iZXJWYWx1ZSAqIHJvdW5kaW5nQ29uc3RhbnQpIC8gcm91bmRpbmdDb25zdGFudDtcblx0fVxuXG5cdC8vIFJlY3JlYXRlIGEgc3RyaW5nIHZhbHVlIHVzaW5nIHRoZSBkZXJpdmVkIG51bWJlclxuXHRzdHJpbmdWYWx1ZSA9IG51bWJlclRvU3RyaW5nKFxuXHRcdG51bWJlclZhbHVlLFxuXHRcdGdyb3VwQ2hhcixcblx0XHRkZWNpbWFsQ2hhcixcblx0XHRpc0RlY2ltYWwgPyBNYXRoLm1heCgwLCBNYXRoLm1pbihwcmVjaXNpb24sIG1heFByZWNpc2lvbikpIDogLTFcblx0KTtcblxuXHRyZXR1cm4ge1xuXHRcdG51bWJlcl92YWx1ZTogbnVtYmVyVmFsdWUsXG5cdFx0c3RyaW5nX3ZhbHVlOiBzdHJpbmdWYWx1ZSxcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBudW1lcmljYWwgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4gbnVtYmVyfHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBzdHJpbmdUb051bWJlcih2YWx1ZTogc3RyaW5nKTogbnVtYmVyfHVuZGVmaW5lZCB7XG5cdGxldCBudW1iZXJWYWx1ZTogbnVtYmVyfHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblx0XG5cdC8vIElmIHdlIGhhdmUgYSBkZWNpbWFsIGRvdCBpbiB0aGUgc3RyaW5nLCB0aGVuIGl0IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLlxuXHRjb25zdCBpc0RlY2ltYWw6IGJvb2xlYW4gPSB2YWx1ZS5pbmRleE9mKFwiLlwiKSA+IC0xO1xuXG5cdC8vIElmIGl0IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBtYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBvbmUgd2hvbGUgbnVtYmVyLlxuXHQvLyBBc3N1bWUgemVybyBpZiBub3RoaW5nIGlzIHRoZXJlLlxuXHRpZiAoaXNEZWNpbWFsICYmIHZhbHVlLmxlbmd0aCA9PT0gMSkge1xuXHRcdHZhbHVlID0gXCIwXCIgKyB2YWx1ZTtcblx0fVxuXG5cdC8vIElmIGl0IGhhcyB0aGUgZGVjaW1hbCBjaGFyYWN0ZXIsIHdlIHdpbGwgcGFyc2UgdGhlIHN0cmluZyBhcyBhIGRlY2ltYWwgdmFsdWUuXG5cdGlmIChpc0RlY2ltYWwpIHtcblx0XHRudW1iZXJWYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuXHR9IGVsc2Uge1xuXHRcdG51bWJlclZhbHVlID0gcGFyc2VJbnQodmFsdWUpO1xuXHR9XG5cblx0cmV0dXJuIG51bWJlclZhbHVlO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBudW1iZXIgZ2l2ZW4gYSBzcGVjaWZpYyBncm91cCBjaGFyYWN0ZXIgYW5kIGRlY2ltYWwgY2hhcmFjdGVyLlxuICogUHJvdmlkaW5nIC0xIGZvciBwcmVjaXNpb24gd2lsbCByZW1vdmUgdGhlIGRlY2ltYWwgcG9pbnQgYWx0b2dldGhlci5cbiAqIFByb3ZpZGluZyAwIGZvciBwcmVjaXNpb24gd2lsbCBhZGQganVzdCB0aGUgZGVjaW1hbCBwb2ludC5cbiAqIEFueSBwb3NpdGl2ZSBudW1iZXIgd2lsbCBhZGQgdGhlIGRlY2ltYWwgdmFsdWVzIGFuZCBwYWQgd2l0aCB6ZXJvZXMuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBncm91cENoYXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsQ2hhclxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvblxuICogQHJldHVybiBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gbnVtYmVyVG9TdHJpbmcodmFsdWU6IG51bWJlciwgZ3JvdXBDaGFyOiBzdHJpbmcsIGRlY2ltYWxDaGFyOiBzdHJpbmcsIHByZWNpc2lvbjogbnVtYmVyKTogc3RyaW5nIHtcblx0Y29uc3Qgc3RyaW5nVmFsdWVQYXJ0cyA9IHZhbHVlLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpO1xuXHRjb25zdCBpbnRlZ2VyU3RyaW5nID0gc3RyaW5nVmFsdWVQYXJ0c1swXTtcblx0Y29uc3QgZGVjaW1hbFN0cmluZyA9IHN0cmluZ1ZhbHVlUGFydHMubGVuZ3RoID4gMSA/IHN0cmluZ1ZhbHVlUGFydHNbMV0gOiBcIlwiO1xuXHRjb25zdCBudW1Hcm91cHMgPSBNYXRoLmZsb29yKGludGVnZXJTdHJpbmcubGVuZ3RoIC8gMyk7XG5cdGxldCBmb3JtYXR0ZWRTdHJpbmc6IHN0cmluZyA9IFwiXCI7XG5cblx0Ly8gQWRkIHRoZSB3aG9sZSBpbnRlZ2VyIHZhbHVlcywgc2VwYXJhdGVkIGJ5IGV2ZXJ5IDMgbnVtYmVycyB3aXRoIHRoZSBncm91cENoYXJcblx0aWYgKG51bUdyb3VwcyA+IDApIHtcblx0XHRmb3IgKGxldCBpID0gMTsgaSA8PSBudW1Hcm91cHM7IGkrKykge1xuXHRcdFx0Zm9ybWF0dGVkU3RyaW5nID0gaW50ZWdlclN0cmluZy5zdWJzdHIoaSAqIC0zLCAzKSArIChpID4gMSA/IGdyb3VwQ2hhciArIGZvcm1hdHRlZFN0cmluZyA6IFwiXCIpO1xuXHRcdH1cblx0fVxuXG5cdC8vIEFkZCB0aGUgcmVtYWluaW5nIGludGVnZXJzIHRoYXQgZGlkbid0IGZhbGwgaW50byBhIGdyb3VwIG9mIDNcblx0Y29uc3QgaW50ZWdlclJlbWFpbmRlciA9IGludGVnZXJTdHJpbmcubGVuZ3RoICUgMztcblx0aWYgKGludGVnZXJSZW1haW5kZXIgPiAwKSB7XG5cdFx0Zm9ybWF0dGVkU3RyaW5nID0gaW50ZWdlclN0cmluZy5zdWJzdHIoMCwgaW50ZWdlclJlbWFpbmRlcikgKyAoZm9ybWF0dGVkU3RyaW5nLmxlbmd0aCA+IDAgPyBncm91cENoYXIgKyBmb3JtYXR0ZWRTdHJpbmcgOiBcIlwiKTtcblx0fVxuXG5cdC8vIElmIHdlIGFyZSBpbmNsdWRpbmcgZGVjaW1hbCB2YWx1ZXMsIGFkZCB0aGUgZGVjaW1hbCBjaGFyYWN0ZXIgYW5kIHRoZSBkZWNpbWFsIHN0cmluZyB2YWx1ZXMuXG5cdC8vIEZpbGwgaW4gMHMgZm9yIGFueSByZW1haW5pbmcgcHJlY2lzaW9uLlxuXHRpZiAocHJlY2lzaW9uID4gLTEpIHtcblx0XHRmb3JtYXR0ZWRTdHJpbmcgKz0gZGVjaW1hbENoYXIgKyBkZWNpbWFsU3RyaW5nO1xuXHRcdGlmIChwcmVjaXNpb24gPiBkZWNpbWFsU3RyaW5nLmxlbmd0aCkge1xuXHRcdFx0Zm9ybWF0dGVkU3RyaW5nICs9IChuZXcgQXJyYXkocHJlY2lzaW9uIC0gZGVjaW1hbFN0cmluZy5sZW5ndGgpKS5maWxsKDApLmpvaW4oXCJcIik7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZvcm1hdHRlZFN0cmluZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBwcmVjaXNpb24gKG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcykgaW4gYSBudW1iZXJpY2FsIHN0cmluZy5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlY2ltYWxDaGFyIFRoZSBjaGFyYWN0ZXIgdXNlZCBmb3IgYSBkZWNpbWFsLlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBjb3VudERlY2ltYWxQcmVjaXNpb24odmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG5cdGNvbnN0IHN0cmluZ1BhcnRzID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdChcIi5cIik7XG5cdGlmIChzdHJpbmdQYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0cmV0dXJuIHN0cmluZ1BhcnRzWzFdLmxlbmd0aDtcblx0fVxuXG5cdHJldHVybiAwO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgY2VydGFpbiBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nIGFuZCBwcmVwYXJlcyBpdCBmb3IgdXNlIGFzIGEgcmVndWxhciBleHByZXNzaW9uLlxuICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zNDQ2MTcwL2VzY2FwZS1zdHJpbmctZm9yLXVzZS1pbi1qYXZhc2NyaXB0LXJlZ2V4LzY5Njk0ODYjNjk2OTQ4NlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gc3RyLnJlcGxhY2UoL1tcXC1cXFtcXF1cXC9cXHtcXH1cXChcXClcXCpcXCtcXD9cXC5cXFxcXFxeXFwkXFx8XS9nLCBcIlxcXFwkJlwiKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIG9yIG5vdCBhIGdpdmVuIGNoYXJhY3RlciBjb2RlIG1hcHMgdG8gYSBkZWNpbWFsIGRpZ2l0ICgwLTkpLlxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gY2hhckNvZGVJc0RpZ2l0KGNoYXJDb2RlOiBudW1iZXIpOiBib29sZWFuIHtcblx0cmV0dXJuIGNoYXJDb2RlID49IDQ4ICYmIGNoYXJDb2RlIDw9IDU3O1xufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
{
"name": "react-number-textfield",
"version": "1.3.0",
"version": "1.3.1",
"description": "Controlled ReactJS component for entering numbers.",

@@ -5,0 +5,0 @@ "main": "build/react-number-textfield.js",

Sorry, the diff of this file is not supported yet

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