1 | {"version":3,"file":"index.js","sources":["../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/classnames/index.js","../src/lib/components/Autocomplete/useAutocomplete.js","../node_modules/lodash.omit/index.js","../src/lib/components/InfoMsg/InfoMsg.js","../node_modules/style-inject/dist/style-inject.es.js","../src/lib/components/useLabel/useLabel.js","../src/lib/components/Autocomplete/Autocomplete.js","../src/lib/components/Form/Form.js","../src/lib/components/Button/Button.js","../src/lib/components/Checkbox/Checkbox.js","../node_modules/react-onclickoutside/dist/react-onclickoutside.es.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/inheritsLoose.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/popper.js/dist/esm/popper.js","../node_modules/gud/index.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/fbjs/lib/warning.js","../node_modules/create-react-context/lib/implementation.js","../node_modules/create-react-context/lib/index.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/warning/warning.js","../node_modules/react-popper/lib/esm/Reference.js","../node_modules/react-popper/lib/esm/index.js","../node_modules/react-datepicker/es/index.js","../node_modules/date-fns/esm/toDate/index.js","../node_modules/date-fns/esm/isValid/index.js","../node_modules/date-fns/esm/isDate/index.js","../node_modules/date-fns/esm/index.js","../src/lib/components/DatePicker/useDatepicker.js","../src/lib/components/DatePicker/DatePicker.js","../node_modules/tslib/tslib.es6.js","../node_modules/file-selector/dist/es5/file.js","../node_modules/file-selector/dist/es5/file-selector.js","../node_modules/attr-accept/dist/index.js","../node_modules/react-dropzone/dist/es/utils/index.js","../node_modules/react-dropzone/dist/es/index.js","../src/lib/components/DropZone/DropZone.js","../src/lib/components/Radio/Radio.js","../src/lib/components/Input/Input.js","../src/lib/components/Select/Select.js","../src/lib/components/SubmitBtn/SubmitBtn.js","../src/lib/components/Textarea/Textarea.js","../src/lib/components/Toggle/Toggle.js","../node_modules/react-phonenr-input/dist/index.js","../src/lib/components/PhoneInput/PhoneInput.js"],"sourcesContent":["/** @license React v16.8.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n","/** @license React v16.8.2\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useState } from 'react'\n\nexport const useAutocomplete = (setFieldValue, setFieldTouched, name, suggestions) => {\n const [activeSuggestion, setActiveSuggestion] = useState(0)\n const [filteredSuggestions, setFilteredSuggestions] = useState(null)\n const [showSuggestions, setShowSuggestions] = useState(false)\n\n const handleChange = e => {\n const { value } = e.currentTarget\n const filteredSuggestions = suggestions.filter(\n suggestion => suggestion.toLowerCase().startsWith(value.toLowerCase()),\n )\n\n setActiveSuggestion(0)\n setFilteredSuggestions(filteredSuggestions)\n setShowSuggestions(true)\n\n setFieldValue(name, value)\n setFieldTouched(name, true)\n }\n\n const handleClick = e => {\n setActiveSuggestion(0)\n setFilteredSuggestions(null)\n setShowSuggestions(false)\n\n setFieldValue(name, e.currentTarget.innerText)\n setFieldTouched(name, true)\n }\n\n const handleKeyDown = e => {\n if (e.keyCode === 13) {\n e.preventDefault()\n if (e.currentTarget.value === '') return\n\n setShowSuggestions(false)\n\n setFieldValue(name, filteredSuggestions[activeSuggestion])\n setFieldTouched(name, true)\n } else if (e.keyCode === 38) {\n const { length } = filteredSuggestions\n\n setActiveSuggestion(activeSuggestion === 0 ? (length - 1) : activeSuggestion - 1)\n } else if (e.keyCode === 40) {\n const { length } = filteredSuggestions\n\n setActiveSuggestion(activeSuggestion === (length - 1) ? 0 : activeSuggestion + 1)\n }\n }\n\n return [\n activeSuggestion,\n filteredSuggestions,\n showSuggestions,\n handleChange,\n handleClick,\n handleKeyDown,\n ]\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return basePickBy(object, props, function(value, key) {\n return key in object;\n });\n}\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n if (object == null) {\n return {};\n }\n props = arrayMap(baseFlatten(props, 1), toKey);\n return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = omit;\n","import React from 'react'\nimport PropTapes from 'prop-types'\nimport cx from 'classnames'\n\nconst InfoMsg = ({ hintMsg, errorMsg }) => (\n <span className={cx({ hint: !!hintMsg, error: !!errorMsg })}>\n {errorMsg || hintMsg}\n </span>\n)\n\nInfoMsg.propTypes = {\n hintMsg: PropTapes.string,\n errorMsg: PropTapes.string,\n}\n\nInfoMsg.defaultProps = {\n hintMsg: null,\n errorMsg: null,\n}\n\nexport default InfoMsg\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { connect, getIn } from 'formik'\nimport omit from 'lodash.omit'\nimport InfoMsg from '../InfoMsg'\nimport './styles.scss'\n\nexport const useLabel = (component = 'input') => WrappedComponent => {\n const useLabel = props => {\n const [hideLabel, setHide] = useState(false)\n\n const handleAutoFill = e => {\n setHide(e.animationName === 'onAutoFillStart')\n }\n\n const handleFocus = () => {\n setHide(true)\n }\n\n const handleBlur = () => {\n setHide(false)\n }\n\n const {\n formik: {\n touched, errors, values,\n },\n name,\n label,\n className,\n hint,\n placeholder,\n type,\n disabled,\n required,\n style,\n format,\n } = props\n\n const error = getIn(errors, name)\n const touch = getIn(touched, name)\n const value = getIn(values, name)\n const hide = hideLabel || !!value || !!placeholder || !!(disabled && value)\n const hidden = type && type === 'hidden'\n const errorMsg = touch && error ? error : null\n const moveLabel = component === 'phoneInput' && format === 'INTERNATIONAL'\n const passableProps = omit(props, ['className', 'hint', 'label', 'style'])\n\n return (\n <div className={cx('form-element', className, { hasError: !!errorMsg })} style={style}>\n <div\n className={cx(`${component}-wrapper`, { hidden, isDisabled: disabled })}\n >\n {\n label && (\n <span className={cx('label', { hide, moveLabel })}>\n {`${label}${required ? ' *' : ''}`}\n </span>\n )\n }\n <WrappedComponent\n onAnimationStart={handleAutoFill}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...passableProps}\n />\n </div>\n {\n !!errorMsg && (<InfoMsg errorMsg={errorMsg} />)\n }\n {\n hint && (<InfoMsg hintMsg={hint} />)\n }\n </div>\n )\n }\n\n useLabel.propTypes = {\n formik: PropTypes.instanceOf(Object).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n className: PropTypes.string,\n hint: PropTypes.string,\n placeholder: PropTypes.string,\n type: PropTypes.string,\n disabled: PropTypes.bool,\n required: PropTypes.bool,\n style: PropTypes.instanceOf(Object),\n format: PropTypes.string,\n }\n\n useLabel.defaultProps = {\n label: null,\n className: null,\n hint: null,\n placeholder: null,\n type: null,\n disabled: false,\n required: false,\n style: null,\n format: 'INTERNATIONAL',\n }\n\n return connect(useLabel)\n}\n\nexport default useLabel\n","import React, { Fragment } from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { getIn } from 'formik'\nimport { useAutocomplete } from './useAutocomplete'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Autocomplete = ({\n formik: {\n values,\n setFieldValue,\n setFieldTouched,\n },\n name,\n id,\n suggestions,\n ...rest\n}) => {\n const [\n activeSuggestion,\n filteredSuggestions,\n showSuggestions,\n handleChange,\n handleClick,\n handleKeyDown,\n ] = useAutocomplete(setFieldValue, setFieldTouched, name, suggestions)\n\n return (\n <Fragment>\n <input\n {...rest}\n id={id || name}\n name={name}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n value={getIn(values, name)}\n type=\"text\"\n tabIndex=\"0\"\n />\n {\n showSuggestions && !!getIn(values, name) && (\n <ul className=\"suggestions\">\n {\n filteredSuggestions?.map((suggestion, index) => {\n const sugetionItem = (\n <li\n className={cx({ 'suggestion-active': index === activeSuggestion })}\n key={suggestion}\n onClick={handleClick}\n onKeyPress={handleClick}\n >\n {suggestion}\n </li>\n )\n\n return sugetionItem\n })\n }\n </ul>\n )\n }\n </Fragment>\n )\n}\n\nAutocomplete.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Sets the Name of the Autocomplete */\n name: PropTypes.string.isRequired,\n /** Array of suggestions to be searchred in */\n suggestions: PropTypes.instanceOf(Array).isRequired,\n /** Adds a custom class to the Input wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Input wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Sets an Id for the Input Field, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the main Label for the Input Field */\n label: PropTypes.string,\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Disables the Input Field */\n disabled: PropTypes.bool,\n /** Sets a hint text after/below the Input Field */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nAutocomplete.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n label: null,\n placeholder: null,\n hint: null,\n required: false,\n}\n\nexport default useLabel('autocomplete')(Autocomplete)\n\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { connect } from 'formik'\nimport './styles.scss'\n\nexport const Form = ({\n formik,\n children,\n className,\n themed,\n structured,\n ...rest\n}) => (\n <form\n {...rest}\n className={cx('react-formik-ui form-wrapper', { 'with-theme': themed, 'with-structure': structured }, className)}\n onSubmit={formik.handleSubmit}\n >\n {children}\n </form>\n)\n\nForm.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** @ignore */\n children: PropTypes.node.isRequired,\n /** Adds a custom class to the form */\n className: PropTypes.string,\n /** If passed, adds a minimal style that gives some structure to the Form */\n structured: PropTypes.bool,\n /** If passed, the React-Formik-UI theme will be applied to each styled Form element */\n themed: PropTypes.bool,\n}\n\nForm.defaultProps = {\n className: null,\n structured: false,\n themed: false,\n}\n\nexport default connect(Form)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\n\nconst Button = ({\n children,\n className,\n disabled,\n onClick,\n type,\n ...rest\n}) => (\n <button\n {...rest}\n className={cx('form-element btn', className, { isDisabled: disabled })}\n onClick={onClick}\n type={type}\n disabled={disabled}\n >\n {children}\n </button>\n)\n\nButton.propTypes = {\n /** Renders the children passed to the button */\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.node,\n ]),\n /** Adds a custom class to the button */\n className: PropTypes.string,\n /** Disables the button */\n disabled: PropTypes.bool,\n /** Sets the onClick handler for the button */\n onClick: PropTypes.func.isRequired,\n /** Sets the type for the button, for a button type \"submit\" please use the SubmitBtn component */\n type: PropTypes.oneOf(['button', 'reset']),\n}\n\nButton.defaultProps = {\n children: null,\n className: null,\n disabled: false,\n type: 'button',\n}\n\nexport default Button\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getIn } from 'formik'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Checkbox = ({\n formik: {\n values, handleChange, handleBlur,\n },\n disabled,\n id,\n name,\n text,\n ...rest\n}) => (\n <div className=\"checkbox-input-wrapper\">\n <input\n {...rest}\n id={id || name}\n name={name}\n checked={getIn(values, name)}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n type=\"checkbox\"\n />\n <label\n htmlFor={name}\n className=\"checkbox-text\"\n >\n {text}\n </label>\n </div>\n)\n\nCheckbox.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Sets the Name of the Checkbox */\n name: PropTypes.string.isRequired,\n /** Sets an Id for the Checkbox, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Adds a custom class to the Checkbox wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Checkbox wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Sets the main Label for the Checkbox */\n label: PropTypes.string,\n /** Sets a hint text after/below the Checkbox */\n hint: PropTypes.string,\n /** Sets the text shown beside the checkbox */\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n /** Sets the Checkbox as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n /** Disables the Checkbox */\n disabled: PropTypes.bool,\n}\n\nCheckbox.defaultProps = {\n id: null,\n className: null,\n style: null,\n label: null,\n hint: null,\n text: null,\n required: false,\n disabled: false,\n}\n\nexport default useLabel('checkbox')(Checkbox)\n","import { Component, createElement } from 'react';\nimport { findDOMNode } from 'react-dom';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n/**\n * Check whether some DOM node is our Component's node.\n */\nfunction isNodeFound(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // SVG <use/> elements do not technically reside in the rendered DOM, so\n // they do not have classList directly, but they offer a link to their\n // corresponding element, which can have classList. This extra check is for\n // that case.\n // See: http://www.w3.org/TR/SVG11/struct.html#InterfaceSVGUseElement\n // Discussion: https://github.com/Pomax/react-onclickoutside/pull/17\n\n\n if (current.correspondingElement) {\n return current.correspondingElement.classList.contains(ignoreClass);\n }\n\n return current.classList.contains(ignoreClass);\n}\n/**\n * Try to find our node in a hierarchy of nodes, returning the document\n * node as highest node if our node is not found in the path up.\n */\n\nfunction findHighest(current, componentNode, ignoreClass) {\n if (current === componentNode) {\n return true;\n } // If source=local then this event came from 'somewhere'\n // inside and should be ignored. We could handle this with\n // a layered approach, too, but that requires going back to\n // thinking in terms of Dom node nesting, running counter\n // to React's 'you shouldn't care about the DOM' philosophy.\n\n\n while (current.parentNode) {\n if (isNodeFound(current, componentNode, ignoreClass)) {\n return true;\n }\n\n current = current.parentNode;\n }\n\n return current;\n}\n/**\n * Check if the browser scrollbar was clicked\n */\n\nfunction clickedScrollbar(evt) {\n return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;\n}\n\n// ideally will get replaced with external dep\n// when rafrex/detect-passive-events#4 and rafrex/detect-passive-events#5 get merged in\nvar testPassiveEventSupport = function testPassiveEventSupport() {\n if (typeof window === 'undefined' || typeof window.addEventListener !== 'function') {\n return;\n }\n\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n\n var noop = function noop() {};\n\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n return passive;\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\nvar passiveEventSupport;\nvar handlersMap = {};\nvar enabledInstances = {};\nvar touchEvents = ['touchstart', 'touchmove'];\nvar IGNORE_CLASS_NAME = 'ignore-react-onclickoutside';\n/**\n * Options for addEventHandler and removeEventHandler\n */\n\nfunction getEventHandlerOptions(instance, eventName) {\n var handlerOptions = null;\n var isTouchEvent = touchEvents.indexOf(eventName) !== -1;\n\n if (isTouchEvent && passiveEventSupport) {\n handlerOptions = {\n passive: !instance.props.preventDefault\n };\n }\n\n return handlerOptions;\n}\n/**\n * This function generates the HOC function that you'll use\n * in order to impart onOutsideClick listening to an\n * arbitrary component. It gets called at the end of the\n * bootstrapping code to yield an instance of the\n * onClickOutsideHOC function defined inside setupHOC().\n */\n\n\nfunction onClickOutsideHOC(WrappedComponent, config) {\n var _class, _temp;\n\n return _temp = _class =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(onClickOutside, _Component);\n\n function onClickOutside(props) {\n var _this;\n\n _this = _Component.call(this, props) || this;\n\n _this.__outsideClickHandler = function (event) {\n if (typeof _this.__clickOutsideHandlerProp === 'function') {\n _this.__clickOutsideHandlerProp(event);\n\n return;\n }\n\n var instance = _this.getInstance();\n\n if (typeof instance.props.handleClickOutside === 'function') {\n instance.props.handleClickOutside(event);\n return;\n }\n\n if (typeof instance.handleClickOutside === 'function') {\n instance.handleClickOutside(event);\n return;\n }\n\n throw new Error('WrappedComponent lacks a handleClickOutside(event) function for processing outside click events.');\n };\n\n _this.enableOnClickOutside = function () {\n if (typeof document === 'undefined' || enabledInstances[_this._uid]) {\n return;\n }\n\n if (typeof passiveEventSupport === 'undefined') {\n passiveEventSupport = testPassiveEventSupport();\n }\n\n enabledInstances[_this._uid] = true;\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n handlersMap[_this._uid] = function (event) {\n if (_this.props.disableOnClickOutside) return;\n if (_this.componentNode === null) return;\n\n if (_this.props.preventDefault) {\n event.preventDefault();\n }\n\n if (_this.props.stopPropagation) {\n event.stopPropagation();\n }\n\n if (_this.props.excludeScrollbar && clickedScrollbar(event)) return;\n var current = event.target;\n\n if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {\n return;\n }\n\n _this.__outsideClickHandler(event);\n };\n\n events.forEach(function (eventName) {\n document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_this, eventName));\n });\n };\n\n _this.disableOnClickOutside = function () {\n delete enabledInstances[_this._uid];\n var fn = handlersMap[_this._uid];\n\n if (fn && typeof document !== 'undefined') {\n var events = _this.props.eventTypes;\n\n if (!events.forEach) {\n events = [events];\n }\n\n events.forEach(function (eventName) {\n return document.removeEventListener(eventName, fn, getEventHandlerOptions(_this, eventName));\n });\n delete handlersMap[_this._uid];\n }\n };\n\n _this.getRef = function (ref) {\n return _this.instanceRef = ref;\n };\n\n _this._uid = uid();\n return _this;\n }\n /**\n * Access the WrappedComponent's instance.\n */\n\n\n var _proto = onClickOutside.prototype;\n\n _proto.getInstance = function getInstance() {\n if (!WrappedComponent.prototype.isReactComponent) {\n return this;\n }\n\n var ref = this.instanceRef;\n return ref.getInstance ? ref.getInstance() : ref;\n };\n\n /**\n * Add click listeners to the current document,\n * linked to this component's state.\n */\n _proto.componentDidMount = function componentDidMount() {\n // If we are in an environment without a DOM such\n // as shallow rendering or snapshots then we exit\n // early to prevent any unhandled errors being thrown.\n if (typeof document === 'undefined' || !document.createElement) {\n return;\n }\n\n var instance = this.getInstance();\n\n if (config && typeof config.handleClickOutside === 'function') {\n this.__clickOutsideHandlerProp = config.handleClickOutside(instance);\n\n if (typeof this.__clickOutsideHandlerProp !== 'function') {\n throw new Error('WrappedComponent lacks a function for processing outside click events specified by the handleClickOutside config option.');\n }\n }\n\n this.componentNode = findDOMNode(this.getInstance());\n this.enableOnClickOutside();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.componentNode = findDOMNode(this.getInstance());\n };\n /**\n * Remove all document's event listeners for this component\n */\n\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.disableOnClickOutside();\n };\n /**\n * Can be called to explicitly enable event listening\n * for clicks and touches outside of this element.\n */\n\n\n /**\n * Pass-through render\n */\n _proto.render = function render() {\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n excludeScrollbar = _props.excludeScrollbar,\n props = _objectWithoutProperties(_props, [\"excludeScrollbar\"]);\n\n if (WrappedComponent.prototype.isReactComponent) {\n props.ref = this.getRef;\n } else {\n props.wrappedRef = this.getRef;\n }\n\n props.disableOnClickOutside = this.disableOnClickOutside;\n props.enableOnClickOutside = this.enableOnClickOutside;\n return createElement(WrappedComponent, props);\n };\n\n return onClickOutside;\n }(Component), _class.displayName = \"OnClickOutside(\" + (WrappedComponent.displayName || WrappedComponent.name || 'Component') + \")\", _class.defaultProps = {\n eventTypes: ['mousedown', 'touchstart'],\n excludeScrollbar: config && config.excludeScrollbar || false,\n outsideClickIgnoreClass: IGNORE_CLASS_NAME,\n preventDefault: false,\n stopPropagation: false\n }, _class.getClass = function () {\n return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;\n }, _temp;\n}\n\nexport { IGNORE_CLASS_NAME };\nexport default onClickOutsideHOC;\n","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nfunction microtaskDebounce(fn) {\n var called = false;\n return function () {\n if (called) {\n return;\n }\n called = true;\n window.Promise.resolve().then(function () {\n called = false;\n fn();\n });\n };\n}\n\nfunction taskDebounce(fn) {\n var scheduled = false;\n return function () {\n if (!scheduled) {\n scheduled = true;\n setTimeout(function () {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n var getType = {};\n return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n var window = element.ownerDocument.defaultView;\n var css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body;\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body;\n case '#document':\n return element.body;\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n\n var _getStyleComputedProp = getStyleComputedProperty(element),\n overflow = _getStyleComputedProp.overflow,\n overflowX = _getStyleComputedProp.overflowX,\n overflowY = _getStyleComputedProp.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n var noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n var offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n var nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY') {\n return false;\n }\n return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n var start = order ? element1 : element2;\n var end = order ? element2 : element1;\n\n // Get common ancestor container\n var range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n var commonAncestorContainer = range.commonAncestorContainer;\n\n // Both nodes are inside #document\n\n if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n var element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n var nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n var html = element.ownerDocument.documentElement;\n var scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n var modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n var sideA = axis === 'x' ? 'Left' : 'Top';\n var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n var body = document.body;\n var html = document.documentElement;\n var computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle)\n };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n return _extends({}, offsets, {\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height\n });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n var rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n var scrollTop = getScroll(element, 'top');\n var scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } else {\n rect = element.getBoundingClientRect();\n }\n } catch (e) {}\n\n var result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n\n // subtract scrollbar size from sizes\n var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n var width = sizes.width || element.clientWidth || result.right - result.left;\n var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n var horizScrollbar = element.offsetWidth - width;\n var vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n var styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var isIE10 = isIE(10);\n var isHTML = parent.nodeName === 'HTML';\n var childrenRect = getBoundingClientRect(children);\n var parentRect = getBoundingClientRect(parent);\n var scrollParent = getScrollParent(children);\n\n var styles = getStyleComputedProperty(parent);\n var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if (fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n var offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n var marginTop = parseFloat(styles.marginTop, 10);\n var marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var html = element.ownerDocument.documentElement;\n var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n var width = Math.max(html.clientWidth, window.innerWidth || 0);\n var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n var scrollTop = !excludeScroll ? getScroll(html) : 0;\n var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n var offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width: width,\n height: height\n };\n\n return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n var nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n var parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n var el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n // NOTE: 1 DOM access here\n\n var boundaries = { top: 0, left: 0 };\n var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n } else {\n // Handle other cases based on DOM element used as boundaries\n var boundariesNode = void 0;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n height = _getWindowSizes.height,\n width = _getWindowSizes.width;\n\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n var isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n return boundaries;\n}\n\nfunction getArea(_ref) {\n var width = _ref.width,\n height = _ref.height;\n\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n var rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height\n }\n };\n\n var sortedAreas = Object.keys(rects).map(function (key) {\n return _extends({\n key: key\n }, rects[key], {\n area: getArea(rects[key])\n });\n }).sort(function (a, b) {\n return b.area - a.area;\n });\n\n var filteredAreas = sortedAreas.filter(function (_ref2) {\n var width = _ref2.width,\n height = _ref2.height;\n return width >= popper.clientWidth && height >= popper.clientHeight;\n });\n\n var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n var variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n var window = element.ownerDocument.defaultView;\n var styles = window.getComputedStyle(element);\n var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n var result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x\n };\n return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n var popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n var popperOffsets = {\n width: popperRect.width,\n height: popperRect.height\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n var mainSide = isHoriz ? 'top' : 'left';\n var secondarySide = isHoriz ? 'left' : 'top';\n var measurement = isHoriz ? 'height' : 'width';\n var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(function (cur) {\n return cur[prop] === value;\n });\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n var match = find(arr, function (obj) {\n return obj[prop] === value;\n });\n return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(function (modifier) {\n if (modifier['function']) {\n // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n var data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {}\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(function (_ref) {\n var name = _ref.name,\n enabled = _ref.enabled;\n return enabled && name === modifierName;\n });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (var i = 0; i < prefixes.length; i++) {\n var prefix = prefixes[i];\n var toCheck = prefix ? '' + prefix + upperProp : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n var ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n var isBody = scrollParent.nodeName === 'BODY';\n var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n var scrollElement = getScrollParent(reference);\n attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(function (target) {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n Object.keys(styles).forEach(function (prop) {\n var unit = '';\n // add unit if the value is numeric and is one of the following\n if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function (prop) {\n var value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n // compute reference element offsets\n var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n var round = Math.round,\n floor = Math.floor;\n\n var noRound = function noRound(v) {\n return v;\n };\n\n var referenceWidth = round(reference.width);\n var popperWidth = round(popper.width);\n\n var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n var isVariation = data.placement.indexOf('-') !== -1;\n var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n var verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right)\n };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n var x = options.x,\n y = options.y;\n var popper = data.offsets.popper;\n\n // Remove this legacy support in Popper.js v2\n\n var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'applyStyle';\n }).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n }\n var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n var offsetParent = getOffsetParent(data.instance.popper);\n var offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n var styles = {\n position: popper.position\n };\n\n var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n var sideA = x === 'bottom' ? 'top' : 'bottom';\n var sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n var prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n var left = void 0,\n top = void 0;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n var invertTop = sideA === 'bottom' ? -1 : 1;\n var invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = sideA + ', ' + sideB;\n }\n\n // Attributes\n var attributes = {\n 'x-placement': data.placement\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = _extends({}, attributes, data.attributes);\n data.styles = _extends({}, styles, data.styles);\n data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n var requesting = find(modifiers, function (_ref) {\n var name = _ref.name;\n return name === requestingName;\n });\n\n var isRequired = !!requesting && modifiers.some(function (modifier) {\n return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n });\n\n if (!isRequired) {\n var _requesting = '`' + requestingName + '`';\n var requested = '`' + requestedName + '`';\n console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n }\n return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n var _data$offsets$arrow;\n\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n var arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn('WARNING: `arrow.element` must be child of its popper element!');\n return data;\n }\n }\n\n var placement = data.placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n var len = isVertical ? 'height' : 'width';\n var sideCapitalized = isVertical ? 'Top' : 'Left';\n var side = sideCapitalized.toLowerCase();\n var altSide = isVertical ? 'left' : 'top';\n var opSide = isVertical ? 'bottom' : 'right';\n var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n var css = getStyleComputedProperty(data.instance.popper);\n var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var index = validPlacements.indexOf(placement);\n var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n var placement = data.placement.split('-')[0];\n var placementOpposite = getOppositePlacement(placement);\n var variation = data.placement.split('-')[1] || '';\n\n var flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach(function (step, index) {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n var popperOffsets = data.offsets.popper;\n var refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n var floor = Math.floor;\n var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n // flip the variation if required\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var placement = data.placement.split('-')[0];\n var floor = Math.floor;\n var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n var side = isVertical ? 'right' : 'bottom';\n var opSide = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n var value = +split[1];\n var unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n var element = void 0;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n var rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n var size = void 0;\n if (unit === 'vh') {\n size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n } else {\n size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n var offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n return frag.trim();\n });\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n var divider = fragments.indexOf(find(fragments, function (frag) {\n return frag.search(/,|\\s/) !== -1;\n }));\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n var splitRegex = /\\s*,\\s*|\\s+/;\n var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map(function (op, index) {\n // Most of the units rely on the orientation of the popper\n var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n var mergeWithPrevious = false;\n return op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce(function (a, b) {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(function (str) {\n return toValue(str, measurement, popperOffsets, referenceOffsets);\n });\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach(function (op, index) {\n op.forEach(function (frag, index2) {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n var offset = _ref.offset;\n var placement = data.placement,\n _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var basePlacement = placement.split('-')[0];\n\n var offsets = void 0;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n var transformProp = getSupportedPropertyName('transform');\n var popperStyles = data.instance.popper.style; // assignment to help minification\n var top = popperStyles.top,\n left = popperStyles.left,\n transform = popperStyles[transformProp];\n\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n var order = options.priority;\n var popper = data.offsets.popper;\n\n var check = {\n primary: function primary(placement) {\n var value = popper[placement];\n if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return defineProperty({}, placement, value);\n },\n secondary: function secondary(placement) {\n var mainSide = placement === 'right' ? 'left' : 'top';\n var value = popper[mainSide];\n if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n }\n return defineProperty({}, mainSide, value);\n }\n };\n\n order.forEach(function (placement) {\n var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = _extends({}, popper, check[side](placement));\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n var _data$offsets = data.offsets,\n reference = _data$offsets.reference,\n popper = _data$offsets.popper;\n\n var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n var side = isVertical ? 'left' : 'top';\n var measurement = isVertical ? 'width' : 'height';\n\n var shiftOffsets = {\n start: defineProperty({}, side, reference[side]),\n end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n };\n\n data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n var refRect = data.offsets.reference;\n var bound = find(data.instance.modifiers, function (modifier) {\n return modifier.name === 'preventOverflow';\n }).boundaries;\n\n if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n var placement = data.placement;\n var basePlacement = placement.split('-')[0];\n var _data$offsets = data.offsets,\n popper = _data$offsets.popper,\n reference = _data$offsets.reference;\n\n var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent'\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]'\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport'\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right'\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined\n }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: function onCreate() {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: function onUpdate() {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n function Popper(reference, popper) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Popper);\n\n this.scheduleUpdate = function () {\n return requestAnimationFrame(_this.update);\n };\n\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = _extends({}, Popper.Defaults, options);\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: []\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n return _extends({\n name: name\n }, _this.options.modifiers[name]);\n })\n // sort the modifiers by order\n .sort(function (a, b) {\n return a.order - b.order;\n });\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(function (modifierOptions) {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n var eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n\n\n createClass(Popper, [{\n key: 'update',\n value: function update$$1() {\n return update.call(this);\n }\n }, {\n key: 'destroy',\n value: function destroy$$1() {\n return destroy.call(this);\n }\n }, {\n key: 'enableEventListeners',\n value: function enableEventListeners$$1() {\n return enableEventListeners.call(this);\n }\n }, {\n key: 'disableEventListeners',\n value: function disableEventListeners$$1() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n\n }]);\n return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('fbjs/lib/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from 'create-react-context';\nexport var ManagerContext = createContext({\n setReferenceNode: undefined,\n referenceNode: undefined\n});\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (referenceNode) {\n if (!referenceNode || _this.state.context.referenceNode === referenceNode) {\n return;\n }\n\n _this.setState(function (_ref) {\n var context = _ref.context;\n return {\n context: _extends({}, context, {\n referenceNode: referenceNode\n })\n };\n });\n });\n\n _this.state = {\n context: {\n setReferenceNode: _this.setReferenceNode,\n referenceNode: undefined\n }\n };\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.render = function render() {\n return React.createElement(ManagerContext.Provider, {\n value: this.state.context\n }, this.props.children);\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerContext } from './Manager';\nimport { safeInvoke, unwrapArray } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n safeInvoke(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed) {\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n safeInvoke(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerContext.Consumer, null, function (_ref2) {\n var referenceNode = _ref2.referenceNode;\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerContext } from './Manager';\nimport { safeInvoke, unwrapArray } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n safeInvoke(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerContext.Consumer, null, function (_ref) {\n var setReferenceNode = _ref.setReferenceNode;\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","// Public components\nimport Popper, { placements } from './Popper';\nimport Manager from './Manager';\nimport Reference from './Reference';\nexport { Popper, placements, Manager, Reference }; // Public types","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport onClickOutside from 'react-onclickoutside';\nimport { Manager, Popper, Reference, placements } from 'react-popper';\n\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @param {Options} [options] - the object with options. Unused; present for FP submodule compatibility sake. See [Options]{@link https://date-fns.org/docs/Options}\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nfunction isDate (value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n\nfunction toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE$1;\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE$1 + millisecondsPartOfTimezoneOffset\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate$1(restDateString, year);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate$1 (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n\n if (!validateTimezone(hours)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid$1 (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nfunction buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format\n }\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\nfunction buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var context = options.context ? String(options.context) : 'standalone';\n\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index]\n }\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n\n var value;\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate();\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (hours === 0) {\n hours = 12;\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (hours === 0) {\n hours = 24;\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes();\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds();\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length)\n }\n};\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || '';\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong, options)\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'});\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'});\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'});\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'});\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong, options))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong, options))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\n\nfunction isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nfunction throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale$$1 = options.locale || locale;\n\n var localeFirstWeekContainsDate =\n locale$$1.options && locale$$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale$$1.options && locale$$1.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale$$1.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale$$1.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid$1(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$$1,\n _originalDate: originalDate\n };\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale$$1.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring);\n }\n return formatter(utcDate, substring, locale$$1.localize, formatterOptions)\n }\n\n return substring\n })\n .join('');\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\n\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * var result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nfunction addMinutes (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE$2, dirtyOptions)\n}\n\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * var result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nfunction addHours (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR$1, dirtyOptions)\n}\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * var result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nfunction addDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var amount = toInteger(dirtyAmount);\n date.setDate(date.getDate() + amount);\n return date\n}\n\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * var result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nfunction addWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days, dirtyOptions)\n}\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many days are in February 2000?\n * var result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nfunction getDaysInMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate()\n}\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * var result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\nfunction addMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var amount = toInteger(dirtyAmount);\n var desiredMonth = date.getMonth() + amount;\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(date.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(desiredMonth, Math.min(daysInMonth, date.getDate()));\n return date\n}\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * var result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nfunction addYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, amount * 12, dirtyOptions)\n}\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * var result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nfunction subDays (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * var result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nfunction subWeeks (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * var result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction subMonths (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of years to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the years subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * var result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nfunction subYears (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addYears(dirtyDate, -amount, dirtyOptions)\n}\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the seconds\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * var result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nfunction getSeconds (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var seconds = date.getSeconds();\n return seconds\n}\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * var result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nfunction getMinutes (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var minutes = date.getMinutes();\n return minutes\n}\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * var result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nfunction getHours (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var hours = date.getHours();\n return hours\n}\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * var result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nfunction getDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getDay();\n return day\n}\n\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * var result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\nfunction getDate (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dayOfMonth = date.getDate();\n return dayOfMonth\n}\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which month is 29 February 2012?\n * var result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nfunction getMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var month = date.getMonth();\n return month\n}\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which year is 2 July 2014?\n * var result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nfunction getYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getFullYear();\n return year\n}\n\n/**\n * @name getTime\n * @category Timestamp Helpers\n * @summary Get the milliseconds timestamp of the given date.\n *\n * @description\n * Get the milliseconds timestamp of the given date.\n *\n * @param {Date|String|Number} date - the given date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the timestamp\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Get the timestamp of 29 February 2012 11:45:05.123:\n * var result = getTime(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 1330515905123\n */\nfunction getTime (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n return timestamp\n}\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the seconds setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * var result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nfunction setSeconds (dirtyDate, dirtySeconds, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date\n}\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the minutes setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * var result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nfunction setMinutes (dirtyDate, dirtyMinutes, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date\n}\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the hours setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nfunction setHours (dirtyDate, dirtyHours, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date\n}\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the month setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set February to 1 September 2014:\n * var result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nfunction setMonth (dirtyDate, dirtyMonth, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth, dirtyOptions);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n date.setMonth(month, Math.min(day, daysInMonth));\n return date\n}\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * var result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nfunction setYear (dirtyDate, dirtyYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = toInteger(dirtyYear);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n date.setFullYear(year);\n return date\n}\n\n/**\n * @name min\n * @category Common Helpers\n * @summary Return the earliest of the given dates.\n *\n * @description\n * Return the earliest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the earliest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the earliest?\n * var result = min(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Wed Feb 11 1987 00:00:00\n */\nfunction min (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions);\n\n if (result === undefined || result > currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n\n return result\n}\n\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|String[]|Number[]} datesArray - the dates to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Which of these dates is the latest?\n * var result = max(\n * [\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ]\n * )\n * //=> Sun Jul 02 1995 00:00:00\n */\nfunction max (dirtyDatesArray, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var datesArray;\n // `dirtyDatesArray` is undefined or null\n if (dirtyDatesArray == null) {\n datesArray = [];\n\n // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n } else if (typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray;\n\n // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n } else {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate, dirtyOptions);\n\n if (result === undefined || result < currentDate || isNaN(currentDate)) {\n result = currentDate;\n }\n });\n\n return result\n}\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nfunction startOfDay (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n date.setHours(0, 0, 0, 0);\n return date\n}\n\nvar MILLISECONDS_IN_DAY$1 = 86400000;\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * var result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * var result = differenceInCalendarDays(\n * new Date(2011, 6, 2, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nfunction differenceInCalendarDays (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfDayLeft = startOfDay(dirtyDateLeft, dirtyOptions);\n var startOfDayRight = startOfDay(dirtyDateRight, dirtyOptions);\n\n var timestampLeft = startOfDayLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfDayRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY$1)\n}\n\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nfunction differenceInCalendarMonths (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions);\n var dateRight = toDate(dirtyDateRight, dirtyOptions);\n\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n\n return yearDiff * 12 + monthDiff\n}\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * var result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$2 = 604800000;\n\n/**\n * @name differenceInCalendarWeeks\n * @category Week Helpers\n * @summary Get the number of calendar weeks between the given dates.\n *\n * @description\n * Get the number of calendar weeks between the given dates.\n *\n * @param {Date|String|Number} dateLeft - the later date\n * @param {Date|String|Number} dateRight - the earlier date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Number} the number of calendar weeks\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // How many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5)\n * )\n * //=> 3\n *\n * @example\n * // If the week starts on Monday,\n * // how many calendar weeks are between 5 July 2014 and 20 July 2014?\n * var result = differenceInCalendarWeeks(\n * new Date(2014, 6, 20),\n * new Date(2014, 6, 5),\n * {weekStartsOn: 1}\n * )\n * //=> 2\n */\nfunction differenceInCalendarWeeks (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var startOfWeekLeft = startOfWeek(dirtyDateLeft, dirtyOptions);\n var startOfWeekRight = startOfWeek(dirtyDateRight, dirtyOptions);\n\n var timestampLeft = startOfWeekLeft.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekLeft);\n var timestampRight = startOfWeekRight.getTime() -\n getTimezoneOffsetInMilliseconds(startOfWeekRight);\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_WEEK$2)\n}\n\n/**\n * @name setDayOfYear\n * @category Day Helpers\n * @summary Set the day of the year to the given date.\n *\n * @description\n * Set the day of the year to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} dayOfYear - the day of the year of the new date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the day of the year setted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Set the 2nd day of the year to 2 July 2014:\n * var result = setDayOfYear(new Date(2014, 6, 2), 2)\n * //=> Thu Jan 02 2014 00:00:00\n */\nfunction setDayOfYear (dirtyDate, dirtyDayOfYear, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dayOfYear = toInteger(dirtyDayOfYear);\n date.setMonth(0);\n date.setDate(dayOfYear);\n return date\n}\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * var result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nfunction startOfMonth (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date\n}\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the start of a year\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * var result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nfunction startOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var cleanDate = toDate(dirtyDate, dirtyOptions);\n var date = new Date(0);\n date.setFullYear(cleanDate.getFullYear(), 0, 1);\n date.setHours(0, 0, 0, 0);\n return date\n}\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|String|Number} date - the original date\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * var result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), {weekStartsOn: 1})\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nfunction endOfWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day?\n *\n * @description\n * Are the given dates in the same day?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same day\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * var result = isSameDay(\n * new Date(2014, 8, 4, 6, 0),\n * new Date(2014, 8, 4, 18, 0)\n * )\n * //=> true\n */\nfunction isSameDay$1 (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft, dirtyOptions);\n var dateRightStartOfDay = startOfDay(dirtyDateRight, dirtyOptions);\n\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n}\n\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month?\n *\n * @description\n * Are the given dates in the same month?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same month\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * var result = isSameMonth(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameMonth$1 (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions);\n var dateRight = toDate(dirtyDateRight, dirtyOptions);\n return dateLeft.getFullYear() === dateRight.getFullYear() &&\n dateLeft.getMonth() === dateRight.getMonth()\n}\n\n/**\n * @name isSameYear\n * @category Year Helpers\n * @summary Are the given dates in the same year?\n *\n * @description\n * Are the given dates in the same year?\n *\n * @param {Date|String|Number} dateLeft - the first date to check\n * @param {Date|String|Number} dateRight - the second date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are in the same year\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same year?\n * var result = isSameYear(\n * new Date(2014, 8, 2),\n * new Date(2014, 8, 25)\n * )\n * //=> true\n */\nfunction isSameYear$1 (dirtyDateLeft, dirtyDateRight, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyDateLeft, dirtyOptions);\n var dateRight = toDate(dirtyDateRight, dirtyOptions);\n return dateLeft.getFullYear() === dateRight.getFullYear()\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isWithinInterval\n * @category Interval Helpers\n * @summary Is the given date within the interval?\n *\n * @description\n * Is the given date within the interval?\n *\n * @param {Date|String|Number} date - the date to check\n * @param {Interval} interval - the interval to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is within the interval\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} The start of an interval cannot be after its end\n * @throws {RangeError} Date in interval cannot be `Invalid Date`\n *\n * @example\n * // For the date within the interval:\n * isWithinInterval(\n * new Date(2014, 0, 3),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> true\n *\n * @example\n * // For the date outside of the interval:\n * isWithinInterval(\n * new Date(2014, 0, 10),\n * {start: new Date(2014, 0, 1), end: new Date(2014, 0, 7)}\n * )\n * //=> false\n */\nfunction isWithinInterval (dirtyDate, dirtyInterval, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var interval = dirtyInterval || {};\n var time = toDate(dirtyDate, dirtyOptions).getTime();\n var startTime = toDate(interval.start, dirtyOptions).getTime();\n var endTime = toDate(interval.end, dirtyOptions).getTime();\n\n // Throw an exception if start date is after end date or if any date is `Invalid Date`\n if (!(startTime <= endTime)) {\n throw new RangeError('Invalid interval')\n }\n\n return time >= startTime && time <= endTime\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = toInteger(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, dirtyOptions) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_HOUR$2 = 3600000;\nvar MILLISECONDS_IN_MINUTE$3 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10);\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR$2 +\n minutes * MILLISECONDS_IN_MINUTE$3 +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1 (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$1[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0);\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0);\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0);\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n };\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value);\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\n\nvar notWhitespaceRegExp = /\\S/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n\n var locale$$1 = options.locale || locale;\n\n if (!locale$$1.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale$$1.options && locale$$1.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale$$1.options && locale$$1.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale$$1\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ];\n\n var i;\n\n var tokens = formatString.match(formattingTokensRegExp$1);\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale$$1.match,\n subFnOptions\n );\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n\n dateString = parseResult.rest;\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions);\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0);\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n );\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n return convertedDate\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\")\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n// ** Date Constructors **\n\nfunction newDate(value) {\n var d = value ? toDate(value) : new Date();\n return isValid$$1(d) ? d : null;\n}\n\nfunction parseDate(value, dateFormat, locale) {\n var parsedDate = null;\n var localeObject = getLocaleObject(locale);\n if (Array.isArray(dateFormat)) {\n dateFormat.forEach(function (df) {\n var tryParseDate = parse(value, df, new Date(), localeObject);\n if (isValid$$1(tryParseDate)) {\n parsedDate = tryParseDate;\n }\n });\n return parsedDate;\n }\n parsedDate = parse(value, dateFormat, new Date(), localeObject);\n if (!isValid$$1(parsedDate)) {\n parsedDate = new Date(value);\n }\n return isValid$$1(parsedDate) ? parsedDate : null;\n}\n\nfunction isValid$$1(date) {\n return isValid$1(date) && isAfter(date, new Date(\"1/1/1000\"));\n}\n\n// ** Date Formatting **\n\nfunction formatDate(date, formatStr, locale) {\n if (locale === \"en\") {\n return format(date, formatStr, { awareOfUnicodeTokens: true });\n }\n var localeObj = getLocaleObject(locale);\n if (locale && !localeObj) {\n console.warn(\"A locale object was not found for the provided string [\\\"\" + locale + \"\\\"].\");\n }\n if (!localeObj && !!getDefaultLocale() && !!getLocaleObject(getDefaultLocale())) {\n localeObj = getLocaleObject(getDefaultLocale());\n }\n return format(date, formatStr, {\n locale: localeObj ? localeObj : null,\n awareOfUnicodeTokens: true\n });\n}\n\nfunction safeDateFormat(date, _ref) {\n var dateFormat = _ref.dateFormat,\n locale = _ref.locale;\n\n return date && formatDate(date, Array.isArray(dateFormat) ? dateFormat[0] : dateFormat, locale) || \"\";\n}\n\n// ** Date Setters **\n\nfunction setTime(date, _ref2) {\n var _ref2$hour = _ref2.hour,\n hour = _ref2$hour === undefined ? 0 : _ref2$hour,\n _ref2$minute = _ref2.minute,\n minute = _ref2$minute === undefined ? 0 : _ref2$minute,\n _ref2$second = _ref2.second,\n second = _ref2$second === undefined ? 0 : _ref2$second;\n\n return setHours(setMinutes(setSeconds(date, second), minute), hour);\n}\n\nfunction getWeek(date) {\n var firstDayOfYear = setDayOfYear(date, 1);\n if (!isSameYear(endOfWeek(date), date)) {\n return 1;\n }\n return differenceInCalendarWeeks(date, startOfYear(date)) + 1;\n}\n\nfunction getDayOfWeekCode(day, locale) {\n return formatDate(day, \"ddd\", locale);\n}\n\n// *** Start of ***\n\nfunction getStartOfDay(date) {\n return startOfDay(date);\n}\n\nfunction getStartOfWeek(date, locale) {\n var localeObj = locale ? getLocaleObject(locale) : getLocaleObject(getDefaultLocale());\n return startOfWeek(date, { locale: localeObj });\n}\n\nfunction getStartOfMonth(date) {\n return startOfMonth(date);\n}\n\nfunction getStartOfToday() {\n return startOfDay(newDate());\n}\n\n// *** End of ***\n\n\n\n\n\nfunction isSameYear(date1, date2) {\n if (date1 && date2) {\n return isSameYear$1(date1, date2);\n } else {\n return !date1 && !date2;\n }\n}\n\nfunction isSameMonth(date1, date2) {\n if (date1 && date2) {\n return isSameMonth$1(date1, date2);\n } else {\n return !date1 && !date2;\n }\n}\n\nfunction isSameDay(date1, date2) {\n if (date1 && date2) {\n return isSameDay$1(date1, date2);\n } else {\n return !date1 && !date2;\n }\n}\n\nfunction isDayInRange(day, startDate, endDate) {\n var valid = void 0;\n try {\n valid = isWithinInterval(day, { start: startDate, end: endDate });\n } catch (err) {\n valid = false;\n }\n return valid;\n}\n\n// *** Diffing ***\n\n\n\n// ** Date Localization **\n\nfunction registerLocale(localeName, localeData) {\n if (!window.__localeData__) {\n window.__localeData__ = {};\n }\n window.__localeData__[localeName] = localeData;\n}\n\nfunction setDefaultLocale(localeName) {\n window.__localeId__ = localeName;\n}\n\nfunction getDefaultLocale() {\n return window.__localeId__;\n}\n\nfunction getLocaleObject(localeName) {\n return window.__localeData__ ? window.__localeData__[localeName] : null;\n}\n\nfunction getFormattedWeekdayInLocale(date, formatFunc, locale) {\n return formatFunc(formatDate(date, \"EEEE\", locale));\n}\n\nfunction getWeekdayMinInLocale(date, locale) {\n return formatDate(date, \"EEEEEE\", locale);\n}\n\nfunction getWeekdayShortInLocale(date, locale) {\n return formatDate(date, \"EEE\", locale);\n}\n\nfunction getMonthInLocale(month, locale) {\n return formatDate(setMonth(newDate(), month), \"LLLL\", locale);\n}\n\nfunction getMonthShortInLocale(month, dateFormat, locale) {\n return formatDate(setMonth(newDate(), month), \"LLL\", locale);\n}\n\n// ** Utils for some components **\n\nfunction isDayDisabled(day) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n minDate = _ref3.minDate,\n maxDate = _ref3.maxDate,\n excludeDates = _ref3.excludeDates,\n includeDates = _ref3.includeDates,\n filterDate = _ref3.filterDate;\n\n return isOutOfBounds(day, { minDate: minDate, maxDate: maxDate }) || excludeDates && excludeDates.some(function (excludeDate) {\n return isSameDay(day, excludeDate);\n }) || includeDates && !includeDates.some(function (includeDate) {\n return isSameDay(day, includeDate);\n }) || filterDate && !filterDate(newDate(day)) || false;\n}\n\nfunction isOutOfBounds(day) {\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n minDate = _ref4.minDate,\n maxDate = _ref4.maxDate;\n\n return minDate && differenceInCalendarDays(day, minDate) < 0 || maxDate && differenceInCalendarDays(day, maxDate) > 0;\n}\n\nfunction isTimeDisabled(time, disabledTimes) {\n var l = disabledTimes.length;\n for (var i = 0; i < l; i++) {\n if (getHours(disabledTimes[i]) === getHours(time) && getMinutes(disabledTimes[i]) === getMinutes(time)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isTimeInDisabledRange(time, _ref5) {\n var minTime = _ref5.minTime,\n maxTime = _ref5.maxTime;\n\n if (!minTime || !maxTime) {\n throw new Error(\"Both minTime and maxTime props required\");\n }\n var base = newDate();\n var baseTime = setHours(setMinutes(base, getMinutes(time)), getHours(time));\n var min$$1 = setHours(setMinutes(base, getMinutes(minTime)), getHours(minTime));\n var max$$1 = setHours(setMinutes(base, getMinutes(maxTime)), getHours(maxTime));\n\n var valid = void 0;\n try {\n valid = !isWithinInterval(baseTime, { start: min$$1, end: max$$1 });\n } catch (err) {\n valid = false;\n }\n return valid;\n}\n\nfunction monthDisabledBefore(day) {\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n minDate = _ref6.minDate,\n includeDates = _ref6.includeDates;\n\n var previousMonth = subMonths(day, 1);\n return minDate && differenceInCalendarMonths(minDate, previousMonth) > 0 || includeDates && includeDates.every(function (includeDate) {\n return differenceInCalendarMonths(includeDate, previousMonth) > 0;\n }) || false;\n}\n\nfunction monthDisabledAfter(day) {\n var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n maxDate = _ref7.maxDate,\n includeDates = _ref7.includeDates;\n\n var nextMonth = addMonths(day, 1);\n return maxDate && differenceInCalendarMonths(nextMonth, maxDate) > 0 || includeDates && includeDates.every(function (includeDate) {\n return differenceInCalendarMonths(nextMonth, includeDate) > 0;\n }) || false;\n}\n\nfunction getEffectiveMinDate(_ref8) {\n var minDate = _ref8.minDate,\n includeDates = _ref8.includeDates;\n\n if (includeDates && minDate) {\n var minDates = includeDates.filter(function (includeDate) {\n return differenceInCalendarDays(includeDate, minDate) >= 0;\n });\n return min(minDates);\n } else if (includeDates) {\n return min(includeDates);\n } else {\n return minDate;\n }\n}\n\nfunction getEffectiveMaxDate(_ref9) {\n var maxDate = _ref9.maxDate,\n includeDates = _ref9.includeDates;\n\n if (includeDates && maxDate) {\n var maxDates = includeDates.filter(function (includeDate) {\n return differenceInCalendarDays(includeDate, maxDate) <= 0;\n });\n return max(maxDates);\n } else if (includeDates) {\n return max(includeDates);\n } else {\n return maxDate;\n }\n}\n\nfunction getHightLightDaysMap() {\n var highlightDates = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var defaultClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"react-datepicker__day--highlighted\";\n\n var dateClasses = new Map();\n for (var i = 0, len = highlightDates.length; i < len; i++) {\n var obj = highlightDates[i];\n if (isDate(obj)) {\n var key = formatDate(obj, \"MM.dd.yyyy\");\n var classNamesArr = dateClasses.get(key) || [];\n if (!classNamesArr.includes(defaultClassName)) {\n classNamesArr.push(defaultClassName);\n dateClasses.set(key, classNamesArr);\n }\n } else if ((typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj)) === \"object\") {\n var keys = Object.keys(obj);\n var className = keys[0];\n var arrOfDates = obj[keys[0]];\n if (typeof className === \"string\" && arrOfDates.constructor === Array) {\n for (var k = 0, _len = arrOfDates.length; k < _len; k++) {\n var _key = formatDate(arrOfDates[k], \"MM.dd.yyyy\");\n var _classNamesArr = dateClasses.get(_key) || [];\n if (!_classNamesArr.includes(className)) {\n _classNamesArr.push(className);\n dateClasses.set(_key, _classNamesArr);\n }\n }\n }\n }\n }\n\n return dateClasses;\n}\n\nfunction timesToInjectAfter(startOfDay$$1, currentTime, currentMultiplier, intervals, injectedTimes) {\n var l = injectedTimes.length;\n var times = [];\n for (var i = 0; i < l; i++) {\n var injectedTime = addMinutes(addHours(startOfDay$$1, getHours(injectedTimes[i])), getMinutes(injectedTimes[i]));\n var nextTime = addMinutes(startOfDay$$1, (currentMultiplier + 1) * intervals);\n\n if (isAfter(injectedTime, currentTime) && isBefore(injectedTime, nextTime)) {\n times.push(injectedTimes[i]);\n }\n }\n\n return times;\n}\n\nfunction generateYears(year, noOfYear, minDate, maxDate) {\n var list = [];\n for (var i = 0; i < 2 * noOfYear + 1; i++) {\n var newYear = year + noOfYear - i;\n var isInRange = true;\n\n if (minDate) {\n isInRange = getYear(minDate) <= newYear;\n }\n\n if (maxDate && isInRange) {\n isInRange = getYear(maxDate) >= newYear;\n }\n\n if (isInRange) {\n list.push(newYear);\n }\n }\n\n return list;\n}\n\nvar YearDropdownOptions = function (_React$Component) {\n inherits(YearDropdownOptions, _React$Component);\n\n function YearDropdownOptions(props) {\n classCallCheck(this, YearDropdownOptions);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.renderOptions = function () {\n var selectedYear = _this.props.year;\n var options = _this.state.yearsList.map(function (year) {\n return React.createElement(\n \"div\",\n {\n className: selectedYear === year ? \"react-datepicker__year-option react-datepicker__year-option--selected_year\" : \"react-datepicker__year-option\",\n key: year,\n ref: year,\n onClick: _this.onChange.bind(_this, year)\n },\n selectedYear === year ? React.createElement(\n \"span\",\n { className: \"react-datepicker__year-option--selected\" },\n \"\\u2713\"\n ) : \"\",\n year\n );\n });\n\n var minYear = _this.props.minDate ? getYear(_this.props.minDate) : null;\n var maxYear = _this.props.maxDate ? getYear(_this.props.maxDate) : null;\n\n if (!maxYear || !_this.state.yearsList.find(function (year) {\n return year === maxYear;\n })) {\n options.unshift(React.createElement(\n \"div\",\n {\n className: \"react-datepicker__year-option\",\n ref: \"upcoming\",\n key: \"upcoming\",\n onClick: _this.incrementYears\n },\n React.createElement(\"a\", { className: \"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-upcoming\" })\n ));\n }\n\n if (!minYear || !_this.state.yearsList.find(function (year) {\n return year === minYear;\n })) {\n options.push(React.createElement(\n \"div\",\n {\n className: \"react-datepicker__year-option\",\n ref: \"previous\",\n key: \"previous\",\n onClick: _this.decrementYears\n },\n React.createElement(\"a\", { className: \"react-datepicker__navigation react-datepicker__navigation--years react-datepicker__navigation--years-previous\" })\n ));\n }\n\n return options;\n };\n\n _this.onChange = function (year) {\n _this.props.onChange(year);\n };\n\n _this.handleClickOutside = function () {\n _this.props.onCancel();\n };\n\n _this.shiftYears = function (amount) {\n var years = _this.state.yearsList.map(function (year) {\n return year + amount;\n });\n\n _this.setState({\n yearsList: years\n });\n };\n\n _this.incrementYears = function () {\n return _this.shiftYears(1);\n };\n\n _this.decrementYears = function () {\n return _this.shiftYears(-1);\n };\n\n var yearDropdownItemNumber = props.yearDropdownItemNumber,\n scrollableYearDropdown = props.scrollableYearDropdown;\n\n var noOfYear = yearDropdownItemNumber || (scrollableYearDropdown ? 10 : 5);\n\n _this.state = {\n yearsList: generateYears(_this.props.year, noOfYear, _this.props.minDate, _this.props.maxDate)\n };\n return _this;\n }\n\n YearDropdownOptions.prototype.render = function render() {\n var dropdownClass = classnames({\n \"react-datepicker__year-dropdown\": true,\n \"react-datepicker__year-dropdown--scrollable\": this.props.scrollableYearDropdown\n });\n\n return React.createElement(\n \"div\",\n { className: dropdownClass },\n this.renderOptions()\n );\n };\n\n return YearDropdownOptions;\n}(React.Component);\n\nYearDropdownOptions.propTypes = {\n minDate: PropTypes.instanceOf(Date),\n maxDate: PropTypes.instanceOf(Date),\n onCancel: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n scrollableYearDropdown: PropTypes.bool,\n year: PropTypes.number.isRequired,\n yearDropdownItemNumber: PropTypes.number\n};\n\nvar WrappedYearDropdownOptions = onClickOutside(YearDropdownOptions);\n\nvar YearDropdown = function (_React$Component) {\n inherits(YearDropdown, _React$Component);\n\n function YearDropdown() {\n var _temp, _this, _ret;\n\n classCallCheck(this, YearDropdown);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n dropdownVisible: false\n }, _this.renderSelectOptions = function () {\n var minYear = _this.props.minDate ? getYear(_this.props.minDate) : 1900;\n var maxYear = _this.props.maxDate ? getYear(_this.props.maxDate) : 2100;\n\n var options = [];\n for (var i = minYear; i <= maxYear; i++) {\n options.push(React.createElement(\n \"option\",\n { key: i, value: i },\n i\n ));\n }\n return options;\n }, _this.onSelectChange = function (e) {\n _this.onChange(e.target.value);\n }, _this.renderSelectMode = function () {\n return React.createElement(\n \"select\",\n {\n value: _this.props.year,\n className: \"react-datepicker__year-select\",\n onChange: _this.onSelectChange\n },\n _this.renderSelectOptions()\n );\n }, _this.renderReadView = function (visible) {\n return React.createElement(\n \"div\",\n {\n key: \"read\",\n style: { visibility: visible ? \"visible\" : \"hidden\" },\n className: \"react-datepicker__year-read-view\",\n onClick: function onClick(event) {\n return _this.toggleDropdown(event);\n }\n },\n React.createElement(\"span\", { className: \"react-datepicker__year-read-view--down-arrow\" }),\n React.createElement(\n \"span\",\n { className: \"react-datepicker__year-read-view--selected-year\" },\n _this.props.year\n )\n );\n }, _this.renderDropdown = function () {\n return React.createElement(WrappedYearDropdownOptions, {\n key: \"dropdown\",\n ref: \"options\",\n year: _this.props.year,\n onChange: _this.onChange,\n onCancel: _this.toggleDropdown,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n scrollableYearDropdown: _this.props.scrollableYearDropdown,\n yearDropdownItemNumber: _this.props.yearDropdownItemNumber\n });\n }, _this.renderScrollMode = function () {\n var dropdownVisible = _this.state.dropdownVisible;\n\n var result = [_this.renderReadView(!dropdownVisible)];\n if (dropdownVisible) {\n result.unshift(_this.renderDropdown());\n }\n return result;\n }, _this.onChange = function (year) {\n _this.toggleDropdown();\n if (year === _this.props.year) return;\n _this.props.onChange(year);\n }, _this.toggleDropdown = function (event) {\n _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n }, function () {\n if (_this.props.adjustDateOnChange) {\n _this.handleYearChange(_this.props.date, event);\n }\n });\n }, _this.handleYearChange = function (date, event) {\n _this.onSelect(date, event);\n _this.setOpen();\n }, _this.onSelect = function (date, event) {\n if (_this.props.onSelect) {\n _this.props.onSelect(date, event);\n }\n }, _this.setOpen = function () {\n if (_this.props.setOpen) {\n _this.props.setOpen(true);\n }\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n YearDropdown.prototype.render = function render() {\n var renderedDropdown = void 0;\n switch (this.props.dropdownMode) {\n case \"scroll\":\n renderedDropdown = this.renderScrollMode();\n break;\n case \"select\":\n renderedDropdown = this.renderSelectMode();\n break;\n }\n\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__year-dropdown-container react-datepicker__year-dropdown-container--\" + this.props.dropdownMode\n },\n renderedDropdown\n );\n };\n\n return YearDropdown;\n}(React.Component);\n\nYearDropdown.propTypes = {\n adjustDateOnChange: PropTypes.bool,\n dropdownMode: PropTypes.oneOf([\"scroll\", \"select\"]).isRequired,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n onChange: PropTypes.func.isRequired,\n scrollableYearDropdown: PropTypes.bool,\n year: PropTypes.number.isRequired,\n yearDropdownItemNumber: PropTypes.number,\n date: PropTypes.instanceOf(Date),\n onSelect: PropTypes.func,\n setOpen: PropTypes.func\n};\n\nvar MonthDropdownOptions = function (_React$Component) {\n inherits(MonthDropdownOptions, _React$Component);\n\n function MonthDropdownOptions() {\n var _temp, _this, _ret;\n\n classCallCheck(this, MonthDropdownOptions);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.renderOptions = function () {\n return _this.props.monthNames.map(function (month, i) {\n return React.createElement(\n \"div\",\n {\n className: _this.props.month === i ? \"react-datepicker__month-option --selected_month\" : \"react-datepicker__month-option\",\n key: month,\n ref: month,\n onClick: _this.onChange.bind(_this, i)\n },\n _this.props.month === i ? React.createElement(\n \"span\",\n { className: \"react-datepicker__month-option--selected\" },\n \"\\u2713\"\n ) : \"\",\n month\n );\n });\n }, _this.onChange = function (month) {\n return _this.props.onChange(month);\n }, _this.handleClickOutside = function () {\n return _this.props.onCancel();\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n MonthDropdownOptions.prototype.render = function render() {\n return React.createElement(\n \"div\",\n { className: \"react-datepicker__month-dropdown\" },\n this.renderOptions()\n );\n };\n\n return MonthDropdownOptions;\n}(React.Component);\n\nMonthDropdownOptions.propTypes = {\n onCancel: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n month: PropTypes.number.isRequired,\n monthNames: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired\n};\n\nvar WrappedMonthDropdownOptions = onClickOutside(MonthDropdownOptions);\n\nvar MonthDropdown = function (_React$Component) {\n inherits(MonthDropdown, _React$Component);\n\n function MonthDropdown() {\n var _temp, _this, _ret;\n\n classCallCheck(this, MonthDropdown);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n dropdownVisible: false\n }, _this.renderSelectOptions = function (monthNames) {\n return monthNames.map(function (M, i) {\n return React.createElement(\n \"option\",\n { key: i, value: i },\n M\n );\n });\n }, _this.renderSelectMode = function (monthNames) {\n return React.createElement(\n \"select\",\n {\n value: _this.props.month,\n className: \"react-datepicker__month-select\",\n onChange: function onChange(e) {\n return _this.onChange(e.target.value);\n }\n },\n _this.renderSelectOptions(monthNames)\n );\n }, _this.renderReadView = function (visible, monthNames) {\n return React.createElement(\n \"div\",\n {\n key: \"read\",\n style: { visibility: visible ? \"visible\" : \"hidden\" },\n className: \"react-datepicker__month-read-view\",\n onClick: _this.toggleDropdown\n },\n React.createElement(\"span\", { className: \"react-datepicker__month-read-view--down-arrow\" }),\n React.createElement(\n \"span\",\n { className: \"react-datepicker__month-read-view--selected-month\" },\n monthNames[_this.props.month]\n )\n );\n }, _this.renderDropdown = function (monthNames) {\n return React.createElement(WrappedMonthDropdownOptions, {\n key: \"dropdown\",\n ref: \"options\",\n month: _this.props.month,\n monthNames: monthNames,\n onChange: _this.onChange,\n onCancel: _this.toggleDropdown\n });\n }, _this.renderScrollMode = function (monthNames) {\n var dropdownVisible = _this.state.dropdownVisible;\n\n var result = [_this.renderReadView(!dropdownVisible, monthNames)];\n if (dropdownVisible) {\n result.unshift(_this.renderDropdown(monthNames));\n }\n return result;\n }, _this.onChange = function (month) {\n _this.toggleDropdown();\n if (month !== _this.props.month) {\n _this.props.onChange(month);\n }\n }, _this.toggleDropdown = function () {\n return _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n MonthDropdown.prototype.render = function render() {\n var _this2 = this;\n\n var monthNames = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map(this.props.useShortMonthInDropdown ? function (M) {\n return getMonthShortInLocale(M, _this2.props.locale);\n } : function (M) {\n return getMonthInLocale(M, _this2.props.locale);\n });\n\n var renderedDropdown = void 0;\n switch (this.props.dropdownMode) {\n case \"scroll\":\n renderedDropdown = this.renderScrollMode(monthNames);\n break;\n case \"select\":\n renderedDropdown = this.renderSelectMode(monthNames);\n break;\n }\n\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__month-dropdown-container react-datepicker__month-dropdown-container--\" + this.props.dropdownMode\n },\n renderedDropdown\n );\n };\n\n return MonthDropdown;\n}(React.Component);\n\nMonthDropdown.propTypes = {\n dropdownMode: PropTypes.oneOf([\"scroll\", \"select\"]).isRequired,\n locale: PropTypes.string,\n month: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n useShortMonthInDropdown: PropTypes.bool\n};\n\nfunction generateMonthYears(minDate, maxDate) {\n var list = [];\n\n var currDate = getStartOfMonth(minDate);\n var lastDate = getStartOfMonth(maxDate);\n\n while (!isAfter(currDate, lastDate)) {\n list.push(newDate(currDate));\n\n currDate = addMonths(currDate, 1);\n }\n return list;\n}\n\nvar MonthYearDropdownOptions = function (_React$Component) {\n inherits(MonthYearDropdownOptions, _React$Component);\n\n function MonthYearDropdownOptions(props) {\n classCallCheck(this, MonthYearDropdownOptions);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.renderOptions = function () {\n return _this.state.monthYearsList.map(function (monthYear) {\n var monthYearPoint = getTime(monthYear);\n var isSameMonthYear = isSameYear(_this.props.date, monthYear) && isSameMonth(_this.props.date, monthYear);\n\n return React.createElement(\n \"div\",\n {\n className: isSameMonthYear ? \"react-datepicker__month-year-option --selected_month-year\" : \"react-datepicker__month-year-option\",\n key: monthYearPoint,\n ref: monthYearPoint,\n onClick: _this.onChange.bind(_this, monthYearPoint)\n },\n isSameMonthYear ? React.createElement(\n \"span\",\n { className: \"react-datepicker__month-year-option--selected\" },\n \"\\u2713\"\n ) : \"\",\n formatDate(monthYear, _this.props.dateFormat)\n );\n });\n };\n\n _this.onChange = function (monthYear) {\n return _this.props.onChange(monthYear);\n };\n\n _this.handleClickOutside = function () {\n _this.props.onCancel();\n };\n\n _this.state = {\n monthYearsList: generateMonthYears(_this.props.minDate, _this.props.maxDate)\n };\n return _this;\n }\n\n MonthYearDropdownOptions.prototype.render = function render() {\n var dropdownClass = classnames({\n \"react-datepicker__month-year-dropdown\": true,\n \"react-datepicker__month-year-dropdown--scrollable\": this.props.scrollableMonthYearDropdown\n });\n\n return React.createElement(\n \"div\",\n { className: dropdownClass },\n this.renderOptions()\n );\n };\n\n return MonthYearDropdownOptions;\n}(React.Component);\n\nMonthYearDropdownOptions.propTypes = {\n minDate: PropTypes.instanceOf(Date).isRequired,\n maxDate: PropTypes.instanceOf(Date).isRequired,\n onCancel: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n scrollableMonthYearDropdown: PropTypes.bool,\n date: PropTypes.instanceOf(Date).isRequired,\n dateFormat: PropTypes.string.isRequired\n};\n\nvar WrappedMonthYearDropdownOptions = onClickOutside(MonthYearDropdownOptions);\n\nvar MonthYearDropdown = function (_React$Component) {\n inherits(MonthYearDropdown, _React$Component);\n\n function MonthYearDropdown() {\n var _temp, _this, _ret;\n\n classCallCheck(this, MonthYearDropdown);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n dropdownVisible: false\n }, _this.renderSelectOptions = function () {\n var currDate = getStartOfMonth(_this.props.minDate);\n var lastDate = getStartOfMonth(_this.props.maxDate);\n var options = [];\n\n while (!isAfter(currDate, lastDate)) {\n var timepoint = getTime(currDate);\n options.push(React.createElement(\n \"option\",\n { key: timepoint, value: timepoint },\n formatDate(currDate, _this.props.dateFormat, _this.props.locale)\n ));\n\n currDate = addMonths(currDate, 1);\n }\n\n return options;\n }, _this.onSelectChange = function (e) {\n _this.onChange(e.target.value);\n }, _this.renderSelectMode = function () {\n return React.createElement(\n \"select\",\n {\n value: getTime(getStartOfMonth(_this.props.date)),\n className: \"react-datepicker__month-year-select\",\n onChange: _this.onSelectChange\n },\n _this.renderSelectOptions()\n );\n }, _this.renderReadView = function (visible) {\n var yearMonth = formatDate(_this.props.date, _this.props.dateFormat, _this.props.locale);\n\n return React.createElement(\n \"div\",\n {\n key: \"read\",\n style: { visibility: visible ? \"visible\" : \"hidden\" },\n className: \"react-datepicker__month-year-read-view\",\n onClick: function onClick(event) {\n return _this.toggleDropdown(event);\n }\n },\n React.createElement(\"span\", { className: \"react-datepicker__month-year-read-view--down-arrow\" }),\n React.createElement(\n \"span\",\n { className: \"react-datepicker__month-year-read-view--selected-month-year\" },\n yearMonth\n )\n );\n }, _this.renderDropdown = function () {\n return React.createElement(WrappedMonthYearDropdownOptions, {\n key: \"dropdown\",\n ref: \"options\",\n date: _this.props.date,\n dateFormat: _this.props.dateFormat,\n onChange: _this.onChange,\n onCancel: _this.toggleDropdown,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown\n });\n }, _this.renderScrollMode = function () {\n var dropdownVisible = _this.state.dropdownVisible;\n\n var result = [_this.renderReadView(!dropdownVisible)];\n if (dropdownVisible) {\n result.unshift(_this.renderDropdown());\n }\n return result;\n }, _this.onChange = function (monthYearPoint) {\n _this.toggleDropdown();\n\n var changedDate = newDate(parseInt(monthYearPoint));\n\n if (isSameYear(_this.props.date, changedDate) && isSameMonth(_this.props.date, changedDate)) {\n return;\n }\n\n _this.props.onChange(changedDate);\n }, _this.toggleDropdown = function () {\n return _this.setState({\n dropdownVisible: !_this.state.dropdownVisible\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n MonthYearDropdown.prototype.render = function render() {\n var renderedDropdown = void 0;\n switch (this.props.dropdownMode) {\n case \"scroll\":\n renderedDropdown = this.renderScrollMode();\n break;\n case \"select\":\n renderedDropdown = this.renderSelectMode();\n break;\n }\n\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__month-year-dropdown-container react-datepicker__month-year-dropdown-container--\" + this.props.dropdownMode\n },\n renderedDropdown\n );\n };\n\n return MonthYearDropdown;\n}(React.Component);\n\nMonthYearDropdown.propTypes = {\n dropdownMode: PropTypes.oneOf([\"scroll\", \"select\"]).isRequired,\n dateFormat: PropTypes.string.isRequired,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date).isRequired,\n minDate: PropTypes.instanceOf(Date).isRequired,\n date: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func.isRequired,\n scrollableMonthYearDropdown: PropTypes.bool\n};\n\nvar Day = function (_React$Component) {\n inherits(Day, _React$Component);\n\n function Day() {\n var _temp, _this, _ret;\n\n classCallCheck(this, Day);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (!_this.isDisabled() && _this.props.onClick) {\n _this.props.onClick(event);\n }\n }, _this.handleMouseEnter = function (event) {\n if (!_this.isDisabled() && _this.props.onMouseEnter) {\n _this.props.onMouseEnter(event);\n }\n }, _this.isSameDay = function (other) {\n return isSameDay(_this.props.day, other);\n }, _this.isKeyboardSelected = function () {\n return !_this.props.disabledKeyboardNavigation && !_this.props.inline && !_this.isSameDay(_this.props.selected) && _this.isSameDay(_this.props.preSelection);\n }, _this.isDisabled = function () {\n return isDayDisabled(_this.props.day, _this.props);\n }, _this.getHighLightedClass = function (defaultClassName) {\n var _this$props = _this.props,\n day = _this$props.day,\n highlightDates = _this$props.highlightDates;\n\n\n if (!highlightDates) {\n return false;\n }\n\n // Looking for className in the Map of {'day string, 'className'}\n var dayStr = formatDate(day, \"MM.dd.yyyy\");\n return highlightDates.get(dayStr);\n }, _this.isInRange = function () {\n var _this$props2 = _this.props,\n day = _this$props2.day,\n startDate = _this$props2.startDate,\n endDate = _this$props2.endDate;\n\n if (!startDate || !endDate) {\n return false;\n }\n return isDayInRange(day, startDate, endDate);\n }, _this.isInSelectingRange = function () {\n var _this$props3 = _this.props,\n day = _this$props3.day,\n selectsStart = _this$props3.selectsStart,\n selectsEnd = _this$props3.selectsEnd,\n selectingDate = _this$props3.selectingDate,\n startDate = _this$props3.startDate,\n endDate = _this$props3.endDate;\n\n\n if (!(selectsStart || selectsEnd) || !selectingDate || _this.isDisabled()) {\n return false;\n }\n\n if (selectsStart && endDate && (isBefore(selectingDate, endDate) || isEqual(selectingDate, endDate))) {\n return isDayInRange(day, selectingDate, endDate);\n }\n\n if (selectsEnd && startDate && (isAfter(selectingDate, startDate) || isEqual(selectingDate, startDate))) {\n return isDayInRange(day, startDate, selectingDate);\n }\n\n return false;\n }, _this.isSelectingRangeStart = function () {\n if (!_this.isInSelectingRange()) {\n return false;\n }\n\n var _this$props4 = _this.props,\n day = _this$props4.day,\n selectingDate = _this$props4.selectingDate,\n startDate = _this$props4.startDate,\n selectsStart = _this$props4.selectsStart;\n\n\n if (selectsStart) {\n return isSameDay(day, selectingDate);\n } else {\n return isSameDay(day, startDate);\n }\n }, _this.isSelectingRangeEnd = function () {\n if (!_this.isInSelectingRange()) {\n return false;\n }\n\n var _this$props5 = _this.props,\n day = _this$props5.day,\n selectingDate = _this$props5.selectingDate,\n endDate = _this$props5.endDate,\n selectsEnd = _this$props5.selectsEnd;\n\n\n if (selectsEnd) {\n return isSameDay(day, selectingDate);\n } else {\n return isSameDay(day, endDate);\n }\n }, _this.isRangeStart = function () {\n var _this$props6 = _this.props,\n day = _this$props6.day,\n startDate = _this$props6.startDate,\n endDate = _this$props6.endDate;\n\n if (!startDate || !endDate) {\n return false;\n }\n return isSameDay(startDate, day);\n }, _this.isRangeEnd = function () {\n var _this$props7 = _this.props,\n day = _this$props7.day,\n startDate = _this$props7.startDate,\n endDate = _this$props7.endDate;\n\n if (!startDate || !endDate) {\n return false;\n }\n return isSameDay(endDate, day);\n }, _this.isWeekend = function () {\n var weekday = getDay(_this.props.day);\n return weekday === 0 || weekday === 6;\n }, _this.isOutsideMonth = function () {\n return _this.props.month !== undefined && _this.props.month !== getMonth(_this.props.day);\n }, _this.getClassNames = function (date) {\n var dayClassName = _this.props.dayClassName ? _this.props.dayClassName(date) : undefined;\n return classnames(\"react-datepicker__day\", dayClassName, \"react-datepicker__day--\" + getDayOfWeekCode(_this.props.day), {\n \"react-datepicker__day--disabled\": _this.isDisabled(),\n \"react-datepicker__day--selected\": _this.isSameDay(_this.props.selected),\n \"react-datepicker__day--keyboard-selected\": _this.isKeyboardSelected(),\n \"react-datepicker__day--range-start\": _this.isRangeStart(),\n \"react-datepicker__day--range-end\": _this.isRangeEnd(),\n \"react-datepicker__day--in-range\": _this.isInRange(),\n \"react-datepicker__day--in-selecting-range\": _this.isInSelectingRange(),\n \"react-datepicker__day--selecting-range-start\": _this.isSelectingRangeStart(),\n \"react-datepicker__day--selecting-range-end\": _this.isSelectingRangeEnd(),\n \"react-datepicker__day--today\": _this.isSameDay(newDate()),\n \"react-datepicker__day--weekend\": _this.isWeekend(),\n \"react-datepicker__day--outside-month\": _this.isOutsideMonth()\n }, _this.getHighLightedClass(\"react-datepicker__day--highlighted\"));\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n Day.prototype.render = function render() {\n return React.createElement(\n \"div\",\n {\n className: this.getClassNames(this.props.day),\n onClick: this.handleClick,\n onMouseEnter: this.handleMouseEnter,\n \"aria-label\": \"day-\" + getDate(this.props.day),\n role: \"option\"\n },\n this.props.renderDayContents ? this.props.renderDayContents(getDate(this.props.day)) : getDate(this.props.day)\n );\n };\n\n return Day;\n}(React.Component);\n\nDay.propTypes = {\n disabledKeyboardNavigation: PropTypes.bool,\n day: PropTypes.instanceOf(Date).isRequired,\n dayClassName: PropTypes.func,\n endDate: PropTypes.instanceOf(Date),\n highlightDates: PropTypes.instanceOf(Map),\n inline: PropTypes.bool,\n month: PropTypes.number,\n onClick: PropTypes.func,\n onMouseEnter: PropTypes.func,\n preSelection: PropTypes.instanceOf(Date),\n selected: PropTypes.object,\n selectingDate: PropTypes.instanceOf(Date),\n selectsEnd: PropTypes.bool,\n selectsStart: PropTypes.bool,\n startDate: PropTypes.instanceOf(Date),\n renderDayContents: PropTypes.func\n};\n\nvar WeekNumber = function (_React$Component) {\n inherits(WeekNumber, _React$Component);\n\n function WeekNumber() {\n var _temp, _this, _ret;\n\n classCallCheck(this, WeekNumber);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) {\n _this.props.onClick(event);\n }\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n WeekNumber.prototype.render = function render() {\n var weekNumberClasses = {\n \"react-datepicker__week-number\": true,\n \"react-datepicker__week-number--clickable\": !!this.props.onClick\n };\n return React.createElement(\n \"div\",\n {\n className: classnames(weekNumberClasses),\n \"aria-label\": \"week-\" + this.props.weekNumber,\n onClick: this.handleClick\n },\n this.props.weekNumber\n );\n };\n\n return WeekNumber;\n}(React.Component);\n\nWeekNumber.propTypes = {\n weekNumber: PropTypes.number.isRequired,\n onClick: PropTypes.func\n};\n\nvar Week = function (_React$Component) {\n inherits(Week, _React$Component);\n\n function Week() {\n var _temp, _this, _ret;\n\n classCallCheck(this, Week);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleDayClick = function (day, event) {\n if (_this.props.onDayClick) {\n _this.props.onDayClick(day, event);\n }\n }, _this.handleDayMouseEnter = function (day) {\n if (_this.props.onDayMouseEnter) {\n _this.props.onDayMouseEnter(day);\n }\n }, _this.handleWeekClick = function (day, weekNumber, event) {\n if (typeof _this.props.onWeekSelect === \"function\") {\n _this.props.onWeekSelect(day, weekNumber, event);\n }\n if (_this.props.shouldCloseOnSelect) {\n _this.props.setOpen(false);\n }\n }, _this.formatWeekNumber = function (startOfWeek) {\n if (_this.props.formatWeekNumber) {\n return _this.props.formatWeekNumber(startOfWeek);\n }\n return getWeek(startOfWeek);\n }, _this.renderDays = function () {\n var startOfWeek = getStartOfWeek(_this.props.day, _this.props.locale);\n var days = [];\n var weekNumber = _this.formatWeekNumber(startOfWeek);\n if (_this.props.showWeekNumber) {\n var onClickAction = _this.props.onWeekSelect ? _this.handleWeekClick.bind(_this, startOfWeek, weekNumber) : undefined;\n days.push(React.createElement(WeekNumber, { key: \"W\", weekNumber: weekNumber, onClick: onClickAction }));\n }\n return days.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {\n var day = addDays(startOfWeek, offset);\n return React.createElement(Day, {\n key: offset,\n day: day,\n month: _this.props.month,\n onClick: _this.handleDayClick.bind(_this, day),\n onMouseEnter: _this.handleDayMouseEnter.bind(_this, day),\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n excludeDates: _this.props.excludeDates,\n includeDates: _this.props.includeDates,\n inline: _this.props.inline,\n highlightDates: _this.props.highlightDates,\n selectingDate: _this.props.selectingDate,\n filterDate: _this.props.filterDate,\n preSelection: _this.props.preSelection,\n selected: _this.props.selected,\n selectsStart: _this.props.selectsStart,\n selectsEnd: _this.props.selectsEnd,\n startDate: _this.props.startDate,\n endDate: _this.props.endDate,\n dayClassName: _this.props.dayClassName,\n renderDayContents: _this.props.renderDayContents,\n disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation\n });\n }));\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n Week.prototype.render = function render() {\n return React.createElement(\n \"div\",\n { className: \"react-datepicker__week\" },\n this.renderDays()\n );\n };\n\n createClass(Week, null, [{\n key: \"defaultProps\",\n get: function get$$1() {\n return {\n shouldCloseOnSelect: true\n };\n }\n }]);\n return Week;\n}(React.Component);\n\nWeek.propTypes = {\n disabledKeyboardNavigation: PropTypes.bool,\n day: PropTypes.instanceOf(Date).isRequired,\n dayClassName: PropTypes.func,\n endDate: PropTypes.instanceOf(Date),\n excludeDates: PropTypes.array,\n filterDate: PropTypes.func,\n formatWeekNumber: PropTypes.func,\n highlightDates: PropTypes.instanceOf(Map),\n includeDates: PropTypes.array,\n inline: PropTypes.bool,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n month: PropTypes.number,\n onDayClick: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onWeekSelect: PropTypes.func,\n preSelection: PropTypes.instanceOf(Date),\n selected: PropTypes.instanceOf(Date),\n selectingDate: PropTypes.instanceOf(Date),\n selectsEnd: PropTypes.bool,\n selectsStart: PropTypes.bool,\n showWeekNumber: PropTypes.bool,\n startDate: PropTypes.instanceOf(Date),\n setOpen: PropTypes.func,\n shouldCloseOnSelect: PropTypes.bool,\n renderDayContents: PropTypes.func\n};\n\nvar FIXED_HEIGHT_STANDARD_WEEK_COUNT = 6;\n\nvar Month = function (_React$Component) {\n inherits(Month, _React$Component);\n\n function Month() {\n var _temp, _this, _ret;\n\n classCallCheck(this, Month);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleDayClick = function (day, event) {\n if (_this.props.onDayClick) {\n _this.props.onDayClick(day, event, _this.props.orderInDisplay);\n }\n }, _this.handleDayMouseEnter = function (day) {\n if (_this.props.onDayMouseEnter) {\n _this.props.onDayMouseEnter(day);\n }\n }, _this.handleMouseLeave = function () {\n if (_this.props.onMouseLeave) {\n _this.props.onMouseLeave();\n }\n }, _this.isWeekInMonth = function (startOfWeek) {\n var day = _this.props.day;\n var endOfWeek = addDays(startOfWeek, 6);\n return isSameMonth(startOfWeek, day) || isSameMonth(endOfWeek, day);\n }, _this.renderWeeks = function () {\n var weeks = [];\n var isFixedHeight = _this.props.fixedHeight;\n var currentWeekStart = getStartOfWeek(getStartOfMonth(_this.props.day), _this.props.locale);\n var i = 0;\n var breakAfterNextPush = false;\n\n while (true) {\n weeks.push(React.createElement(Week, {\n key: i,\n day: currentWeekStart,\n month: getMonth(_this.props.day),\n onDayClick: _this.handleDayClick,\n onDayMouseEnter: _this.handleDayMouseEnter,\n onWeekSelect: _this.props.onWeekSelect,\n formatWeekNumber: _this.props.formatWeekNumber,\n locale: _this.props.locale,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n excludeDates: _this.props.excludeDates,\n includeDates: _this.props.includeDates,\n inline: _this.props.inline,\n highlightDates: _this.props.highlightDates,\n selectingDate: _this.props.selectingDate,\n filterDate: _this.props.filterDate,\n preSelection: _this.props.preSelection,\n selected: _this.props.selected,\n selectsStart: _this.props.selectsStart,\n selectsEnd: _this.props.selectsEnd,\n showWeekNumber: _this.props.showWeekNumbers,\n startDate: _this.props.startDate,\n endDate: _this.props.endDate,\n dayClassName: _this.props.dayClassName,\n setOpen: _this.props.setOpen,\n shouldCloseOnSelect: _this.props.shouldCloseOnSelect,\n disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation,\n renderDayContents: _this.props.renderDayContents\n }));\n\n if (breakAfterNextPush) break;\n\n i++;\n currentWeekStart = addWeeks(currentWeekStart, 1);\n\n // If one of these conditions is true, we will either break on this week\n // or break on the next week\n var isFixedAndFinalWeek = isFixedHeight && i >= FIXED_HEIGHT_STANDARD_WEEK_COUNT;\n var isNonFixedAndOutOfMonth = !isFixedHeight && !_this.isWeekInMonth(currentWeekStart);\n\n if (isFixedAndFinalWeek || isNonFixedAndOutOfMonth) {\n if (_this.props.peekNextMonth) {\n breakAfterNextPush = true;\n } else {\n break;\n }\n }\n }\n\n return weeks;\n }, _this.getClassNames = function () {\n var _this$props = _this.props,\n selectingDate = _this$props.selectingDate,\n selectsStart = _this$props.selectsStart,\n selectsEnd = _this$props.selectsEnd;\n\n return classnames(\"react-datepicker__month\", {\n \"react-datepicker__month--selecting-range\": selectingDate && (selectsStart || selectsEnd)\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n Month.prototype.render = function render() {\n return React.createElement(\n \"div\",\n {\n className: this.getClassNames(),\n onMouseLeave: this.handleMouseLeave,\n role: \"listbox\",\n \"aria-label\": \"month-\" + formatDate(this.props.day, \"YYYY-MM\")\n },\n this.renderWeeks()\n );\n };\n\n return Month;\n}(React.Component);\n\nMonth.propTypes = {\n disabledKeyboardNavigation: PropTypes.bool,\n day: PropTypes.instanceOf(Date).isRequired,\n dayClassName: PropTypes.func,\n endDate: PropTypes.instanceOf(Date),\n orderInDisplay: PropTypes.number,\n excludeDates: PropTypes.array,\n filterDate: PropTypes.func,\n fixedHeight: PropTypes.bool,\n formatWeekNumber: PropTypes.func,\n highlightDates: PropTypes.instanceOf(Map),\n includeDates: PropTypes.array,\n inline: PropTypes.bool,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n onDayClick: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onWeekSelect: PropTypes.func,\n peekNextMonth: PropTypes.bool,\n preSelection: PropTypes.instanceOf(Date),\n selected: PropTypes.instanceOf(Date),\n selectingDate: PropTypes.instanceOf(Date),\n selectsEnd: PropTypes.bool,\n selectsStart: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n startDate: PropTypes.instanceOf(Date),\n setOpen: PropTypes.func,\n shouldCloseOnSelect: PropTypes.bool,\n renderDayContents: PropTypes.func\n};\n\nvar Time = function (_React$Component) {\n inherits(Time, _React$Component);\n\n function Time() {\n var _temp, _this, _ret;\n\n classCallCheck(this, Time);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (time) {\n if ((_this.props.minTime || _this.props.maxTime) && isTimeInDisabledRange(time, _this.props) || _this.props.excludeTimes && isTimeDisabled(time, _this.props.excludeTimes) || _this.props.includeTimes && !isTimeDisabled(time, _this.props.includeTimes)) {\n return;\n }\n _this.props.onChange(time);\n }, _this.liClasses = function (time, currH, currM) {\n var classes = [\"react-datepicker__time-list-item\"];\n\n if (currH === getHours(time) && currM === getMinutes(time)) {\n classes.push(\"react-datepicker__time-list-item--selected\");\n }\n if ((_this.props.minTime || _this.props.maxTime) && isTimeInDisabledRange(time, _this.props) || _this.props.excludeTimes && isTimeDisabled(time, _this.props.excludeTimes) || _this.props.includeTimes && !isTimeDisabled(time, _this.props.includeTimes)) {\n classes.push(\"react-datepicker__time-list-item--disabled\");\n }\n if (_this.props.injectTimes && (getHours(time) * 60 + getMinutes(time)) % _this.props.intervals !== 0) {\n classes.push(\"react-datepicker__time-list-item--injected\");\n }\n\n return classes.join(\" \");\n }, _this.renderTimes = function () {\n var times = [];\n var format = _this.props.format ? _this.props.format : \"p\";\n var intervals = _this.props.intervals;\n var activeTime = _this.props.selected ? _this.props.selected : newDate();\n var currH = getHours(activeTime);\n var currM = getMinutes(activeTime);\n var base = getStartOfDay(newDate());\n var multiplier = 1440 / intervals;\n var sortedInjectTimes = _this.props.injectTimes && _this.props.injectTimes.sort(function (a, b) {\n return a - b;\n });\n for (var i = 0; i < multiplier; i++) {\n var currentTime = addMinutes(base, i * intervals);\n times.push(currentTime);\n\n if (sortedInjectTimes) {\n var timesToInject = timesToInjectAfter(base, currentTime, i, intervals, sortedInjectTimes);\n times = times.concat(timesToInject);\n }\n }\n\n return times.map(function (time, i) {\n return React.createElement(\n \"li\",\n {\n key: i,\n onClick: _this.handleClick.bind(_this, time),\n className: _this.liClasses(time, currH, currM),\n ref: function ref(li) {\n if (currH === getHours(time) && currM === getMinutes(time) || currH === getHours(time) && !_this.centerLi) {\n _this.centerLi = li;\n }\n }\n },\n formatDate(time, format)\n );\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n\n Time.prototype.componentDidMount = function componentDidMount() {\n // code to ensure selected time will always be in focus within time window when it first appears\n this.list.scrollTop = Time.calcCenterPosition(this.props.monthRef ? this.props.monthRef.clientHeight - this.header.clientHeight : this.list.clientHeight, this.centerLi);\n };\n\n Time.prototype.render = function render() {\n var _this2 = this;\n\n var height = null;\n if (this.props.monthRef && this.header) {\n height = this.props.monthRef.clientHeight - this.header.clientHeight;\n }\n\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__time-container \" + (this.props.todayButton ? \"react-datepicker__time-container--with-today-button\" : \"\")\n },\n React.createElement(\n \"div\",\n {\n className: \"react-datepicker__header react-datepicker__header--time\",\n ref: function ref(header) {\n _this2.header = header;\n }\n },\n React.createElement(\n \"div\",\n { className: \"react-datepicker-time__header\" },\n this.props.timeCaption\n )\n ),\n React.createElement(\n \"div\",\n { className: \"react-datepicker__time\" },\n React.createElement(\n \"div\",\n { className: \"react-datepicker__time-box\" },\n React.createElement(\n \"ul\",\n {\n className: \"react-datepicker__time-list\",\n ref: function ref(list) {\n _this2.list = list;\n },\n style: height ? { height: height } : {}\n },\n this.renderTimes.bind(this)()\n )\n )\n )\n );\n };\n\n createClass(Time, null, [{\n key: \"defaultProps\",\n get: function get$$1() {\n return {\n intervals: 30,\n onTimeChange: function onTimeChange() {},\n todayButton: null,\n timeCaption: \"Time\"\n };\n }\n }]);\n return Time;\n}(React.Component);\n\nTime.propTypes = {\n format: PropTypes.string,\n includeTimes: PropTypes.array,\n intervals: PropTypes.number,\n selected: PropTypes.instanceOf(Date),\n onChange: PropTypes.func,\n todayButton: PropTypes.node,\n minTime: PropTypes.instanceOf(Date),\n maxTime: PropTypes.instanceOf(Date),\n excludeTimes: PropTypes.array,\n monthRef: PropTypes.object,\n timeCaption: PropTypes.string,\n injectTimes: PropTypes.array\n};\n\nTime.calcCenterPosition = function (listHeight, centerLiRef) {\n return centerLiRef.offsetTop - (listHeight / 2 - centerLiRef.clientHeight / 2);\n};\n\nfunction CalendarContainer(_ref) {\n var className = _ref.className,\n children = _ref.children,\n _ref$arrowProps = _ref.arrowProps,\n arrowProps = _ref$arrowProps === undefined ? {} : _ref$arrowProps;\n\n return React.createElement(\n \"div\",\n { className: className },\n React.createElement(\"div\", _extends({ className: \"react-datepicker__triangle\" }, arrowProps)),\n children\n );\n}\n\nCalendarContainer.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n arrowProps: PropTypes.object // react-popper arrow props\n};\n\nvar DROPDOWN_FOCUS_CLASSNAMES = [\"react-datepicker__year-select\", \"react-datepicker__month-select\", \"react-datepicker__month-year-select\"];\n\nvar isDropdownSelect = function isDropdownSelect() {\n var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var classNames = (element.className || \"\").split(/\\s+/);\n return DROPDOWN_FOCUS_CLASSNAMES.some(function (testClassname) {\n return classNames.indexOf(testClassname) >= 0;\n });\n};\n\nvar Calendar = function (_React$Component) {\n inherits(Calendar, _React$Component);\n createClass(Calendar, null, [{\n key: \"defaultProps\",\n get: function get$$1() {\n return {\n onDropdownFocus: function onDropdownFocus() {},\n monthsShown: 1,\n monthSelectedIn: 0,\n forceShowMonthNavigation: false,\n timeCaption: \"Time\",\n previousMonthButtonLabel: \"Previous Month\",\n nextMonthButtonLabel: \"Next Month\"\n };\n }\n }]);\n\n function Calendar(props) {\n classCallCheck(this, Calendar);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.handleClickOutside = function (event) {\n _this.props.onClickOutside(event);\n };\n\n _this.handleDropdownFocus = function (event) {\n if (isDropdownSelect(event.target)) {\n _this.props.onDropdownFocus();\n }\n };\n\n _this.getDateInView = function () {\n var _this$props = _this.props,\n preSelection = _this$props.preSelection,\n selected = _this$props.selected,\n openToDate = _this$props.openToDate;\n\n var minDate = getEffectiveMinDate(_this.props);\n var maxDate = getEffectiveMaxDate(_this.props);\n var current = newDate();\n var initialDate = openToDate || selected || preSelection;\n if (initialDate) {\n return initialDate;\n } else {\n if (minDate && isBefore(current, minDate)) {\n return minDate;\n } else if (maxDate && isAfter(current, maxDate)) {\n return maxDate;\n }\n }\n return current;\n };\n\n _this.increaseMonth = function () {\n _this.setState({\n date: addMonths(_this.state.date, 1)\n }, function () {\n return _this.handleMonthChange(_this.state.date);\n });\n };\n\n _this.decreaseMonth = function () {\n _this.setState({\n date: subMonths(_this.state.date, 1)\n }, function () {\n return _this.handleMonthChange(_this.state.date);\n });\n };\n\n _this.handleDayClick = function (day, event, monthSelectedIn) {\n return _this.props.onSelect(day, event, monthSelectedIn);\n };\n\n _this.handleDayMouseEnter = function (day) {\n return _this.setState({ selectingDate: day });\n };\n\n _this.handleMonthMouseLeave = function () {\n return _this.setState({ selectingDate: null });\n };\n\n _this.handleYearChange = function (date) {\n if (_this.props.onYearChange) {\n _this.props.onYearChange(date);\n }\n };\n\n _this.handleMonthChange = function (date) {\n if (_this.props.onMonthChange) {\n _this.props.onMonthChange(date);\n }\n if (_this.props.adjustDateOnChange) {\n if (_this.props.onSelect) {\n _this.props.onSelect(date);\n }\n if (_this.props.setOpen) {\n _this.props.setOpen(true);\n }\n }\n };\n\n _this.handleMonthYearChange = function (date) {\n _this.handleYearChange(date);\n _this.handleMonthChange(date);\n };\n\n _this.changeYear = function (year) {\n _this.setState({\n date: setYear(_this.state.date, year)\n }, function () {\n return _this.handleYearChange(_this.state.date);\n });\n };\n\n _this.changeMonth = function (month) {\n _this.setState({\n date: setMonth(_this.state.date, month)\n }, function () {\n return _this.handleMonthChange(_this.state.date);\n });\n };\n\n _this.changeMonthYear = function (monthYear) {\n _this.setState({\n date: setYear(setMonth(_this.state.date, getMonth(monthYear)), getYear(monthYear))\n }, function () {\n return _this.handleMonthYearChange(_this.state.date);\n });\n };\n\n _this.header = function () {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.state.date;\n\n var startOfWeek = getStartOfWeek(date, _this.props.locale);\n var dayNames = [];\n if (_this.props.showWeekNumbers) {\n dayNames.push(React.createElement(\n \"div\",\n { key: \"W\", className: \"react-datepicker__day-name\" },\n _this.props.weekLabel || \"#\"\n ));\n }\n return dayNames.concat([0, 1, 2, 3, 4, 5, 6].map(function (offset) {\n var day = addDays(startOfWeek, offset);\n var weekDayName = _this.formatWeekday(day, _this.props.locale);\n return React.createElement(\n \"div\",\n { key: offset, className: \"react-datepicker__day-name\" },\n weekDayName\n );\n }));\n };\n\n _this.formatWeekday = function (day, locale) {\n if (_this.props.formatWeekDay) {\n return getFormattedWeekdayInLocale(day, _this.props.formatWeekDay, locale);\n }\n return _this.props.useWeekdaysShort ? getWeekdayShortInLocale(day, locale) : getWeekdayMinInLocale(day, locale);\n };\n\n _this.renderPreviousMonthButton = function () {\n if (_this.props.renderCustomHeader) {\n return;\n }\n\n var allPrevDaysDisabled = monthDisabledBefore(_this.state.date, _this.props);\n\n if (!_this.props.forceShowMonthNavigation && !_this.props.showDisabledMonthNavigation && allPrevDaysDisabled || _this.props.showTimeSelectOnly) {\n return;\n }\n\n var classes = [\"react-datepicker__navigation\", \"react-datepicker__navigation--previous\"];\n\n var clickHandler = _this.decreaseMonth;\n\n if (allPrevDaysDisabled && _this.props.showDisabledMonthNavigation) {\n classes.push(\"react-datepicker__navigation--previous--disabled\");\n clickHandler = null;\n }\n\n return React.createElement(\n \"button\",\n {\n type: \"button\",\n className: classes.join(\" \"),\n onClick: clickHandler\n },\n _this.props.previousMonthButtonLabel\n );\n };\n\n _this.renderNextMonthButton = function () {\n if (_this.props.renderCustomHeader) {\n return;\n }\n\n var allNextDaysDisabled = monthDisabledAfter(_this.state.date, _this.props);\n\n if (!_this.props.forceShowMonthNavigation && !_this.props.showDisabledMonthNavigation && allNextDaysDisabled || _this.props.showTimeSelectOnly) {\n return;\n }\n\n var classes = [\"react-datepicker__navigation\", \"react-datepicker__navigation--next\"];\n if (_this.props.showTimeSelect) {\n classes.push(\"react-datepicker__navigation--next--with-time\");\n }\n if (_this.props.todayButton) {\n classes.push(\"react-datepicker__navigation--next--with-today-button\");\n }\n\n var clickHandler = _this.increaseMonth;\n\n if (allNextDaysDisabled && _this.props.showDisabledMonthNavigation) {\n classes.push(\"react-datepicker__navigation--next--disabled\");\n clickHandler = null;\n }\n\n return React.createElement(\n \"button\",\n {\n type: \"button\",\n className: classes.join(\" \"),\n onClick: clickHandler\n },\n _this.props.nextMonthButtonLabel\n );\n };\n\n _this.renderCurrentMonth = function () {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.state.date;\n\n var classes = [\"react-datepicker__current-month\"];\n\n if (_this.props.showYearDropdown) {\n classes.push(\"react-datepicker__current-month--hasYearDropdown\");\n }\n if (_this.props.showMonthDropdown) {\n classes.push(\"react-datepicker__current-month--hasMonthDropdown\");\n }\n if (_this.props.showMonthYearDropdown) {\n classes.push(\"react-datepicker__current-month--hasMonthYearDropdown\");\n }\n return React.createElement(\n \"div\",\n { className: classes.join(\" \") },\n formatDate(date, _this.props.dateFormat, _this.props.locale)\n );\n };\n\n _this.renderYearDropdown = function () {\n var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!_this.props.showYearDropdown || overrideHide) {\n return;\n }\n return React.createElement(YearDropdown, {\n adjustDateOnChange: _this.props.adjustDateOnChange,\n date: _this.state.date,\n onSelect: _this.props.onSelect,\n setOpen: _this.props.setOpen,\n dropdownMode: _this.props.dropdownMode,\n onChange: _this.changeYear,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n year: getYear(_this.state.date),\n scrollableYearDropdown: _this.props.scrollableYearDropdown,\n yearDropdownItemNumber: _this.props.yearDropdownItemNumber\n });\n };\n\n _this.renderMonthDropdown = function () {\n var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!_this.props.showMonthDropdown || overrideHide) {\n return;\n }\n return React.createElement(MonthDropdown, {\n dropdownMode: _this.props.dropdownMode,\n locale: _this.props.locale,\n onChange: _this.changeMonth,\n month: getMonth(_this.state.date),\n useShortMonthInDropdown: _this.props.useShortMonthInDropdown\n });\n };\n\n _this.renderMonthYearDropdown = function () {\n var overrideHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (!_this.props.showMonthYearDropdown || overrideHide) {\n return;\n }\n return React.createElement(MonthYearDropdown, {\n dropdownMode: _this.props.dropdownMode,\n locale: _this.props.locale,\n dateFormat: _this.props.dateFormat,\n onChange: _this.changeMonthYear,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n date: _this.state.date,\n scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown\n });\n };\n\n _this.renderTodayButton = function () {\n if (!_this.props.todayButton || _this.props.showTimeSelectOnly) {\n return;\n }\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__today-button\",\n onClick: function onClick(e) {\n return _this.props.onSelect(getStartOfToday(), e);\n }\n },\n _this.props.todayButton\n );\n };\n\n _this.renderDefaultHeader = function (_ref) {\n var monthDate = _ref.monthDate,\n i = _ref.i;\n return React.createElement(\n \"div\",\n { className: \"react-datepicker__header\" },\n _this.renderCurrentMonth(monthDate),\n React.createElement(\n \"div\",\n {\n className: \"react-datepicker__header__dropdown react-datepicker__header__dropdown--\" + _this.props.dropdownMode,\n onFocus: _this.handleDropdownFocus\n },\n _this.renderMonthDropdown(i !== 0),\n _this.renderMonthYearDropdown(i !== 0),\n _this.renderYearDropdown(i !== 0)\n ),\n React.createElement(\n \"div\",\n { className: \"react-datepicker__day-names\" },\n _this.header(monthDate)\n )\n );\n };\n\n _this.renderCustomHeader = function (_ref2) {\n var monthDate = _ref2.monthDate,\n i = _ref2.i;\n\n if (i !== 0) {\n return null;\n }\n\n var prevMonthButtonDisabled = monthDisabledBefore(_this.state.date, _this.props);\n\n var nextMonthButtonDisabled = monthDisabledAfter(_this.state.date, _this.props);\n\n return React.createElement(\n \"div\",\n {\n className: \"react-datepicker__header react-datepicker__header--custom\",\n onFocus: _this.props.onDropdownFocus\n },\n _this.props.renderCustomHeader(_extends({}, _this.state, {\n changeMonth: _this.changeMonth,\n changeYear: _this.changeYear,\n decreaseMonth: _this.decreaseMonth,\n increaseMonth: _this.increaseMonth,\n prevMonthButtonDisabled: prevMonthButtonDisabled,\n nextMonthButtonDisabled: nextMonthButtonDisabled\n })),\n React.createElement(\n \"div\",\n { className: \"react-datepicker__day-names\" },\n _this.header(monthDate)\n )\n );\n };\n\n _this.renderMonths = function () {\n if (_this.props.showTimeSelectOnly) {\n return;\n }\n\n var monthList = [];\n for (var i = 0; i < _this.props.monthsShown; ++i) {\n var monthsToAdd = i - _this.props.monthSelectedIn;\n var monthDate = addMonths(_this.state.date, monthsToAdd);\n var monthKey = \"month-\" + i;\n monthList.push(React.createElement(\n \"div\",\n {\n key: monthKey,\n ref: function ref(div) {\n _this.monthContainer = div;\n },\n className: \"react-datepicker__month-container\"\n },\n _this.props.renderCustomHeader ? _this.renderCustomHeader({ monthDate: monthDate, i: i }) : _this.renderDefaultHeader({ monthDate: monthDate, i: i }),\n React.createElement(Month, {\n day: monthDate,\n dayClassName: _this.props.dayClassName,\n onDayClick: _this.handleDayClick,\n onDayMouseEnter: _this.handleDayMouseEnter,\n onMouseLeave: _this.handleMonthMouseLeave,\n onWeekSelect: _this.props.onWeekSelect,\n orderInDisplay: i,\n formatWeekNumber: _this.props.formatWeekNumber,\n locale: _this.props.locale,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n excludeDates: _this.props.excludeDates,\n highlightDates: _this.props.highlightDates,\n selectingDate: _this.state.selectingDate,\n includeDates: _this.props.includeDates,\n inline: _this.props.inline,\n fixedHeight: _this.props.fixedHeight,\n filterDate: _this.props.filterDate,\n preSelection: _this.props.preSelection,\n selected: _this.props.selected,\n selectsStart: _this.props.selectsStart,\n selectsEnd: _this.props.selectsEnd,\n showWeekNumbers: _this.props.showWeekNumbers,\n startDate: _this.props.startDate,\n endDate: _this.props.endDate,\n peekNextMonth: _this.props.peekNextMonth,\n setOpen: _this.props.setOpen,\n shouldCloseOnSelect: _this.props.shouldCloseOnSelect,\n renderDayContents: _this.props.renderDayContents,\n disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation\n })\n ));\n }\n return monthList;\n };\n\n _this.renderTimeSection = function () {\n if (_this.props.showTimeSelect && (_this.state.monthContainer || _this.props.showTimeSelectOnly)) {\n return React.createElement(Time, {\n selected: _this.props.selected,\n onChange: _this.props.onTimeChange,\n format: _this.props.timeFormat,\n includeTimes: _this.props.includeTimes,\n intervals: _this.props.timeIntervals,\n minTime: _this.props.minTime,\n maxTime: _this.props.maxTime,\n excludeTimes: _this.props.excludeTimes,\n timeCaption: _this.props.timeCaption,\n todayButton: _this.props.todayButton,\n showMonthDropdown: _this.props.showMonthDropdown,\n showMonthYearDropdown: _this.props.showMonthYearDropdown,\n showYearDropdown: _this.props.showYearDropdown,\n withPortal: _this.props.withPortal,\n monthRef: _this.state.monthContainer,\n injectTimes: _this.props.injectTimes\n });\n }\n };\n\n _this.state = {\n date: _this.getDateInView(),\n selectingDate: null,\n monthContainer: null\n };\n return _this;\n }\n\n Calendar.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n // monthContainer height is needed in time component\n // to determine the height for the ul in the time component\n // setState here so height is given after final component\n // layout is rendered\n if (this.props.showTimeSelect) {\n this.assignMonthContainer = function () {\n _this2.setState({ monthContainer: _this2.monthContainer });\n }();\n }\n };\n\n Calendar.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.preSelection && !isSameDay(this.props.preSelection, prevProps.preSelection)) {\n this.setState({\n date: this.props.preSelection\n });\n } else if (this.props.openToDate && !isSameDay(this.props.openToDate, prevProps.openToDate)) {\n this.setState({\n date: this.props.openToDate\n });\n }\n };\n\n Calendar.prototype.render = function render() {\n var Container = this.props.container || CalendarContainer;\n\n return React.createElement(\n Container,\n {\n className: classnames(\"react-datepicker\", this.props.className, {\n \"react-datepicker--time-only\": this.props.showTimeSelectOnly\n })\n },\n this.renderPreviousMonthButton(),\n this.renderNextMonthButton(),\n this.renderMonths(),\n this.renderTodayButton(),\n this.renderTimeSection(),\n this.props.children\n );\n };\n\n return Calendar;\n}(React.Component);\n\nCalendar.propTypes = {\n adjustDateOnChange: PropTypes.bool,\n className: PropTypes.string,\n children: PropTypes.node,\n container: PropTypes.func,\n dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array]).isRequired,\n dayClassName: PropTypes.func,\n disabledKeyboardNavigation: PropTypes.bool,\n dropdownMode: PropTypes.oneOf([\"scroll\", \"select\"]),\n endDate: PropTypes.instanceOf(Date),\n excludeDates: PropTypes.array,\n filterDate: PropTypes.func,\n fixedHeight: PropTypes.bool,\n formatWeekNumber: PropTypes.func,\n highlightDates: PropTypes.instanceOf(Map),\n includeDates: PropTypes.array,\n includeTimes: PropTypes.array,\n injectTimes: PropTypes.array,\n inline: PropTypes.bool,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n monthsShown: PropTypes.number,\n monthSelectedIn: PropTypes.number,\n onClickOutside: PropTypes.func.isRequired,\n onMonthChange: PropTypes.func,\n onYearChange: PropTypes.func,\n forceShowMonthNavigation: PropTypes.bool,\n onDropdownFocus: PropTypes.func,\n onSelect: PropTypes.func.isRequired,\n onWeekSelect: PropTypes.func,\n showTimeSelect: PropTypes.bool,\n showTimeSelectOnly: PropTypes.bool,\n timeFormat: PropTypes.string,\n timeIntervals: PropTypes.number,\n onTimeChange: PropTypes.func,\n minTime: PropTypes.instanceOf(Date),\n maxTime: PropTypes.instanceOf(Date),\n excludeTimes: PropTypes.array,\n timeCaption: PropTypes.string,\n openToDate: PropTypes.instanceOf(Date),\n peekNextMonth: PropTypes.bool,\n scrollableYearDropdown: PropTypes.bool,\n scrollableMonthYearDropdown: PropTypes.bool,\n preSelection: PropTypes.instanceOf(Date),\n selected: PropTypes.instanceOf(Date),\n selectsEnd: PropTypes.bool,\n selectsStart: PropTypes.bool,\n showMonthDropdown: PropTypes.bool,\n showMonthYearDropdown: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n showYearDropdown: PropTypes.bool,\n startDate: PropTypes.instanceOf(Date),\n todayButton: PropTypes.string,\n useWeekdaysShort: PropTypes.bool,\n formatWeekDay: PropTypes.func,\n withPortal: PropTypes.bool,\n weekLabel: PropTypes.string,\n yearDropdownItemNumber: PropTypes.number,\n setOpen: PropTypes.func,\n shouldCloseOnSelect: PropTypes.bool,\n useShortMonthInDropdown: PropTypes.bool,\n showDisabledMonthNavigation: PropTypes.bool,\n previousMonthButtonLabel: PropTypes.string,\n nextMonthButtonLabel: PropTypes.string,\n renderCustomHeader: PropTypes.func,\n renderDayContents: PropTypes.func\n};\n\nvar popperPlacementPositions = placements;\n\nvar PopperComponent = function (_React$Component) {\n inherits(PopperComponent, _React$Component);\n\n function PopperComponent() {\n classCallCheck(this, PopperComponent);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n PopperComponent.prototype.render = function render() {\n var _props = this.props,\n className = _props.className,\n hidePopper = _props.hidePopper,\n popperComponent = _props.popperComponent,\n popperModifiers = _props.popperModifiers,\n popperPlacement = _props.popperPlacement,\n popperProps = _props.popperProps,\n targetComponent = _props.targetComponent;\n\n\n var popper = void 0;\n\n if (!hidePopper) {\n var classes = classnames(\"react-datepicker-popper\", className);\n popper = React.createElement(\n Popper,\n _extends({\n modifiers: popperModifiers,\n placement: popperPlacement\n }, popperProps),\n function (_ref) {\n var ref = _ref.ref,\n style = _ref.style,\n placement = _ref.placement,\n arrowProps = _ref.arrowProps;\n return React.createElement(\n \"div\",\n _extends({ ref: ref, style: style }, {\n className: classes,\n \"data-placement\": placement\n }),\n React.cloneElement(popperComponent, { arrowProps: arrowProps })\n );\n }\n );\n }\n\n if (this.props.popperContainer) {\n popper = React.createElement(this.props.popperContainer, {}, popper);\n }\n\n return React.createElement(\n Manager,\n null,\n React.createElement(\n Reference,\n null,\n function (_ref2) {\n var ref = _ref2.ref;\n return React.createElement(\n \"div\",\n { ref: ref, className: \"react-datepicker-wrapper\" },\n targetComponent\n );\n }\n ),\n popper\n );\n };\n\n createClass(PopperComponent, null, [{\n key: \"defaultProps\",\n get: function get$$1() {\n return {\n hidePopper: true,\n popperModifiers: {\n preventOverflow: {\n enabled: true,\n escapeWithReference: true,\n boundariesElement: \"viewport\"\n }\n },\n popperProps: {},\n popperPlacement: \"bottom-start\"\n };\n }\n }]);\n return PopperComponent;\n}(React.Component);\n\nPopperComponent.propTypes = {\n className: PropTypes.string,\n hidePopper: PropTypes.bool,\n popperComponent: PropTypes.element,\n popperModifiers: PropTypes.object, // <datepicker/> props\n popperPlacement: PropTypes.oneOf(popperPlacementPositions), // <datepicker/> props\n popperContainer: PropTypes.func,\n popperProps: PropTypes.object,\n targetComponent: PropTypes.element\n};\n\nvar outsideClickIgnoreClass = \"react-datepicker-ignore-onclickoutside\";\nvar WrappedCalendar = onClickOutside(Calendar);\n\n// Compares dates year+month combinations\nfunction hasPreSelectionChanged(date1, date2) {\n if (date1 && date2) {\n return getMonth(date1) !== getMonth(date2) || getYear(date1) !== getYear(date2);\n }\n\n return date1 !== date2;\n}\n\nfunction hasSelectionChanged(date1, date2) {\n if (date1 && date2) {\n return !isEqual(date1, date2);\n }\n\n return false;\n}\n\n/**\n * General datepicker component.\n */\nvar INPUT_ERR_1 = \"Date input not valid.\";\n\nvar DatePicker = function (_React$Component) {\n inherits(DatePicker, _React$Component);\n createClass(DatePicker, null, [{\n key: \"defaultProps\",\n get: function get$$1() {\n return {\n allowSameDay: false,\n dateFormat: \"MM/dd/yyyy\",\n dateFormatCalendar: \"LLLL yyyy\",\n onChange: function onChange() {},\n\n disabled: false,\n disabledKeyboardNavigation: false,\n dropdownMode: \"scroll\",\n onFocus: function onFocus() {},\n onBlur: function onBlur() {},\n onKeyDown: function onKeyDown() {},\n onInputClick: function onInputClick() {},\n onSelect: function onSelect() {},\n onClickOutside: function onClickOutside$$1() {},\n onMonthChange: function onMonthChange() {},\n\n preventOpenOnFocus: false,\n onYearChange: function onYearChange() {},\n onInputError: function onInputError() {},\n\n monthsShown: 1,\n readOnly: false,\n withPortal: false,\n shouldCloseOnSelect: true,\n showTimeSelect: false,\n timeIntervals: 30,\n timeCaption: \"Time\",\n previousMonthButtonLabel: \"Previous Month\",\n nextMonthButtonLabel: \"Next month\",\n renderDayContents: function renderDayContents(date) {\n return date;\n },\n\n inlineFocusSelectedMonth: false\n };\n }\n }]);\n\n function DatePicker(props) {\n classCallCheck(this, DatePicker);\n\n var _this = possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _this.getPreSelection = function () {\n return _this.props.openToDate ? _this.props.openToDate : _this.props.selectsEnd && _this.props.startDate ? _this.props.startDate : _this.props.selectsStart && _this.props.endDate ? _this.props.endDate : newDate();\n };\n\n _this.calcInitialState = function () {\n var defaultPreSelection = _this.getPreSelection();\n var minDate = getEffectiveMinDate(_this.props);\n var maxDate = getEffectiveMaxDate(_this.props);\n var boundedPreSelection = minDate && isBefore(defaultPreSelection, minDate) ? minDate : maxDate && isAfter(defaultPreSelection, maxDate) ? maxDate : defaultPreSelection;\n return {\n open: _this.props.startOpen || false,\n preventFocus: false,\n preSelection: _this.props.selected ? _this.props.selected : boundedPreSelection,\n // transforming highlighted days (perhaps nested array)\n // to flat Map for faster access in day.jsx\n highlightDates: getHightLightDaysMap(_this.props.highlightDates),\n focused: false\n };\n };\n\n _this.clearPreventFocusTimeout = function () {\n if (_this.preventFocusTimeout) {\n clearTimeout(_this.preventFocusTimeout);\n }\n };\n\n _this.setFocus = function () {\n if (_this.input && _this.input.focus) {\n _this.input.focus();\n }\n };\n\n _this.setBlur = function () {\n if (_this.input && _this.input.blur) {\n _this.input.blur();\n }\n\n _this.cancelFocusInput();\n };\n\n _this.setOpen = function (open) {\n var skipSetBlur = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n _this.setState({\n open: open,\n preSelection: open && _this.state.open ? _this.state.preSelection : _this.calcInitialState().preSelection,\n lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE\n }, function () {\n if (!open) {\n _this.setState(function (prev) {\n return {\n focused: skipSetBlur ? prev.focused : false\n };\n }, function () {\n !skipSetBlur && _this.setBlur();\n\n _this.setState({ inputValue: null });\n });\n }\n });\n };\n\n _this.inputOk = function () {\n return isDate(_this.state.preSelection);\n };\n\n _this.isCalendarOpen = function () {\n return _this.props.open === undefined ? _this.state.open && !_this.props.disabled && !_this.props.readOnly : _this.props.open;\n };\n\n _this.handleFocus = function (event) {\n if (!_this.state.preventFocus) {\n _this.props.onFocus(event);\n if (!_this.props.preventOpenOnFocus && !_this.props.readOnly) {\n _this.setOpen(true);\n }\n }\n _this.setState({ focused: true });\n };\n\n _this.cancelFocusInput = function () {\n clearTimeout(_this.inputFocusTimeout);\n _this.inputFocusTimeout = null;\n };\n\n _this.deferFocusInput = function () {\n _this.cancelFocusInput();\n _this.inputFocusTimeout = setTimeout(function () {\n return _this.setFocus();\n }, 1);\n };\n\n _this.handleDropdownFocus = function () {\n _this.cancelFocusInput();\n };\n\n _this.handleBlur = function (event) {\n if (_this.state.open && !_this.props.withPortal) {\n _this.deferFocusInput();\n } else {\n _this.props.onBlur(event);\n }\n _this.setState({ focused: false });\n };\n\n _this.handleCalendarClickOutside = function (event) {\n if (!_this.props.inline) {\n _this.setOpen(false);\n }\n _this.props.onClickOutside(event);\n if (_this.props.withPortal) {\n event.preventDefault();\n }\n };\n\n _this.handleChange = function () {\n for (var _len = arguments.length, allArgs = Array(_len), _key = 0; _key < _len; _key++) {\n allArgs[_key] = arguments[_key];\n }\n\n var event = allArgs[0];\n if (_this.props.onChangeRaw) {\n _this.props.onChangeRaw.apply(_this, allArgs);\n if (typeof event.isDefaultPrevented !== \"function\" || event.isDefaultPrevented()) {\n return;\n }\n }\n _this.setState({\n inputValue: event.target.value,\n lastPreSelectChange: PRESELECT_CHANGE_VIA_INPUT\n });\n var date = parseDate(event.target.value, _this.props.dateFormat, _this.props.locale);\n if (date || !event.target.value) {\n _this.setSelected(date, event, true);\n }\n };\n\n _this.handleSelect = function (date, event, monthSelectedIn) {\n // Preventing onFocus event to fix issue\n // https://github.com/Hacker0x01/react-datepicker/issues/628\n _this.setState({ preventFocus: true }, function () {\n _this.preventFocusTimeout = setTimeout(function () {\n return _this.setState({ preventFocus: false });\n }, 50);\n return _this.preventFocusTimeout;\n });\n _this.setSelected(date, event, undefined, monthSelectedIn);\n if (!_this.props.shouldCloseOnSelect || _this.props.showTimeSelect) {\n _this.setPreSelection(date);\n } else if (!_this.props.inline) {\n _this.setOpen(false);\n }\n };\n\n _this.setSelected = function (date, event, keepInput, monthSelectedIn) {\n var changedDate = date;\n\n if (changedDate !== null && isDayDisabled(changedDate, _this.props)) {\n if (isOutOfBounds(changedDate, _this.props)) {\n _this.props.onChange(date, event);\n _this.props.onSelect(changedDate, event);\n }\n\n return;\n }\n\n if (!isSameDay(_this.props.selected, changedDate) || _this.props.allowSameDay) {\n if (changedDate !== null) {\n if (_this.props.selected) {\n var selected = _this.props.selected;\n if (keepInput) selected = newDate(changedDate);\n changedDate = setTime(changedDate, {\n hour: getHours(selected),\n minute: getMinutes(selected),\n second: getSeconds(selected)\n });\n }\n if (!_this.props.inline) {\n _this.setState({\n preSelection: changedDate\n });\n }\n if (_this.props.inline && _this.props.monthsShown > 1 && !_this.props.inlineFocusSelectedMonth) {\n _this.setState({ monthSelectedIn: monthSelectedIn });\n }\n }\n _this.props.onChange(changedDate, event);\n }\n\n _this.props.onSelect(changedDate, event);\n\n if (!keepInput) {\n _this.setState({ inputValue: null });\n }\n };\n\n _this.setPreSelection = function (date) {\n var isDateRangePresent = typeof _this.props.minDate !== \"undefined\" && typeof _this.props.maxDate !== \"undefined\";\n var isValidDateSelection = isDateRangePresent && date ? isDayInRange(date, _this.props.minDate, _this.props.maxDate) : true;\n if (isValidDateSelection) {\n _this.setState({\n preSelection: date\n });\n }\n };\n\n _this.handleTimeChange = function (time) {\n var selected = _this.props.selected ? _this.props.selected : _this.getPreSelection();\n var changedDate = setTime(selected, {\n hour: getHours(time),\n minute: getMinutes(time)\n });\n\n _this.setState({\n preSelection: changedDate\n });\n\n _this.props.onChange(changedDate);\n if (_this.props.shouldCloseOnSelect) {\n _this.setOpen(false);\n }\n _this.setState({ inputValue: null });\n };\n\n _this.onInputClick = function () {\n if (!_this.props.disabled && !_this.props.readOnly) {\n _this.setOpen(true);\n }\n\n _this.props.onInputClick();\n };\n\n _this.onInputKeyDown = function (event) {\n _this.props.onKeyDown(event);\n var eventKey = event.key;\n if (!_this.state.open && !_this.props.inline && !_this.props.preventOpenOnFocus) {\n if (eventKey === \"ArrowDown\" || eventKey === \"ArrowUp\") {\n _this.onInputClick();\n }\n return;\n }\n var copy = newDate(_this.state.preSelection);\n if (eventKey === \"Enter\") {\n event.preventDefault();\n if (_this.inputOk() && _this.state.lastPreSelectChange === PRESELECT_CHANGE_VIA_NAVIGATE) {\n _this.handleSelect(copy, event);\n !_this.props.shouldCloseOnSelect && _this.setPreSelection(copy);\n } else {\n _this.setOpen(false);\n }\n } else if (eventKey === \"Escape\") {\n event.preventDefault();\n\n _this.setOpen(false);\n if (!_this.inputOk()) {\n _this.props.onInputError({ code: 1, msg: INPUT_ERR_1 });\n }\n } else if (eventKey === \"Tab\") {\n _this.setOpen(false, true);\n } else if (!_this.props.disabledKeyboardNavigation) {\n var newSelection = void 0;\n switch (eventKey) {\n case \"ArrowLeft\":\n newSelection = subDays(copy, 1);\n break;\n case \"ArrowRight\":\n newSelection = addDays(copy, 1);\n break;\n case \"ArrowUp\":\n newSelection = subWeeks(copy, 1);\n break;\n case \"ArrowDown\":\n newSelection = addWeeks(copy, 1);\n break;\n case \"PageUp\":\n newSelection = subMonths(copy, 1);\n break;\n case \"PageDown\":\n newSelection = addMonths(copy, 1);\n break;\n case \"Home\":\n newSelection = subYears(copy, 1);\n break;\n case \"End\":\n newSelection = addYears(copy, 1);\n break;\n }\n if (!newSelection) {\n if (_this.props.onInputError) {\n _this.props.onInputError({ code: 1, msg: INPUT_ERR_1 });\n }\n return; // Let the input component handle this keydown\n }\n event.preventDefault();\n _this.setState({ lastPreSelectChange: PRESELECT_CHANGE_VIA_NAVIGATE });\n if (_this.props.adjustDateOnChange) {\n _this.setSelected(newSelection);\n }\n _this.setPreSelection(newSelection);\n }\n };\n\n _this.onClearClick = function (event) {\n if (event) {\n if (event.preventDefault) {\n event.preventDefault();\n }\n }\n _this.props.onChange(null, event);\n _this.setState({ inputValue: null });\n };\n\n _this.clear = function () {\n _this.onClearClick();\n };\n\n _this.renderCalendar = function () {\n if (!_this.props.inline && !_this.isCalendarOpen()) {\n return null;\n }\n return React.createElement(\n WrappedCalendar,\n {\n ref: function ref(elem) {\n _this.calendar = elem;\n },\n locale: _this.props.locale,\n adjustDateOnChange: _this.props.adjustDateOnChange,\n setOpen: _this.setOpen,\n shouldCloseOnSelect: _this.props.shouldCloseOnSelect,\n dateFormat: _this.props.dateFormatCalendar,\n useWeekdaysShort: _this.props.useWeekdaysShort,\n formatWeekDay: _this.props.formatWeekDay,\n dropdownMode: _this.props.dropdownMode,\n selected: _this.props.selected,\n preSelection: _this.state.preSelection,\n onSelect: _this.handleSelect,\n onWeekSelect: _this.props.onWeekSelect,\n openToDate: _this.props.openToDate,\n minDate: _this.props.minDate,\n maxDate: _this.props.maxDate,\n selectsStart: _this.props.selectsStart,\n selectsEnd: _this.props.selectsEnd,\n startDate: _this.props.startDate,\n endDate: _this.props.endDate,\n excludeDates: _this.props.excludeDates,\n filterDate: _this.props.filterDate,\n onClickOutside: _this.handleCalendarClickOutside,\n formatWeekNumber: _this.props.formatWeekNumber,\n highlightDates: _this.state.highlightDates,\n includeDates: _this.props.includeDates,\n includeTimes: _this.props.includeTimes,\n injectTimes: _this.props.injectTimes,\n inline: _this.props.inline,\n peekNextMonth: _this.props.peekNextMonth,\n showMonthDropdown: _this.props.showMonthDropdown,\n useShortMonthInDropdown: _this.props.useShortMonthInDropdown,\n showMonthYearDropdown: _this.props.showMonthYearDropdown,\n showWeekNumbers: _this.props.showWeekNumbers,\n showYearDropdown: _this.props.showYearDropdown,\n withPortal: _this.props.withPortal,\n forceShowMonthNavigation: _this.props.forceShowMonthNavigation,\n showDisabledMonthNavigation: _this.props.showDisabledMonthNavigation,\n scrollableYearDropdown: _this.props.scrollableYearDropdown,\n scrollableMonthYearDropdown: _this.props.scrollableMonthYearDropdown,\n todayButton: _this.props.todayButton,\n weekLabel: _this.props.weekLabel,\n outsideClickIgnoreClass: outsideClickIgnoreClass,\n fixedHeight: _this.props.fixedHeight,\n monthsShown: _this.props.monthsShown,\n monthSelectedIn: _this.state.monthSelectedIn,\n onDropdownFocus: _this.handleDropdownFocus,\n onMonthChange: _this.props.onMonthChange,\n onYearChange: _this.props.onYearChange,\n dayClassName: _this.props.dayClassName,\n showTimeSelect: _this.props.showTimeSelect,\n showTimeSelectOnly: _this.props.showTimeSelectOnly,\n onTimeChange: _this.handleTimeChange,\n timeFormat: _this.props.timeFormat,\n timeIntervals: _this.props.timeIntervals,\n minTime: _this.props.minTime,\n maxTime: _this.props.maxTime,\n excludeTimes: _this.props.excludeTimes,\n timeCaption: _this.props.timeCaption,\n className: _this.props.calendarClassName,\n container: _this.props.calendarContainer,\n yearDropdownItemNumber: _this.props.yearDropdownItemNumber,\n previousMonthButtonLabel: _this.props.previousMonthButtonLabel,\n nextMonthButtonLabel: _this.props.nextMonthButtonLabel,\n disabledKeyboardNavigation: _this.props.disabledKeyboardNavigation,\n renderCustomHeader: _this.props.renderCustomHeader,\n popperProps: _this.props.popperProps,\n renderDayContents: _this.props.renderDayContents\n },\n _this.props.children\n );\n };\n\n _this.renderDateInput = function () {\n var _classnames, _React$cloneElement;\n\n var className = classnames(_this.props.className, (_classnames = {}, _classnames[outsideClickIgnoreClass] = _this.state.open, _classnames));\n\n var customInput = _this.props.customInput || React.createElement(\"input\", { type: \"text\" });\n var customInputRef = _this.props.customInputRef || \"ref\";\n var inputValue = typeof _this.props.value === \"string\" ? _this.props.value : typeof _this.state.inputValue === \"string\" ? _this.state.inputValue : safeDateFormat(_this.props.selected, _this.props);\n\n return React.cloneElement(customInput, (_React$cloneElement = {}, _React$cloneElement[customInputRef] = function (input) {\n _this.input = input;\n }, _React$cloneElement.value = inputValue, _React$cloneElement.onBlur = _this.handleBlur, _React$cloneElement.onChange = _this.handleChange, _React$cloneElement.onClick = _this.onInputClick, _React$cloneElement.onFocus = _this.handleFocus, _React$cloneElement.onKeyDown = _this.onInputKeyDown, _React$cloneElement.id = _this.props.id, _React$cloneElement.name = _this.props.name, _React$cloneElement.autoFocus = _this.props.autoFocus, _React$cloneElement.placeholder = _this.props.placeholderText, _React$cloneElement.disabled = _this.props.disabled, _React$cloneElement.autoComplete = _this.props.autoComplete, _React$cloneElement.className = className, _React$cloneElement.title = _this.props.title, _React$cloneElement.readOnly = _this.props.readOnly, _React$cloneElement.required = _this.props.required, _React$cloneElement.tabIndex = _this.props.tabIndex, _React$cloneElement));\n };\n\n _this.renderClearButton = function () {\n if (_this.props.isClearable && _this.props.selected != null) {\n return React.createElement(\"button\", {\n type: \"button\",\n className: \"react-datepicker__close-icon\",\n onClick: _this.onClearClick,\n title: _this.props.clearButtonTitle,\n tabIndex: -1\n });\n } else {\n return null;\n }\n };\n\n _this.state = _this.calcInitialState();\n return _this;\n }\n\n DatePicker.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.inline && hasPreSelectionChanged(prevProps.selected, this.props.selected)) {\n this.setPreSelection(this.props.selected);\n }\n if (this.state.monthSelectedIn !== undefined && prevProps.monthsShown !== this.props.monthsShown) {\n this.setState({ monthSelectedIn: 0 });\n }\n if (prevProps.highlightDates !== this.props.highlightDates) {\n this.setState({\n highlightDates: getHightLightDaysMap(this.props.highlightDates)\n });\n }\n if (!prevState.focused && hasSelectionChanged(prevProps.selected, this.props.selected)) {\n this.setState({ inputValue: null });\n }\n };\n\n DatePicker.prototype.componentWillUnmount = function componentWillUnmount() {\n this.clearPreventFocusTimeout();\n };\n\n DatePicker.prototype.render = function render() {\n var calendar = this.renderCalendar();\n\n if (this.props.inline && !this.props.withPortal) {\n return calendar;\n }\n\n if (this.props.withPortal) {\n return React.createElement(\n \"div\",\n null,\n !this.props.inline ? React.createElement(\n \"div\",\n { className: \"react-datepicker__input-container\" },\n this.renderDateInput(),\n this.renderClearButton()\n ) : null,\n this.state.open || this.props.inline ? React.createElement(\n \"div\",\n { className: \"react-datepicker__portal\" },\n calendar\n ) : null\n );\n }\n\n return React.createElement(PopperComponent, {\n className: this.props.popperClassName,\n hidePopper: !this.isCalendarOpen(),\n popperModifiers: this.props.popperModifiers,\n targetComponent: React.createElement(\n \"div\",\n { className: \"react-datepicker__input-container\" },\n this.renderDateInput(),\n this.renderClearButton()\n ),\n popperContainer: this.props.popperContainer,\n popperComponent: calendar,\n popperPlacement: this.props.popperPlacement,\n popperProps: this.props.popperProps\n });\n };\n\n return DatePicker;\n}(React.Component);\n\nDatePicker.propTypes = {\n adjustDateOnChange: PropTypes.bool,\n allowSameDay: PropTypes.bool,\n autoComplete: PropTypes.string,\n autoFocus: PropTypes.bool,\n calendarClassName: PropTypes.string,\n calendarContainer: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n customInput: PropTypes.element,\n customInputRef: PropTypes.string,\n // eslint-disable-next-line react/no-unused-prop-types\n dateFormat: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n dateFormatCalendar: PropTypes.string,\n dayClassName: PropTypes.func,\n disabled: PropTypes.bool,\n disabledKeyboardNavigation: PropTypes.bool,\n dropdownMode: PropTypes.oneOf([\"scroll\", \"select\"]).isRequired,\n endDate: PropTypes.instanceOf(Date),\n excludeDates: PropTypes.array,\n filterDate: PropTypes.func,\n fixedHeight: PropTypes.bool,\n formatWeekNumber: PropTypes.func,\n highlightDates: PropTypes.array,\n id: PropTypes.string,\n includeDates: PropTypes.array,\n includeTimes: PropTypes.array,\n injectTimes: PropTypes.array,\n inline: PropTypes.bool,\n isClearable: PropTypes.bool,\n locale: PropTypes.string,\n maxDate: PropTypes.instanceOf(Date),\n minDate: PropTypes.instanceOf(Date),\n monthsShown: PropTypes.number,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n onSelect: PropTypes.func,\n onWeekSelect: PropTypes.func,\n onClickOutside: PropTypes.func,\n onChangeRaw: PropTypes.func,\n onFocus: PropTypes.func,\n onInputClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMonthChange: PropTypes.func,\n onYearChange: PropTypes.func,\n onInputError: PropTypes.func,\n open: PropTypes.bool,\n openToDate: PropTypes.instanceOf(Date),\n peekNextMonth: PropTypes.bool,\n placeholderText: PropTypes.string,\n popperContainer: PropTypes.func,\n popperClassName: PropTypes.string, // <PopperComponent/> props\n popperModifiers: PropTypes.object, // <PopperComponent/> props\n popperPlacement: PropTypes.oneOf(popperPlacementPositions), // <PopperComponent/> props\n popperProps: PropTypes.object,\n preventOpenOnFocus: PropTypes.bool,\n readOnly: PropTypes.bool,\n required: PropTypes.bool,\n scrollableYearDropdown: PropTypes.bool,\n scrollableMonthYearDropdown: PropTypes.bool,\n selected: PropTypes.instanceOf(Date),\n selectsEnd: PropTypes.bool,\n selectsStart: PropTypes.bool,\n showMonthDropdown: PropTypes.bool,\n showMonthYearDropdown: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n showYearDropdown: PropTypes.bool,\n forceShowMonthNavigation: PropTypes.bool,\n showDisabledMonthNavigation: PropTypes.bool,\n startDate: PropTypes.instanceOf(Date),\n startOpen: PropTypes.bool,\n tabIndex: PropTypes.number,\n timeCaption: PropTypes.string,\n title: PropTypes.string,\n todayButton: PropTypes.node,\n useWeekdaysShort: PropTypes.bool,\n formatWeekDay: PropTypes.func,\n value: PropTypes.string,\n weekLabel: PropTypes.string,\n withPortal: PropTypes.bool,\n yearDropdownItemNumber: PropTypes.number,\n shouldCloseOnSelect: PropTypes.bool,\n showTimeSelect: PropTypes.bool,\n showTimeSelectOnly: PropTypes.bool,\n timeFormat: PropTypes.string,\n timeIntervals: PropTypes.number,\n minTime: PropTypes.instanceOf(Date),\n maxTime: PropTypes.instanceOf(Date),\n excludeTimes: PropTypes.array,\n useShortMonthInDropdown: PropTypes.bool,\n clearButtonTitle: PropTypes.string,\n previousMonthButtonLabel: PropTypes.string,\n nextMonthButtonLabel: PropTypes.string,\n renderCustomHeader: PropTypes.func,\n renderDayContents: PropTypes.func,\n inlineFocusSelectedMonth: PropTypes.bool\n};\nvar PRESELECT_CHANGE_VIA_INPUT = \"input\";\nvar PRESELECT_CHANGE_VIA_NAVIGATE = \"navigate\";\n\nexport { registerLocale, setDefaultLocale, getDefaultLocale, CalendarContainer };\nexport default DatePicker;\n","/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * var result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * var result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var argStr = Object.prototype.toString.call(argument)\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && argStr === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument)\n } else {\n if (\n (typeof argument === 'string' || argStr === '[object String]') &&\n typeof console !== 'undefined'\n ) {\n console.warn(\n \"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fpAk2\"\n )\n console.warn(new Error().stack)\n }\n return new Date(NaN)\n }\n}\n","import toDate from '../toDate/index.js'\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `true` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n var date = toDate(dirtyDate)\n return !isNaN(date)\n}\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * var result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * var result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * var result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * var result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n if (arguments.length < 1) {\n throw new TypeError(\n '1 argument required, but only ' + arguments.length + ' present'\n )\n }\n\n return (\n value instanceof Date ||\n (typeof value === 'object' &&\n Object.prototype.toString.call(value) === '[object Date]')\n )\n}\n","// This file is generated automatically by `scripts/build/indices.js`. Please, don't change it.\n\nexport { default as addDays } from './addDays/index.js'\nexport { default as addHours } from './addHours/index.js'\nexport { default as addISOWeekYears } from './addISOWeekYears/index.js'\nexport { default as addMilliseconds } from './addMilliseconds/index.js'\nexport { default as addMinutes } from './addMinutes/index.js'\nexport { default as addMonths } from './addMonths/index.js'\nexport { default as addQuarters } from './addQuarters/index.js'\nexport { default as addSeconds } from './addSeconds/index.js'\nexport { default as addWeeks } from './addWeeks/index.js'\nexport { default as addYears } from './addYears/index.js'\nexport {\n default as areIntervalsOverlapping\n} from './areIntervalsOverlapping/index.js'\nexport { default as closestIndexTo } from './closestIndexTo/index.js'\nexport { default as closestTo } from './closestTo/index.js'\nexport { default as compareAsc } from './compareAsc/index.js'\nexport { default as compareDesc } from './compareDesc/index.js'\nexport {\n default as differenceInCalendarDays\n} from './differenceInCalendarDays/index.js'\nexport {\n default as differenceInCalendarISOWeekYears\n} from './differenceInCalendarISOWeekYears/index.js'\nexport {\n default as differenceInCalendarISOWeeks\n} from './differenceInCalendarISOWeeks/index.js'\nexport {\n default as differenceInCalendarMonths\n} from './differenceInCalendarMonths/index.js'\nexport {\n default as differenceInCalendarQuarters\n} from './differenceInCalendarQuarters/index.js'\nexport {\n default as differenceInCalendarWeeks\n} from './differenceInCalendarWeeks/index.js'\nexport {\n default as differenceInCalendarYears\n} from './differenceInCalendarYears/index.js'\nexport { default as differenceInDays } from './differenceInDays/index.js'\nexport { default as differenceInHours } from './differenceInHours/index.js'\nexport {\n default as differenceInISOWeekYears\n} from './differenceInISOWeekYears/index.js'\nexport {\n default as differenceInMilliseconds\n} from './differenceInMilliseconds/index.js'\nexport { default as differenceInMinutes } from './differenceInMinutes/index.js'\nexport { default as differenceInMonths } from './differenceInMonths/index.js'\nexport {\n default as differenceInQuarters\n} from './differenceInQuarters/index.js'\nexport { default as differenceInSeconds } from './differenceInSeconds/index.js'\nexport { default as differenceInWeeks } from './differenceInWeeks/index.js'\nexport { default as differenceInYears } from './differenceInYears/index.js'\nexport { default as eachDayOfInterval } from './eachDayOfInterval/index.js'\nexport { default as eachWeekOfInterval } from './eachWeekOfInterval/index.js'\nexport {\n default as eachWeekendOfInterval\n} from './eachWeekendOfInterval/index.js'\nexport { default as eachWeekendOfMonth } from './eachWeekendOfMonth/index.js'\nexport { default as eachWeekendOfYear } from './eachWeekendOfYear/index.js'\nexport { default as endOfDay } from './endOfDay/index.js'\nexport { default as endOfDecade } from './endOfDecade/index.js'\nexport { default as endOfHour } from './endOfHour/index.js'\nexport { default as endOfISOWeek } from './endOfISOWeek/index.js'\nexport { default as endOfISOWeekYear } from './endOfISOWeekYear/index.js'\nexport { default as endOfMinute } from './endOfMinute/index.js'\nexport { default as endOfMonth } from './endOfMonth/index.js'\nexport { default as endOfQuarter } from './endOfQuarter/index.js'\nexport { default as endOfSecond } from './endOfSecond/index.js'\nexport { default as endOfWeek } from './endOfWeek/index.js'\nexport { default as endOfYear } from './endOfYear/index.js'\nexport { default as format } from './format/index.js'\nexport { default as formatDistance } from './formatDistance/index.js'\nexport {\n default as formatDistanceStrict\n} from './formatDistanceStrict/index.js'\nexport { default as formatRelative } from './formatRelative/index.js'\nexport { default as fromUnixTime } from './fromUnixTime/index.js'\nexport { default as getDate } from './getDate/index.js'\nexport { default as getDay } from './getDay/index.js'\nexport { default as getDayOfYear } from './getDayOfYear/index.js'\nexport { default as getDaysInMonth } from './getDaysInMonth/index.js'\nexport { default as getDaysInYear } from './getDaysInYear/index.js'\nexport { default as getDecade } from './getDecade/index.js'\nexport { default as getHours } from './getHours/index.js'\nexport { default as getISODay } from './getISODay/index.js'\nexport { default as getISOWeek } from './getISOWeek/index.js'\nexport { default as getISOWeekYear } from './getISOWeekYear/index.js'\nexport { default as getISOWeeksInYear } from './getISOWeeksInYear/index.js'\nexport { default as getMilliseconds } from './getMilliseconds/index.js'\nexport { default as getMinutes } from './getMinutes/index.js'\nexport { default as getMonth } from './getMonth/index.js'\nexport {\n default as getOverlappingDaysInIntervals\n} from './getOverlappingDaysInIntervals/index.js'\nexport { default as getQuarter } from './getQuarter/index.js'\nexport { default as getSeconds } from './getSeconds/index.js'\nexport { default as getTime } from './getTime/index.js'\nexport { default as getUnixTime } from './getUnixTime/index.js'\nexport { default as getWeek } from './getWeek/index.js'\nexport { default as getWeekOfMonth } from './getWeekOfMonth/index.js'\nexport { default as getWeekYear } from './getWeekYear/index.js'\nexport { default as getWeeksInMonth } from './getWeeksInMonth/index.js'\nexport { default as getYear } from './getYear/index.js'\nexport { default as isAfter } from './isAfter/index.js'\nexport { default as isBefore } from './isBefore/index.js'\nexport { default as isDate } from './isDate/index.js'\nexport { default as isEqual } from './isEqual/index.js'\nexport { default as isFirstDayOfMonth } from './isFirstDayOfMonth/index.js'\nexport { default as isFriday } from './isFriday/index.js'\nexport { default as isLastDayOfMonth } from './isLastDayOfMonth/index.js'\nexport { default as isLeapYear } from './isLeapYear/index.js'\nexport { default as isMonday } from './isMonday/index.js'\nexport { default as isSameDay } from './isSameDay/index.js'\nexport { default as isSameHour } from './isSameHour/index.js'\nexport { default as isSameISOWeek } from './isSameISOWeek/index.js'\nexport { default as isSameISOWeekYear } from './isSameISOWeekYear/index.js'\nexport { default as isSameMinute } from './isSameMinute/index.js'\nexport { default as isSameMonth } from './isSameMonth/index.js'\nexport { default as isSameQuarter } from './isSameQuarter/index.js'\nexport { default as isSameSecond } from './isSameSecond/index.js'\nexport { default as isSameWeek } from './isSameWeek/index.js'\nexport { default as isSameYear } from './isSameYear/index.js'\nexport { default as isSaturday } from './isSaturday/index.js'\nexport { default as isSunday } from './isSunday/index.js'\nexport { default as isThursday } from './isThursday/index.js'\nexport { default as isTuesday } from './isTuesday/index.js'\nexport { default as isValid } from './isValid/index.js'\nexport { default as isWednesday } from './isWednesday/index.js'\nexport { default as isWeekend } from './isWeekend/index.js'\nexport { default as isWithinInterval } from './isWithinInterval/index.js'\nexport { default as lastDayOfDecade } from './lastDayOfDecade/index.js'\nexport { default as lastDayOfISOWeek } from './lastDayOfISOWeek/index.js'\nexport {\n default as lastDayOfISOWeekYear\n} from './lastDayOfISOWeekYear/index.js'\nexport { default as lastDayOfMonth } from './lastDayOfMonth/index.js'\nexport { default as lastDayOfQuarter } from './lastDayOfQuarter/index.js'\nexport { default as lastDayOfWeek } from './lastDayOfWeek/index.js'\nexport { default as lastDayOfYear } from './lastDayOfYear/index.js'\nexport { default as lightFormat } from './lightFormat/index.js'\nexport { default as max } from './max/index.js'\nexport { default as min } from './min/index.js'\nexport { default as parse } from './parse/index.js'\nexport { default as parseISO } from './parseISO/index.js'\nexport {\n default as roundToNearestMinutes\n} from './roundToNearestMinutes/index.js'\nexport { default as setDate } from './setDate/index.js'\nexport { default as setDay } from './setDay/index.js'\nexport { default as setDayOfYear } from './setDayOfYear/index.js'\nexport { default as setHours } from './setHours/index.js'\nexport { default as setISODay } from './setISODay/index.js'\nexport { default as setISOWeek } from './setISOWeek/index.js'\nexport { default as setISOWeekYear } from './setISOWeekYear/index.js'\nexport { default as setMilliseconds } from './setMilliseconds/index.js'\nexport { default as setMinutes } from './setMinutes/index.js'\nexport { default as setMonth } from './setMonth/index.js'\nexport { default as setQuarter } from './setQuarter/index.js'\nexport { default as setSeconds } from './setSeconds/index.js'\nexport { default as setWeek } from './setWeek/index.js'\nexport { default as setWeekYear } from './setWeekYear/index.js'\nexport { default as setYear } from './setYear/index.js'\nexport { default as startOfDay } from './startOfDay/index.js'\nexport { default as startOfDecade } from './startOfDecade/index.js'\nexport { default as startOfHour } from './startOfHour/index.js'\nexport { default as startOfISOWeek } from './startOfISOWeek/index.js'\nexport { default as startOfISOWeekYear } from './startOfISOWeekYear/index.js'\nexport { default as startOfMinute } from './startOfMinute/index.js'\nexport { default as startOfMonth } from './startOfMonth/index.js'\nexport { default as startOfQuarter } from './startOfQuarter/index.js'\nexport { default as startOfSecond } from './startOfSecond/index.js'\nexport { default as startOfWeek } from './startOfWeek/index.js'\nexport { default as startOfWeekYear } from './startOfWeekYear/index.js'\nexport { default as startOfYear } from './startOfYear/index.js'\nexport { default as subDays } from './subDays/index.js'\nexport { default as subHours } from './subHours/index.js'\nexport { default as subISOWeekYears } from './subISOWeekYears/index.js'\nexport { default as subMilliseconds } from './subMilliseconds/index.js'\nexport { default as subMinutes } from './subMinutes/index.js'\nexport { default as subMonths } from './subMonths/index.js'\nexport { default as subQuarters } from './subQuarters/index.js'\nexport { default as subSeconds } from './subSeconds/index.js'\nexport { default as subWeeks } from './subWeeks/index.js'\nexport { default as subYears } from './subYears/index.js'\nexport { default as toDate } from './toDate/index.js'\n","import { isValid } from 'date-fns'\n\nexport const useDatepicker = (setFieldValue, setFieldTouched, name) => {\n const handleChangeRaw = e => {\n const { name, value } = e.target\n const validChars = /^\\d{0,2}[./]{0,1}\\d{0,2}[./]{0,1}\\d{0,4}$/\n if (!validChars.test(value)) {\n e.preventDefault()\n }\n\n if (isValid(new Date(value))) {\n setFieldValue(name, value)\n setFieldTouched(name, true)\n }\n }\n\n const handleChange = date => {\n const dateInstance = new Date(date)\n if (isValid(dateInstance)) {\n setFieldValue(name, dateInstance)\n setFieldTouched(name, true)\n }\n }\n\n return [\n handleChangeRaw,\n handleChange,\n ]\n}\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport DatePickerCmp from 'react-datepicker'\nimport { getIn } from 'formik'\nimport 'react-datepicker/dist/react-datepicker.css'\nimport { useDatepicker } from './useDatepicker'\nimport useLabel from '../useLabel'\nimport '../Input/styles.scss'\n\nexport const Datepicker = ({\n formik: {\n values, setFieldValue, setFieldTouched,\n },\n dateFormat,\n disabled,\n name,\n id,\n placeholder,\n onFocus,\n onBlur,\n ...rest\n}) => {\n const [handleChangeRaw, handleChange] = useDatepicker(setFieldValue, setFieldTouched, name)\n\n return (\n <DatePickerCmp\n {...rest}\n id={id || name}\n name={name}\n selected={getIn(values, name) ? new Date(getIn(values, name)) : null}\n placeholderText={placeholder}\n dateFormat={dateFormat}\n disabledKeyboardNavigation\n autoComplete=\"off\"\n onChangeRaw={handleChangeRaw}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n />\n )\n}\n\nDatepicker.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** @ignore */\n onFocus: PropTypes.func.isRequired,\n /** @ignore */\n onBlur: PropTypes.func.isRequired,\n /** Sets the Name of the Datepicker Field */\n name: PropTypes.string.isRequired,\n /** Sets an Id for the Datepicker, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Adds a custom class to the Datepicker wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Datepicker wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Sets the main Label for the Datepicker */\n label: PropTypes.string,\n /** Sets a hint text after/below the Datepicker */\n hint: PropTypes.string,\n /** Sets the desired date format */\n dateFormat: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Sets the Datepicker as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n /** Disables the Datepicker Field */\n disabled: PropTypes.bool,\n}\n\nDatepicker.defaultProps = {\n id: null,\n className: null,\n style: null,\n label: null,\n hint: null,\n dateFormat: 'dd/MM/yyyy',\n placeholder: null,\n required: false,\n disabled: false,\n}\nexport default useLabel('datePicker')(Datepicker)\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","export var COMMON_MIME_TYPES = new Map([\n ['avi', 'video/avi'],\n ['gif', 'image/gif'],\n ['ico', 'image/x-icon'],\n ['jpeg', 'image/jpeg'],\n ['jpg', 'image/jpeg'],\n ['mkv', 'video/x-matroska'],\n ['mov', 'video/quicktime'],\n ['mp4', 'video/mp4'],\n ['pdf', 'application/pdf'],\n ['png', 'image/png'],\n ['zip', 'application/zip'],\n ['doc', 'application/msword'],\n ['docx', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document']\n]);\nexport function toFileWithPath(file, path) {\n var f = withMimeType(file);\n var webkitRelativePath = file.webkitRelativePath;\n Object.defineProperty(f, 'path', {\n value: typeof path === 'string'\n ? path\n // If <input webkitdirectory> is set,\n // the File will have a {webkitRelativePath} property\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/webkitdirectory\n : typeof webkitRelativePath === 'string' && webkitRelativePath.length > 0\n ? webkitRelativePath\n : file.name,\n writable: false,\n configurable: false,\n enumerable: true\n });\n return f;\n}\nfunction withMimeType(file) {\n var name = file.name;\n var hasExtension = name && name.lastIndexOf('.') !== -1;\n if (hasExtension && !file.type) {\n var ext = name.split('.')\n .pop().toLowerCase();\n var type = COMMON_MIME_TYPES.get(ext);\n if (type) {\n Object.defineProperty(file, 'type', {\n value: type,\n writable: false,\n configurable: false,\n enumerable: true\n });\n }\n }\n return file;\n}\n//# sourceMappingURL=file.js.map","import * as tslib_1 from \"tslib\";\nimport { toFileWithPath } from './file';\nvar FILES_TO_IGNORE = [\n '.DS_Store',\n 'Thumbs.db' // Windows\n];\n/**\n * Convert a DragEvent's DataTrasfer object to a list of File objects\n * NOTE: If some of the items are folders,\n * everything will be flattened and placed in the same list but the paths will be kept as a {path} property.\n * @param evt\n */\nexport function fromEvent(evt) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, isDragEvt(evt) && evt.dataTransfer\n ? getDataTransferFiles(evt.dataTransfer, evt.type)\n : getInputFiles(evt)];\n });\n });\n}\nfunction isDragEvt(value) {\n return !!value.dataTransfer;\n}\nfunction getInputFiles(evt) {\n var files = isInput(evt.target)\n ? evt.target.files\n ? Array.from(evt.target.files)\n : []\n : [];\n return files.map(function (file) { return toFileWithPath(file); });\n}\nfunction isInput(value) {\n return value !== null;\n}\nfunction getDataTransferFiles(dt, type) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var items, files;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n items = Array.from(dt.items)\n .filter(function (item) { return item.kind === 'file'; });\n if (!(type === 'drop')) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.all(items.map(function (item) { return toFilePromises(item); }))];\n case 1:\n files = _a.sent();\n return [2 /*return*/, flatten(files)\n .filter(function (file) { return !FILES_TO_IGNORE.includes(file.name); })];\n case 2: return [2 /*return*/, items];\n }\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem\nfunction toFilePromises(item) {\n if (typeof item.webkitGetAsEntry !== 'function') {\n return fromDataTransferItem(item);\n }\n var entry = item.webkitGetAsEntry();\n // Safari supports dropping an image node from a different window and can be retrieved using\n // the DataTransferItem.getAsFile() API\n // NOTE: FileSystemEntry.file() throws if trying to get the file\n if (entry && entry.isDirectory) {\n return fromDirEntry(entry);\n }\n return fromDataTransferItem(item);\n}\nfunction flatten(items) {\n return items.reduce(function (acc, files) { return tslib_1.__spread(acc, (Array.isArray(files) ? flatten(files) : [files])); }, []);\n}\nfunction fromDataTransferItem(item) {\n var file = item.getAsFile();\n if (!file) {\n return Promise.reject(item + \" is not a File\");\n }\n var fwp = toFileWithPath(file);\n return Promise.resolve(fwp);\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry\nfunction fromEntry(entry) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, entry.isDirectory ? fromDirEntry(entry) : fromFileEntry(entry)];\n });\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry\nfunction fromDirEntry(entry) {\n var reader = entry.createReader();\n return new Promise(function (resolve, reject) {\n var entries = [];\n function readEntries() {\n var _this = this;\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryEntry/createReader\n // https://developer.mozilla.org/en-US/docs/Web/API/FileSystemDirectoryReader/readEntries\n reader.readEntries(function (batch) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var files, err_1, items;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!batch.length) return [3 /*break*/, 5];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(entries)];\n case 2:\n files = _a.sent();\n resolve(files);\n return [3 /*break*/, 4];\n case 3:\n err_1 = _a.sent();\n reject(err_1);\n return [3 /*break*/, 4];\n case 4: return [3 /*break*/, 6];\n case 5:\n items = Promise.all(batch.map(fromEntry));\n entries.push(items);\n // Continue reading\n readEntries();\n _a.label = 6;\n case 6: return [2 /*return*/];\n }\n });\n }); }, function (err) {\n reject(err);\n });\n }\n readEntries();\n });\n}\n// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry\nfunction fromFileEntry(entry) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve, reject) {\n entry.file(function (file) {\n var fwp = toFileWithPath(file, entry.fullPath);\n resolve(fwp);\n }, function (err) {\n reject(err);\n });\n })];\n });\n });\n}\n//# sourceMappingURL=file-selector.js.map","module.exports=function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r={};return n.m=t,n.c=r,n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:e})},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,\"a\",r),r},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p=\"\",n(n.s=13)}([function(t,n){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){var r=t.exports={version:\"2.5.0\"};\"number\"==typeof __e&&(__e=r)},function(t,n,r){t.exports=!r(4)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(32)(\"wks\"),o=r(9),i=r(0).Symbol,u=\"function\"==typeof i;(t.exports=function(t){return e[t]||(e[t]=u&&i[t]||(u?i:o)(\"Symbol.\"+t))}).store=e},function(t,n,r){var e=r(0),o=r(2),i=r(8),u=r(22),c=r(10),f=function(t,n,r){var a,s,p,l,v=t&f.F,y=t&f.G,h=t&f.S,d=t&f.P,x=t&f.B,g=y?e:h?e[n]||(e[n]={}):(e[n]||{}).prototype,m=y?o:o[n]||(o[n]={}),b=m.prototype||(m.prototype={});y&&(r=n);for(a in r)s=!v&&g&&void 0!==g[a],p=(s?g:r)[a],l=x&&s?c(p,e):d&&\"function\"==typeof p?c(Function.call,p):p,g&&u(g,a,p,t&f.U),m[a]!=p&&i(m,a,l),d&&b[a]!=p&&(b[a]=p)};e.core=o,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},function(t,n,r){var e=r(16),o=r(21);t.exports=r(3)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+e).toString(36))}},function(t,n,r){var e=r(24);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,r){var e=r(28),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){\"use strict\";n.__esModule=!0,n.default=function(t,n){if(t&&n){var r=Array.isArray(n)?n:n.split(\",\"),e=t.name||\"\",o=t.type||\"\",i=o.replace(/\\/.*$/,\"\");return r.some(function(t){var n=t.trim();return\".\"===n.charAt(0)?e.toLowerCase().endsWith(n.toLowerCase()):n.endsWith(\"/*\")?i===n.replace(/\\/.*$/,\"\"):o===n})}return!0},r(14),r(34)},function(t,n,r){r(15),t.exports=r(2).Array.some},function(t,n,r){\"use strict\";var e=r(7),o=r(25)(3);e(e.P+e.F*!r(33)([].some,!0),\"Array\",{some:function(t){return o(this,t,arguments[1])}})},function(t,n,r){var e=r(17),o=r(18),i=r(20),u=Object.defineProperty;n.f=r(3)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return u(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(1);t.exports=function(t){if(!e(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n,r){t.exports=!r(3)&&!r(4)(function(){return 7!=Object.defineProperty(r(19)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,n,r){var e=r(1),o=r(0).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n,r){var e=r(1);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if(\"function\"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(0),o=r(8),i=r(23),u=r(9)(\"src\"),c=Function.toString,f=(\"\"+c).split(\"toString\");r(2).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,r,c){var a=\"function\"==typeof r;a&&(i(r,\"name\")||o(r,\"name\",n)),t[n]!==r&&(a&&(i(r,u)||o(r,u,t[n]?\"\"+t[n]:f.join(String(n)))),t===e?t[n]=r:c?t[n]?t[n]=r:o(t,n,r):(delete t[n],o(t,n,r)))})(Function.prototype,\"toString\",function(){return\"function\"==typeof this&&this[u]||c.call(this)})},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,n,r){var e=r(10),o=r(26),i=r(27),u=r(12),c=r(29);t.exports=function(t,n){var r=1==t,f=2==t,a=3==t,s=4==t,p=6==t,l=5==t||p,v=n||c;return function(n,c,y){for(var h,d,x=i(n),g=o(x),m=e(c,y,3),b=u(g.length),_=0,w=r?v(n,b):f?v(n,0):void 0;b>_;_++)if((l||_ in g)&&(h=g[_],d=m(h,_,x),t))if(r)w[_]=d;else if(d)switch(t){case 3:return!0;case 5:return h;case 6:return _;case 2:w.push(h)}else if(s)return!1;return p?-1:a||s?s:w}}},function(t,n,r){var e=r(5);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==e(t)?t.split(\"\"):Object(t)}},function(t,n,r){var e=r(11);t.exports=function(t){return Object(e(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(30);t.exports=function(t,n){return new(e(t))(n)}},function(t,n,r){var e=r(1),o=r(31),i=r(6)(\"species\");t.exports=function(t){var n;return o(t)&&(n=t.constructor,\"function\"!=typeof n||n!==Array&&!o(n.prototype)||(n=void 0),e(n)&&null===(n=n[i])&&(n=void 0)),void 0===n?Array:n}},function(t,n,r){var e=r(5);t.exports=Array.isArray||function(t){return\"Array\"==e(t)}},function(t,n,r){var e=r(0),o=e[\"__core-js_shared__\"]||(e[\"__core-js_shared__\"]={});t.exports=function(t){return o[t]||(o[t]={})}},function(t,n,r){\"use strict\";var e=r(4);t.exports=function(t,n){return!!t&&e(function(){n?t.call(null,function(){},1):t.call(null)})}},function(t,n,r){r(35),t.exports=r(2).String.endsWith},function(t,n,r){\"use strict\";var e=r(7),o=r(12),i=r(36),u=\"\".endsWith;e(e.P+e.F*r(38)(\"endsWith\"),\"String\",{endsWith:function(t){var n=i(this,t,\"endsWith\"),r=arguments.length>1?arguments[1]:void 0,e=o(n.length),c=void 0===r?e:Math.min(o(r),e),f=String(t);return u?u.call(n,f,c):n.slice(c-f.length,c)===f}})},function(t,n,r){var e=r(37),o=r(11);t.exports=function(t,n,r){if(e(n))throw TypeError(\"String#\"+r+\" doesn't accept regex!\");return String(o(t))}},function(t,n,r){var e=r(1),o=r(5),i=r(6)(\"match\");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:\"RegExp\"==o(t))}},function(t,n,r){var e=r(6)(\"match\");t.exports=function(t){var n=/./;try{\"/./\"[t](n)}catch(r){try{return n[e]=!1,!\"/./\"[t](n)}catch(t){}}return!0}}]);","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport accepts from 'attr-accept';\n\nexport var supportMultiple = typeof document !== 'undefined' && document && document.createElement ? 'multiple' in document.createElement('input') : true;\n\n// Firefox versions prior to 53 return a bogus MIME type for every file drag, so dragovers with\n// that MIME type will always be accepted\nexport function fileAccepted(file, accept) {\n return file.type === 'application/x-moz-file' || accepts(file, accept);\n}\n\nexport function fileMatchSize(file, maxSize, minSize) {\n return file.size <= maxSize && file.size >= minSize;\n}\n\nexport function allFilesAccepted(files, accept) {\n return files.every(function (file) {\n return fileAccepted(file, accept);\n });\n}\n\n// React's synthetic events has evt.isPropagationStopped,\n// but to remain compatibility with other libs (Preact) fall back\n// to check evt.cancelBubble\nexport function isPropagationStopped(evt) {\n if (typeof evt.isPropagationStopped === 'function') {\n return evt.isPropagationStopped();\n } else if (typeof evt.cancelBubble !== 'undefined') {\n return evt.cancelBubble;\n }\n return false;\n}\n\n// React's synthetic events has evt.isDefaultPrevented,\n// but to remain compatibility with other libs (Preact) first\n// check evt.defaultPrevented\nexport function isDefaultPrevented(evt) {\n if (typeof evt.defaultPrevented !== 'undefined') {\n return evt.defaultPrevented;\n } else if (typeof evt.isDefaultPrevented === 'function') {\n return evt.isDefaultPrevented();\n }\n return false;\n}\n\nexport function isDragDataWithFiles(evt) {\n if (!evt.dataTransfer) {\n return true;\n }\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types\n // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file\n return Array.prototype.some.call(evt.dataTransfer.types, function (type) {\n return type === 'Files' || type === 'application/x-moz-file';\n });\n}\n\nexport function isKindFile(item) {\n return (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === 'object' && item !== null && item.kind === 'file';\n}\n\n// allow the entire document to be a drag target\nexport function onDocumentDragOver(evt) {\n evt.preventDefault();\n}\n\nfunction isIe(userAgent) {\n return userAgent.indexOf('MSIE') !== -1 || userAgent.indexOf('Trident/') !== -1;\n}\n\nfunction isEdge(userAgent) {\n return userAgent.indexOf('Edge/') !== -1;\n}\n\nexport function isIeOrEdge() {\n var userAgent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.navigator.userAgent;\n\n return isIe(userAgent) || isEdge(userAgent);\n}\n\n/**\n * This is intended to be used to compose event handlers\n * They are executed in order until one of them calls `event.preventDefault()`.\n * Not sure this is the best way to do this, but it seems legit.\n * @param {Function} fns the event hanlder functions\n * @return {Function} the event handler to add to an element\n */\nexport function composeEventHandlers() {\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function (event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return fns.some(function (fn) {\n fn && fn.apply(undefined, [event].concat(args));\n return event.defaultPrevented;\n });\n };\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint prefer-template: 0 */\n\nimport React from 'react';\nimport { fromEvent } from 'file-selector';\nimport PropTypes from 'prop-types';\nimport { isDragDataWithFiles, supportMultiple, fileAccepted, allFilesAccepted, fileMatchSize, onDocumentDragOver, isIeOrEdge, composeEventHandlers, isPropagationStopped, isDefaultPrevented } from './utils';\n\nvar Dropzone = function (_React$Component) {\n _inherits(Dropzone, _React$Component);\n\n function Dropzone() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Dropzone);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Dropzone.__proto__ || Object.getPrototypeOf(Dropzone)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n draggedFiles: [],\n acceptedFiles: [],\n rejectedFiles: []\n }, _this.isFileDialogActive = false, _this.onDocumentDrop = function (evt) {\n if (_this.node && _this.node.contains(evt.target)) {\n // if we intercepted an event for our instance, let it propagate down to the instance's onDrop handler\n return;\n }\n evt.preventDefault();\n _this.dragTargets = [];\n }, _this.onDragStart = function (evt) {\n evt.persist();\n if (_this.props.onDragStart && isDragDataWithFiles(evt)) {\n _this.props.onDragStart.call(_this, evt);\n }\n }, _this.onDragEnter = function (evt) {\n evt.preventDefault();\n\n // Count the dropzone and any children that are entered.\n if (_this.dragTargets.indexOf(evt.target) === -1) {\n _this.dragTargets.push(evt.target);\n }\n\n evt.persist();\n\n if (isDragDataWithFiles(evt)) {\n Promise.resolve(_this.props.getDataTransferItems(evt)).then(function (draggedFiles) {\n if (isPropagationStopped(evt)) {\n return;\n }\n\n _this.setState({\n draggedFiles: draggedFiles,\n // Do not rely on files for the drag state. It doesn't work in Safari.\n isDragActive: true\n });\n });\n\n if (_this.props.onDragEnter) {\n _this.props.onDragEnter.call(_this, evt);\n }\n }\n }, _this.onDragOver = function (evt) {\n // eslint-disable-line class-methods-use-this\n evt.preventDefault();\n evt.persist();\n\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'copy';\n }\n\n if (_this.props.onDragOver && isDragDataWithFiles(evt)) {\n _this.props.onDragOver.call(_this, evt);\n }\n\n return false;\n }, _this.onDragLeave = function (evt) {\n evt.preventDefault();\n evt.persist();\n\n // Only deactivate once the dropzone and all children have been left.\n _this.dragTargets = _this.dragTargets.filter(function (el) {\n return el !== evt.target && _this.node.contains(el);\n });\n if (_this.dragTargets.length > 0) {\n return;\n }\n\n // Clear dragging files state\n _this.setState({\n isDragActive: false,\n draggedFiles: []\n });\n\n if (_this.props.onDragLeave && isDragDataWithFiles(evt)) {\n _this.props.onDragLeave.call(_this, evt);\n }\n }, _this.onDrop = function (evt) {\n var _this$props = _this.props,\n onDrop = _this$props.onDrop,\n onDropAccepted = _this$props.onDropAccepted,\n onDropRejected = _this$props.onDropRejected,\n multiple = _this$props.multiple,\n accept = _this$props.accept,\n getDataTransferItems = _this$props.getDataTransferItems;\n\n // Stop default browser behavior\n\n evt.preventDefault();\n\n // Persist event for later usage\n evt.persist();\n\n // Reset the counter along with the drag on a drop.\n _this.dragTargets = [];\n _this.isFileDialogActive = false;\n\n // Clear files value\n _this.draggedFiles = null;\n\n // Reset drag state\n _this.setState({\n isDragActive: false,\n draggedFiles: []\n });\n\n if (isDragDataWithFiles(evt)) {\n Promise.resolve(getDataTransferItems(evt)).then(function (fileList) {\n var acceptedFiles = [];\n var rejectedFiles = [];\n\n if (isPropagationStopped(evt)) {\n return;\n }\n\n fileList.forEach(function (file) {\n if (fileAccepted(file, accept) && fileMatchSize(file, _this.props.maxSize, _this.props.minSize)) {\n acceptedFiles.push(file);\n } else {\n rejectedFiles.push(file);\n }\n });\n\n if (!multiple && acceptedFiles.length > 1) {\n // if not in multi mode add any extra accepted files to rejected.\n // This will allow end users to easily ignore a multi file drop in \"single\" mode.\n rejectedFiles.push.apply(rejectedFiles, _toConsumableArray(acceptedFiles.splice(0)));\n }\n\n // Update `acceptedFiles` and `rejectedFiles` state\n // This will make children render functions receive the appropriate\n // values\n _this.setState({ acceptedFiles: acceptedFiles, rejectedFiles: rejectedFiles }, function () {\n if (onDrop) {\n onDrop.call(_this, acceptedFiles, rejectedFiles, evt);\n }\n\n if (rejectedFiles.length > 0 && onDropRejected) {\n onDropRejected.call(_this, rejectedFiles, evt);\n }\n\n if (acceptedFiles.length > 0 && onDropAccepted) {\n onDropAccepted.call(_this, acceptedFiles, evt);\n }\n });\n });\n }\n }, _this.onClick = function (evt) {\n var onClick = _this.props.onClick;\n\n // if onClick prop is given, run it first\n\n if (onClick) {\n onClick.call(_this, evt);\n }\n\n // If the event hasn't been default prevented from within\n // the onClick listener, open the file dialog\n if (!isDefaultPrevented(evt)) {\n evt.stopPropagation();\n\n // in IE11/Edge the file-browser dialog is blocking, ensure this is behind setTimeout\n // this is so react can handle state changes in the onClick prop above above\n // see: https://github.com/react-dropzone/react-dropzone/issues/450\n if (isIeOrEdge()) {\n setTimeout(_this.open, 0);\n } else {\n _this.open();\n }\n }\n }, _this.onInputElementClick = function (evt) {\n evt.stopPropagation();\n }, _this.onFileDialogCancel = function () {\n // timeout will not recognize context of this method\n var onFileDialogCancel = _this.props.onFileDialogCancel;\n // execute the timeout only if the FileDialog is opened in the browser\n\n if (_this.isFileDialogActive) {\n setTimeout(function () {\n if (_this.input != null) {\n // Returns an object as FileList\n var files = _this.input.files;\n\n\n if (!files.length) {\n _this.isFileDialogActive = false;\n\n if (typeof onFileDialogCancel === 'function') {\n onFileDialogCancel();\n }\n }\n }\n }, 300);\n }\n }, _this.onFocus = function (evt) {\n var onFocus = _this.props.onFocus;\n\n if (onFocus) {\n onFocus.call(_this, evt);\n }\n if (!isDefaultPrevented(evt)) {\n _this.setState({ isFocused: true });\n }\n }, _this.onBlur = function (evt) {\n var onBlur = _this.props.onBlur;\n\n if (onBlur) {\n onBlur.call(_this, evt);\n }\n if (!isDefaultPrevented(evt)) {\n _this.setState({ isFocused: false });\n }\n }, _this.onKeyDown = function (evt) {\n var onKeyDown = _this.props.onKeyDown;\n\n if (!_this.node.isEqualNode(evt.target)) {\n return;\n }\n\n if (onKeyDown) {\n onKeyDown.call(_this, evt);\n }\n\n if (!isDefaultPrevented(evt) && (evt.keyCode === 32 || evt.keyCode === 13)) {\n evt.preventDefault();\n _this.open();\n }\n }, _this.composeHandler = function (handler) {\n if (_this.props.disabled) {\n return null;\n }\n return handler;\n }, _this.getRootProps = function () {\n var _extends2;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref2$refKey = _ref2.refKey,\n refKey = _ref2$refKey === undefined ? 'ref' : _ref2$refKey,\n onKeyDown = _ref2.onKeyDown,\n onFocus = _ref2.onFocus,\n onBlur = _ref2.onBlur,\n onClick = _ref2.onClick,\n onDragStart = _ref2.onDragStart,\n onDragEnter = _ref2.onDragEnter,\n onDragOver = _ref2.onDragOver,\n onDragLeave = _ref2.onDragLeave,\n onDrop = _ref2.onDrop,\n rest = _objectWithoutProperties(_ref2, ['refKey', 'onKeyDown', 'onFocus', 'onBlur', 'onClick', 'onDragStart', 'onDragEnter', 'onDragOver', 'onDragLeave', 'onDrop']);\n\n return _extends((_extends2 = {\n onKeyDown: _this.composeHandler(onKeyDown ? composeEventHandlers(onKeyDown, _this.onKeyDown) : _this.onKeyDown),\n onFocus: _this.composeHandler(onFocus ? composeEventHandlers(onFocus, _this.onFocus) : _this.onFocus),\n onBlur: _this.composeHandler(onBlur ? composeEventHandlers(onBlur, _this.onBlur) : _this.onBlur),\n onClick: _this.composeHandler(onClick ? composeEventHandlers(onClick, _this.onClick) : _this.onClick),\n onDragStart: _this.composeHandler(onDragStart ? composeEventHandlers(onDragStart, _this.onDragStart) : _this.onDragStart),\n onDragEnter: _this.composeHandler(onDragEnter ? composeEventHandlers(onDragEnter, _this.onDragEnter) : _this.onDragEnter),\n onDragOver: _this.composeHandler(onDragOver ? composeEventHandlers(onDragOver, _this.onDragOver) : _this.onDragOver),\n onDragLeave: _this.composeHandler(onDragLeave ? composeEventHandlers(onDragLeave, _this.onDragLeave) : _this.onDragLeave),\n onDrop: _this.composeHandler(onDrop ? composeEventHandlers(onDrop, _this.onDrop) : _this.onDrop)\n }, _defineProperty(_extends2, refKey, _this.setNodeRef), _defineProperty(_extends2, 'tabIndex', _this.props.disabled ? -1 : 0), _extends2), rest);\n }, _this.getInputProps = function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref3$refKey = _ref3.refKey,\n refKey = _ref3$refKey === undefined ? 'ref' : _ref3$refKey,\n onChange = _ref3.onChange,\n onClick = _ref3.onClick,\n rest = _objectWithoutProperties(_ref3, ['refKey', 'onChange', 'onClick']);\n\n var _this$props2 = _this.props,\n accept = _this$props2.accept,\n multiple = _this$props2.multiple,\n name = _this$props2.name;\n\n var inputProps = _defineProperty({\n accept: accept,\n type: 'file',\n style: { display: 'none' },\n multiple: supportMultiple && multiple,\n onChange: composeEventHandlers(onChange, _this.onDrop),\n onClick: composeEventHandlers(onClick, _this.onInputElementClick),\n autoComplete: 'off',\n tabIndex: -1\n }, refKey, _this.setInputRef);\n if (name && name.length) {\n inputProps.name = name;\n }\n return _extends({}, inputProps, rest);\n }, _this.setNodeRef = function (node) {\n _this.node = node;\n }, _this.setInputRef = function (input) {\n _this.input = input;\n }, _this.open = function () {\n _this.isFileDialogActive = true;\n if (_this.input) {\n _this.input.value = null;\n _this.input.click();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Dropzone, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var preventDropOnDocument = this.props.preventDropOnDocument;\n\n this.dragTargets = [];\n\n if (preventDropOnDocument) {\n document.addEventListener('dragover', onDocumentDragOver, false);\n document.addEventListener('drop', this.onDocumentDrop, false);\n }\n\n window.addEventListener('focus', this.onFileDialogCancel, false);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var preventDropOnDocument = this.props.preventDropOnDocument;\n\n if (preventDropOnDocument) {\n document.removeEventListener('dragover', onDocumentDragOver);\n document.removeEventListener('drop', this.onDocumentDrop);\n }\n\n window.removeEventListener('focus', this.onFileDialogCancel, false);\n }\n\n /**\n * Open system file upload dialog.\n *\n * @public\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n multiple = _props.multiple,\n disabled = _props.disabled;\n var _state = this.state,\n isDragActive = _state.isDragActive,\n isFocused = _state.isFocused,\n draggedFiles = _state.draggedFiles,\n acceptedFiles = _state.acceptedFiles,\n rejectedFiles = _state.rejectedFiles;\n\n\n var filesCount = draggedFiles.length;\n var isMultipleAllowed = multiple || filesCount <= 1;\n var isDragAccept = filesCount > 0 && allFilesAccepted(draggedFiles, this.props.accept);\n var isDragReject = filesCount > 0 && (!isDragAccept || !isMultipleAllowed);\n\n return children({\n isDragActive: isDragActive,\n isDragAccept: isDragAccept,\n isDragReject: isDragReject,\n draggedFiles: draggedFiles,\n acceptedFiles: acceptedFiles,\n rejectedFiles: rejectedFiles,\n isFocused: isFocused && !disabled,\n getRootProps: this.getRootProps,\n getInputProps: this.getInputProps,\n open: this.open\n });\n }\n }]);\n\n return Dropzone;\n}(React.Component);\n\nexport default Dropzone;\n\nDropzone.propTypes = {\n /**\n * Allow specific types of files. See https://github.com/okonet/attr-accept for more information.\n * Keep in mind that mime type determination is not reliable across platforms. CSV files,\n * for example, are reported as text/plain under macOS but as application/vnd.ms-excel under\n * Windows. In some cases there might not be a mime type set at all.\n * See: https://github.com/react-dropzone/react-dropzone/issues/276\n */\n accept: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n\n /**\n * Render function that renders the actual component\n *\n * @param {Object} props\n * @param {Function} props.getRootProps Returns the props you should apply to the root drop container you render\n * @param {Function} props.getInputProps Returns the props you should apply to hidden file input you render\n * @param {Function} props.open Open the native file selection dialog\n * @param {Boolean} props.isFocused Dropzone area is in focus\n * @param {Boolean} props.isDragActive Active drag is in progress\n * @param {Boolean} props.isDragAccept Dragged files are accepted\n * @param {Boolean} props.isDragReject Some dragged files are rejected\n * @param {Array} props.draggedFiles Files in active drag\n * @param {Array} props.acceptedFiles Accepted files\n * @param {Array} props.rejectedFiles Rejected files\n */\n children: PropTypes.func,\n\n /**\n * Enable/disable the dropzone entirely\n */\n disabled: PropTypes.bool,\n\n /**\n * If false, allow dropped items to take over the current browser window\n */\n preventDropOnDocument: PropTypes.bool,\n\n /**\n * Allow dropping multiple files\n */\n multiple: PropTypes.bool,\n\n /**\n * `name` attribute for the input tag\n */\n name: PropTypes.string,\n\n /**\n * Maximum file size (in bytes)\n */\n maxSize: PropTypes.number,\n\n /**\n * Minimum file size (in bytes)\n */\n minSize: PropTypes.number,\n\n /**\n * getDataTransferItems handler\n * @param {Event} event\n * @returns {Array} array of File objects\n */\n getDataTransferItems: PropTypes.func,\n\n /**\n * onClick callback\n * @param {Event} event\n */\n onClick: PropTypes.func,\n\n /**\n * onFocus callback\n */\n onFocus: PropTypes.func,\n\n /**\n * onBlur callback\n */\n onBlur: PropTypes.func,\n\n /**\n * onKeyDown callback\n */\n onKeyDown: PropTypes.func,\n\n /**\n * The `onDrop` method that accepts two arguments.\n * The first argument represents the accepted files and the second argument the rejected files.\n *\n * ```javascript\n * function onDrop(acceptedFiles, rejectedFiles) {\n * // do stuff with files...\n * }\n * ```\n *\n * Files are accepted or rejected based on the `accept` prop.\n * This must be a valid [MIME type](http://www.iana.org/assignments/media-types/media-types.xhtml) according to [input element specification](https://www.w3.org/wiki/HTML/Elements/input/file) or a valid file extension.\n *\n * Note that the `onDrop` callback will always be called regardless if the dropped files were accepted or rejected.\n * You can use the `onDropAccepted`/`onDropRejected` props if you'd like to react to a specific event instead of the `onDrop` prop.\n *\n * The `onDrop` callback will provide you with an array of [Files](https://developer.mozilla.org/en-US/docs/Web/API/File) which you can then process and send to a server.\n * For example, with [SuperAgent](https://github.com/visionmedia/superagent) as a http/ajax library:\n *\n * ```javascript\n * function onDrop(acceptedFiles) {\n * const req = request.post('/upload')\n * acceptedFiles.forEach(file => {\n * req.attach(file.name, file)\n * })\n * req.end(callback)\n * }\n * ```\n */\n onDrop: PropTypes.func,\n\n /**\n * onDropAccepted callback\n */\n onDropAccepted: PropTypes.func,\n\n /**\n * onDropRejected callback\n */\n onDropRejected: PropTypes.func,\n\n /**\n * onDragStart callback\n */\n onDragStart: PropTypes.func,\n\n /**\n * onDragEnter callback\n */\n onDragEnter: PropTypes.func,\n\n /**\n * onDragOver callback\n */\n onDragOver: PropTypes.func,\n\n /**\n * onDragLeave callback\n */\n onDragLeave: PropTypes.func,\n\n /**\n * Provide a callback on clicking the cancel button of the file dialog\n */\n onFileDialogCancel: PropTypes.func\n};\n\nDropzone.defaultProps = {\n preventDropOnDocument: true,\n disabled: false,\n multiple: true,\n maxSize: Infinity,\n minSize: 0,\n getDataTransferItems: fromEvent\n};","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport Dropzone from 'react-dropzone'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const DropZone = ({\n formik: {\n values, setFieldValue, setFieldTouched,\n },\n disabled,\n id,\n name,\n accept,\n zoneActiveText,\n fileInfo,\n disabledText,\n placeholder,\n ...rest\n}) => {\n const onDrop = acceptedFiles => {\n setFieldValue(name, values[name].concat(acceptedFiles))\n setFieldTouched(name, true)\n }\n\n return (\n <Dropzone\n {...rest}\n id={id || name}\n name={name}\n accept={accept}\n disabled={disabled}\n onDrop={onDrop}\n >\n {({\n getRootProps, getInputProps, isDragActive, acceptedFiles, rejectedFiles,\n }) => (\n <div\n {...getRootProps()}\n className={cx('dropzone', { 'dropzone--isActive': isDragActive, 'dropzone--isDisabled': disabled })}\n >\n {\n disabled && (<p className=\"disabledText\">{disabledText}</p>)\n }\n <input {...getInputProps()} />\n {\n (acceptedFiles.length || rejectedFiles.length)\n ? (\n values[name].map(file => {\n if (file.type.includes('image')) {\n return (\n <img\n key={file.name}\n src={URL.createObjectURL(file)}\n className=\"img-thumbnail\"\n alt={file.name}\n />\n )\n }\n\n return (\n <div key={file.name} className=\"icon-wrapper\">\n <div className=\"icon\">\n <i title={file.name.split('.').pop()} />\n </div>\n <p>{file.name.split('.').shift()}</p>\n </div>\n )\n })\n ) : isDragActive\n ? <p className=\"zoneActiveText\">{zoneActiveText}</p>\n : <p className=\"placeholder\">{placeholder}</p>\n }\n {\n fileInfo && (\n <div className=\"fileInfo\">\n {`Accepted ${acceptedFiles.length}, rejected ${rejectedFiles.length} files`}\n </div>\n )\n }\n </div>\n )}\n </Dropzone>\n )\n}\n\nDropZone.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the DropZone wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Dropzone wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Disables the DropZone Field */\n disabled: PropTypes.bool,\n /** Sets an Id for the Dropzone, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the Name of the DropZone Field */\n name: PropTypes.string.isRequired,\n /** Allow specific types of files. See [attr-accept](https://github.com/okonet/attr-accept) for more information. */\n accept: PropTypes.string,\n /** Sets the main Label for the DropZone Field */\n label: PropTypes.string,\n /** Sets the text to be shown when draging files over the drop zone */\n zoneActiveText: PropTypes.string,\n /** Shows the number of accepted and rejected files after each drop */\n fileInfo: PropTypes.bool,\n /** text shown as placeholder if DropZone is disabled */\n disabledText: PropTypes.string,\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Sets a hint text after/below the DropZone Field */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nDropZone.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n accept: null,\n label: null,\n zoneActiveText: 'Drop file(s) here',\n fileInfo: false,\n disabledText: 'File upload disabled',\n placeholder: 'Dropp some files here.',\n hint: null,\n required: false,\n}\n\nexport default useLabel('dropzone')(DropZone)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getIn } from 'formik'\nimport cx from 'classnames'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Radio = ({\n formik: {\n values, handleChange, handleBlur,\n },\n disabled,\n name,\n options,\n inline,\n ...rest\n}) => (\n <div className={cx('radio-options', { inline })}>\n {\n options.map(option => (\n <div key={option.label} className=\"radio-option\">\n <input\n {...rest}\n checked={getIn(values, name) === option.value}\n id={`${name}-id-${option.value}`}\n value={option.value}\n onChange={handleChange}\n onBlur={handleBlur}\n name={name}\n disabled={disabled}\n type=\"radio\"\n />\n <label\n htmlFor={`${name}-id-${option.value}`}\n >\n {option.label}\n </label>\n </div>\n ))\n }\n </div>\n)\n\nRadio.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the Radio wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Radio wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Disables the Radio Fields */\n disabled: PropTypes.bool,\n /** Sets the Name of the Radio Fields */\n name: PropTypes.string.isRequired,\n /** Sets the main Label for the Radio Fields */\n label: PropTypes.string,\n /** Array in the shape of [ { value: string or number, label: string } ] */\n options: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n })).isRequired,\n /** Displays the radio option inline from left to right */\n inline: PropTypes.bool,\n /** Sets a hint text after/below the Radio component */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nRadio.defaultProps = {\n className: null,\n style: null,\n label: null,\n disabled: false,\n inline: false,\n hint: null,\n required: false,\n}\n\nexport default useLabel('radio')(Radio)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getIn } from 'formik'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Input = ({\n formik: {\n values, handleChange,\n },\n disabled,\n id,\n name,\n placeholder,\n type,\n onAnimationStart,\n onFocus,\n onBlur,\n ...rest\n}) => (\n <input\n {...rest}\n id={id || name}\n name={name}\n type={type}\n onAnimationStart={onAnimationStart}\n placeholder={placeholder}\n value={getIn(values, name)}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n />\n)\n\nInput.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** @ignore */\n onAnimationStart: PropTypes.func.isRequired,\n /** @ignore */\n onFocus: PropTypes.func.isRequired,\n /** @ignore */\n onBlur: PropTypes.func.isRequired,\n /** Adds a custom class to the Input wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Input wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Sets an Id for the Input Field, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the Name of the Input Field */\n name: PropTypes.string.isRequired,\n /** Sets the main Label for the Input Field */\n label: PropTypes.string,\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Defines the type of the Input Filed */\n type: PropTypes.oneOf([\n 'text',\n 'color',\n 'email',\n 'hidden',\n 'image',\n 'number',\n 'password',\n 'range',\n 'search',\n 'tel',\n 'url',\n ]),\n /** Disables the Input Field */\n disabled: PropTypes.bool,\n /** Sets a hint text after/below the Input Field */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nInput.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n label: null,\n placeholder: null,\n type: 'text',\n hint: null,\n required: false,\n}\n\nexport default useLabel('input')(Input)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getIn } from 'formik'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Select = ({\n formik: {\n values, handleChange,\n },\n disabled,\n id,\n label,\n name,\n options,\n placeholder,\n required,\n ...rest\n}) => (\n <select\n {...rest}\n id={id || name}\n name={name}\n value={getIn(values, name)}\n disabled={disabled}\n onChange={handleChange}\n >\n {\n placeholder && (\n <option value=\"\">\n {`${placeholder}${!label && required ? ' *' : ''}`}\n </option>\n )\n }\n {\n options.map(option => (\n <option\n key={option.label}\n value={option.value}\n >\n {option.label}\n </option>\n ))\n }\n </select>\n)\n\nSelect.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the Select wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Select wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Disables the Select Field */\n disabled: PropTypes.bool,\n /** Sets an Id for the Select Field, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the main Label for the Select Field */\n label: PropTypes.string,\n /** Sets the Name of the Select Field */\n name: PropTypes.string.isRequired,\n /** Sets a Placeholder as the first option with no value */\n placeholder: PropTypes.string,\n /** Array in the shape of [ { value: string or number, label: string } ] */\n options: PropTypes.arrayOf(PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]).isRequired,\n })).isRequired,\n /** Sets a hint text after/below the Select component */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nSelect.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n label: null,\n placeholder: null,\n hint: null,\n required: false,\n}\n\nexport default useLabel('select')(Select)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { connect } from 'formik'\n\nexport const SubmitBtn = ({\n formik,\n className,\n disabled,\n children,\n ...rest\n}) => (\n <button\n className={cx('form-element btn submit-btn', className, { isDisabled: disabled })}\n onClick={formik.handleSubmit}\n type=\"submit\"\n disabled={disabled}\n {...rest}\n >\n {children}\n </button>\n)\n\nSubmitBtn.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the SubmitBtn */\n className: PropTypes.string,\n /** Disables the SubmitBtn */\n disabled: PropTypes.bool,\n /** Renders the children passed to the button */\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.node,\n ]),\n}\n\nSubmitBtn.defaultProps = {\n className: null,\n disabled: false,\n children: 'Submit',\n}\n\nexport default connect(SubmitBtn)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { getIn } from 'formik'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const Textarea = ({\n formik: {\n values, handleChange,\n },\n disabled,\n id,\n name,\n placeholder,\n onFocus,\n onBlur,\n ...rest\n}) => (\n <textarea\n id={id || name}\n name={name}\n placeholder={placeholder}\n value={getIn(values, name)}\n onChange={handleChange}\n onFocus={onFocus}\n onBlur={onBlur}\n disabled={disabled}\n {...rest}\n />\n)\n\nTextarea.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** @ignore */\n onFocus: PropTypes.func.isRequired,\n /** @ignore */\n onBlur: PropTypes.func.isRequired,\n /** Adds a custom class to the Textarea wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Textarea wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Disables the Textarea */\n disabled: PropTypes.bool,\n /** Sets an Id for the Textarea, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the main Label for the Textarea */\n label: PropTypes.string,\n /** Sets the Name of the Textarea */\n name: PropTypes.string.isRequired,\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Sets a hint text after/below the Textarea */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nTextarea.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n label: null,\n placeholder: null,\n hint: null,\n required: false,\n}\n\nexport default useLabel('textarea')(Textarea)\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport cx from 'classnames'\nimport { connect, getIn } from 'formik'\nimport './styles.scss'\n\nexport const Toggle = ({\n formik: {\n values, handleChange,\n },\n className,\n disabled,\n name,\n style,\n id,\n ...rest\n}) => (\n <div className={cx('form-element', 'toggle-wrapper', className, { isDisabled: disabled })} style={style}>\n <label className={cx('toggle-switch', className)}>\n <input\n {...rest}\n name={name}\n id={id || name}\n checked={getIn(values, name)}\n onChange={handleChange}\n disabled={disabled}\n type=\"checkbox\"\n />\n <span className=\"slider\" />\n </label>\n </div>\n)\n\nToggle.propTypes = {\n/** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the Toggle button */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Toggle wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Disables the Toggle button */\n disabled: PropTypes.bool,\n /** Sets the Name of the Toggle button */\n name: PropTypes.string.isRequired,\n /** Sets an Id for the Toggle button, if not passed, the id will be the name */\n id: PropTypes.string,\n}\n\nToggle.defaultProps = {\n className: null,\n style: null,\n disabled: false,\n id: null,\n}\n\nexport default connect(Toggle)\n","import React, { Component, createRef } from 'react';\nimport reactDom from 'react-dom';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar reactIs_production_min = createCommonjsModule(function (module, exports) {\nObject.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?Symbol.for(\"react.memo\"):\n60115,r=b?Symbol.for(\"react.lazy\"):60116;function t(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return u}}case r:case q:case d:return u}}}function v(a){return t(a)===m}exports.typeOf=t;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;\nexports.Fragment=e;exports.Lazy=r;exports.Memo=q;exports.Portal=d;exports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isValidElementType=function(a){return \"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===r||a.$$typeof===q||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||t(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return t(a)===k};\nexports.isContextProvider=function(a){return t(a)===h};exports.isElement=function(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return t(a)===n};exports.isFragment=function(a){return t(a)===e};exports.isLazy=function(a){return t(a)===r};exports.isMemo=function(a){return t(a)===q};exports.isPortal=function(a){return t(a)===d};exports.isProfiler=function(a){return t(a)===g};exports.isStrictMode=function(a){return t(a)===f};\nexports.isSuspense=function(a){return t(a)===p};\n});\n\nunwrapExports(reactIs_production_min);\nvar reactIs_production_min_1 = reactIs_production_min.typeOf;\nvar reactIs_production_min_2 = reactIs_production_min.AsyncMode;\nvar reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;\nvar reactIs_production_min_4 = reactIs_production_min.ContextConsumer;\nvar reactIs_production_min_5 = reactIs_production_min.ContextProvider;\nvar reactIs_production_min_6 = reactIs_production_min.Element;\nvar reactIs_production_min_7 = reactIs_production_min.ForwardRef;\nvar reactIs_production_min_8 = reactIs_production_min.Fragment;\nvar reactIs_production_min_9 = reactIs_production_min.Lazy;\nvar reactIs_production_min_10 = reactIs_production_min.Memo;\nvar reactIs_production_min_11 = reactIs_production_min.Portal;\nvar reactIs_production_min_12 = reactIs_production_min.Profiler;\nvar reactIs_production_min_13 = reactIs_production_min.StrictMode;\nvar reactIs_production_min_14 = reactIs_production_min.Suspense;\nvar reactIs_production_min_15 = reactIs_production_min.isValidElementType;\nvar reactIs_production_min_16 = reactIs_production_min.isAsyncMode;\nvar reactIs_production_min_17 = reactIs_production_min.isConcurrentMode;\nvar reactIs_production_min_18 = reactIs_production_min.isContextConsumer;\nvar reactIs_production_min_19 = reactIs_production_min.isContextProvider;\nvar reactIs_production_min_20 = reactIs_production_min.isElement;\nvar reactIs_production_min_21 = reactIs_production_min.isForwardRef;\nvar reactIs_production_min_22 = reactIs_production_min.isFragment;\nvar reactIs_production_min_23 = reactIs_production_min.isLazy;\nvar reactIs_production_min_24 = reactIs_production_min.isMemo;\nvar reactIs_production_min_25 = reactIs_production_min.isPortal;\nvar reactIs_production_min_26 = reactIs_production_min.isProfiler;\nvar reactIs_production_min_27 = reactIs_production_min.isStrictMode;\nvar reactIs_production_min_28 = reactIs_production_min.isSuspense;\n\nvar reactIs_development = createCommonjsModule(function (module, exports) {\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\n\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace;\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' ||\n // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE);\n}\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\n{\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`lowPriorityWarning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nvar lowPriorityWarning$1 = lowPriorityWarning;\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n default:\n return $$typeof;\n }\n }\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n}\n\n// AsyncMode is deprecated along with isAsyncMode\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\n\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\n\n// AsyncMode should be deprecated\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true;\n lowPriorityWarning$1(false, 'The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.typeOf = typeOf;\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isValidElementType = isValidElementType;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\n })();\n}\n});\n\nunwrapExports(reactIs_development);\nvar reactIs_development_1 = reactIs_development.typeOf;\nvar reactIs_development_2 = reactIs_development.AsyncMode;\nvar reactIs_development_3 = reactIs_development.ConcurrentMode;\nvar reactIs_development_4 = reactIs_development.ContextConsumer;\nvar reactIs_development_5 = reactIs_development.ContextProvider;\nvar reactIs_development_6 = reactIs_development.Element;\nvar reactIs_development_7 = reactIs_development.ForwardRef;\nvar reactIs_development_8 = reactIs_development.Fragment;\nvar reactIs_development_9 = reactIs_development.Lazy;\nvar reactIs_development_10 = reactIs_development.Memo;\nvar reactIs_development_11 = reactIs_development.Portal;\nvar reactIs_development_12 = reactIs_development.Profiler;\nvar reactIs_development_13 = reactIs_development.StrictMode;\nvar reactIs_development_14 = reactIs_development.Suspense;\nvar reactIs_development_15 = reactIs_development.isValidElementType;\nvar reactIs_development_16 = reactIs_development.isAsyncMode;\nvar reactIs_development_17 = reactIs_development.isConcurrentMode;\nvar reactIs_development_18 = reactIs_development.isContextConsumer;\nvar reactIs_development_19 = reactIs_development.isContextProvider;\nvar reactIs_development_20 = reactIs_development.isElement;\nvar reactIs_development_21 = reactIs_development.isForwardRef;\nvar reactIs_development_22 = reactIs_development.isFragment;\nvar reactIs_development_23 = reactIs_development.isLazy;\nvar reactIs_development_24 = reactIs_development.isMemo;\nvar reactIs_development_25 = reactIs_development.isPortal;\nvar reactIs_development_26 = reactIs_development.isProfiler;\nvar reactIs_development_27 = reactIs_development.isStrictMode;\nvar reactIs_development_28 = reactIs_development.isSuspense;\n\nvar reactIs = createCommonjsModule(function (module) {\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = reactIs_production_min;\n} else {\n module.exports = reactIs_development;\n}\n});\n\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nvar objectAssign = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret;\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret$1 = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret$1);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n};\n\nvar checkPropTypes_1 = checkPropTypes;\n\nvar has$1 = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning$1 = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning$1 = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nvar factoryWithTypeCheckers = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret_1) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning$1(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!reactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning$1(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning$1('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has$1(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning$1('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning$1(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret_1) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = objectAssign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret_1);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes_1;\n ReactPropTypes.resetWarningCache = checkPropTypes_1.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nvar factoryWithThrowingShims = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret_1) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } shim.isRequired = shim;\n function getShim() {\n return shim;\n } // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\nvar propTypes = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = reactIs;\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = factoryWithTypeCheckers(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = factoryWithThrowingShims();\n}\n});\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols$1 = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols$1) {\n keys = keys.concat(getOwnPropertySymbols$1(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try { // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nvar hoistNonReactStatics_cjs = hoistNonReactStatics;\n\nvar _extends$1 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass$1 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn$1(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits$1(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n\n\n\n\nvar dist = function enhanceWithClickOutside(WrappedComponent) {\n var componentName = WrappedComponent.displayName || WrappedComponent.name;\n\n var EnhancedComponent = function (_React$Component) {\n _inherits$1(EnhancedComponent, _React$Component);\n\n function EnhancedComponent(props) {\n _classCallCheck$1(this, EnhancedComponent);\n\n var _this = _possibleConstructorReturn$1(this, (EnhancedComponent.__proto__ || Object.getPrototypeOf(EnhancedComponent)).call(this, props));\n\n _this.handleClickOutside = _this.handleClickOutside.bind(_this);\n return _this;\n }\n\n _createClass$1(EnhancedComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n document.addEventListener('click', this.handleClickOutside, true);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this.handleClickOutside, true);\n }\n }, {\n key: 'handleClickOutside',\n value: function handleClickOutside(e) {\n var domNode = this.__domNode;\n if ((!domNode || !domNode.contains(e.target)) && this.__wrappedInstance && typeof this.__wrappedInstance.handleClickOutside === 'function') {\n this.__wrappedInstance.handleClickOutside(e);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n wrappedRef = _props.wrappedRef,\n rest = _objectWithoutProperties(_props, ['wrappedRef']);\n\n return React.createElement(WrappedComponent, _extends$1({}, rest, {\n ref: function ref(c) {\n _this2.__wrappedInstance = c;\n _this2.__domNode = reactDom.findDOMNode(c);\n wrappedRef && wrappedRef(c);\n }\n }));\n }\n }]);\n\n return EnhancedComponent;\n }(React.Component);\n\n EnhancedComponent.displayName = 'clickOutside(' + componentName + ')';\n\n return hoistNonReactStatics_cjs(EnhancedComponent, WrappedComponent);\n};\n\nconst version=\"1.7.10\";const country_calling_codes={\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"800\":[\"001\"],\"808\":[\"001\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"870\":[\"001\"],\"878\":[\"001\"],\"880\":[\"BD\"],\"881\":[\"001\"],\"882\":[\"001\"],\"883\":[\"001\"],\"886\":[\"TW\"],\"888\":[\"001\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"979\":[\"001\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]};const countries={AC:[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],AD:[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[136-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[136-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],AE:[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],AF:[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],AG:[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([457]\\\\d{6})$\",\"268$1\",0,\"268\"],AI:[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2457]\\\\d{6})$\",\"264$1\",0,\"264\"],AL:[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],AM:[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-9]\"],\"0$1\"]],\"0\"],AO:[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],AR:[\"54\",\"00\",\"11\\\\d{8}|(?:[2368]|9\\\\d)\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5(?:[24-6]|3[2-5]))|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5(?:[24-6]|3[2-5]))|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],AS:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([267]\\\\d{6})$\",\"684$1\",0,\"684\"],AT:[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],AU:[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1\\\\d{4,9}|(?:[2-478]\\\\d\\\\d|550)\\\\d{6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|[45]\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,0,0,0,0,[[\"(?:[237]\\\\d{5}|8(?:51(?:0(?:0[03-9]|[1247]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-6])|1(?:1[69]|[23]\\\\d|4[0-4]))|(?:[6-8]\\\\d{3}|9(?:[02-9]\\\\d\\\\d|1(?:[0-57-9]\\\\d|6[0135-9])))\\\\d))\\\\d{3}\",[9]],[\"4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"16\\\\d{3,7}\",[5,6,7,8,9]],[\"1471\\\\d{5}|(?:145|550)\\\\d{6}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],AW:[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],AX:[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|(?:[147]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10],0,\"0\",0,0,0,0,\"18\",0,\"00\"],AZ:[\"994\",\"00\",\"(?:365\\\\d{3}|900200)\\\\d{3}|(?:[12457]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[12]|365\",\"[12]|365\",\"[12]|365(?:[0-46-9]|5[0-35-9])\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[3-8]\"],\"0$1\"]],\"0\"],BA:[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-356]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],BB:[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"246$1\",0,\"246\"],BD:[\"880\",\"00\",\"[13469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-7]\\\\d{8}|[2-9]\\\\d{7}|[3-689]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-7]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:28|4[14]|5)|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],BE:[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],BF:[\"226\",\"00\",\"[25-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[25-7]\"]]]],BG:[\"359\",\"00\",\"[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],BH:[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[047]\"]]]],BI:[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],BJ:[\"229\",\"00\",\"[2689]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2689]\"]]]],BL:[\"590\",\"00\",\"(?:590|69\\\\d)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:2[7-9]|5[12]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"]]],BM:[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-8]\\\\d{6})$\",\"441$1\",0,\"441\"],BN:[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],BO:[\"591\",\"00(?:1\\\\d)?\",\"(?:[2-467]\\\\d{3}|80017)\\\\d{4}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[23]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],BQ:[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],BR:[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"(?:[1-46-9]\\\\d\\\\d|5(?:[0-46-9]\\\\d|5[0-24679]))\\\\d{8}|[1-9]\\\\d{9}|[3589]\\\\d{8}|[34]\\\\d{7}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37)\",\"4(?:02|37)0|[34]00\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[189][1-9]|2[12478])[2-57]|[3-7]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"1[1-9]|[2-9]\"],\"($1)\"]],\"0\",0,\"0(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],BS:[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-8]\\\\d{6})$\",\"242$1\",0,\"242\"],BT:[\"975\",\"00\",\"[17]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-68]|7[246]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|7\"]]]],BW:[\"267\",\"00\",\"90\\\\d{5}|(?:[2-6]|7\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-6]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]]]],BY:[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],BZ:[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],CA:[\"1\",\"011\",\"(?:[2-8]\\\\d|90)\\\\d{8}\",[10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|50)|3(?:06|43|65)|4(?:03|1[68]|3[178]|50)|5(?:06|1[49]|48|79|8[17])|6(?:04|13|39|47)|7(?:0[59]|78|8[02])|8(?:[06]7|19|25|73)|90[25])[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"(?:5(?:00|2[12]|33|44|66|77|88)|622)[2-9]\\\\d{6}\"],0,0,0,[\"600[2-9]\\\\d{6}\"]]],CC:[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1\\\\d{5,9}|(?:[48]\\\\d\\\\d|550)\\\\d{6}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60)|118)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"1471\\\\d{5}|(?:145|550)\\\\d{6}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],CD:[\"243\",\"00\",\"[189]\\\\d{8}|[1-68]\\\\d{6}\",[7,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],CF:[\"236\",\"00\",\"(?:[27]\\\\d{3}|8776)\\\\d{4}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[278]\"]]]],CG:[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"801\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],CH:[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],CI:[\"225\",\"00\",\"[02-8]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[02-8]\"]]]],CK:[\"682\",\"00\",\"[2-8]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-8]\"]]]],CL:[\"56\",\"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0\",\"1230\\\\d{7}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"21\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[23]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9[2-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-9]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],CM:[\"237\",\"00\",\"(?:[26]\\\\d\\\\d|88)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]\"]]]],CN:[\"86\",\"00|1(?:[12]\\\\d|79|9[0-7])\\\\d\\\\d00\",\"1[1279]\\\\d{8,9}|2\\\\d{9}(?:\\\\d{2})?|[12]\\\\d{6,7}|86\\\\d{6}|(?:1[03-68]\\\\d|6)\\\\d{7,9}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{6,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]\",\"(?:10|2[0-57-9])(?:10|9[56])\",\"(?:10|2[0-57-9])(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"807\",\"8078\",\"8078[19]\",\"8078(?:10|95)\",\"8078(?:100|95)\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"0|(1(?:[12]\\\\d|79|9[0-7])\\\\d\\\\d)\",0,0,0,0,\"00\"],CO:[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:1\\\\d|3)\\\\d{9}|[124-8]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1[2-79]|[25-8]|(?:18|4)[2-9]\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1(?:80|9)\",\"1(?:800|9)\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],CR:[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|[24-8]\\\\d{7}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],CU:[\"53\",\"119\",\"[27]\\\\d{6,7}|[34]\\\\d{5,7}|5\\\\d{7}\",[6,7,8],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"[2-4]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"5\"],\"0$1\"]],\"0\"],CV:[\"238\",\"0\",\"[2-59]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-59]\"]]]],CW:[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],CX:[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1\\\\d{5,9}|(?:[48]\\\\d\\\\d|550)\\\\d{6}\",[6,7,8,9,10],0,\"0\",0,\"0|([59]\\\\d{7})$\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59)|117)|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:[0-3]\\\\d|4[047-9]|5[0-25-9]|6[6-9]|7[02-9]|8[0-2457-9]|9[017-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"1471\\\\d{5}|(?:145|550)\\\\d{6}\",[9]],[\"13(?:00\\\\d{3}|45[0-4])\\\\d{3}|13\\\\d{4}\",[6,8,10]]],\"0011\"],CY:[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],CZ:[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],DE:[\"49\",\"00\",\"[2579]\\\\d{5,14}|49[67]0\\\\d{1,4}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|7[89]|9\\\\d)\\\\d{1,3}|49(?:[12]\\\\d|3[1-689]|7[1-7])\\\\d{1,8}|49(?:[05]\\\\d|[46][1-8])\\\\d{1,9}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{3,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[0568]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],DJ:[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],DK:[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],DM:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"767$1\",0,\"767\"],DO:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8[024]9\"],DZ:[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],EC:[\"593\",\"00\",\"1800\\\\d{6,7}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],EE:[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d\\\\d|900)\\\\d{4}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-4])\",\"[45]|8(?:00[1-9]|[1-4])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"80\"]]]],EG:[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[189]\"],\"0$1\"]],\"0\"],EH:[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,\"528[89]\"],ER:[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],ES:[\"34\",\"00\",\"(?:51|[6-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],ET:[\"251\",\"00\",\"(?:11|[2-59]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-59]\"],\"0$1\"]],\"0\"],FI:[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}|[1-35689]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"[2568][1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[12]0|7)0|[368]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[12457]\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],FJ:[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],FK:[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],FM:[\"691\",\"00\",\"[39]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[39]\"]]]],FO:[\"298\",\"00\",\"(?:[2-8]\\\\d|90)\\\\d{4}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],FR:[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],GA:[\"241\",\"00\",\"(?:0\\\\d|[2-7])\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]]]],GB:[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[024-9])\",\"[25]|7(?:0|6(?:[04-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:1(?:1(?:3[0-58]|4[0-5]|5[0-26-9]|6[0-4]|[78][0-49])|2(?:0[024-9]|1[0-7]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)|3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))|2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d)\\\\d{6}|1(?:(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d|7(?:(?:26(?:6[13-9]|7[0-7])|442\\\\d|50(?:2[0-3]|[3-68]2|76))\\\\d|6888[2-46-8]))\\\\d\\\\d\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],GD:[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"473$1\",0,\"473\"],GE:[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],GF:[\"594\",\"00\",\"[56]94\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]\"],\"0$1\"]],\"0\"],GG:[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"0|([25-9]\\\\d{5})$\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],GH:[\"233\",\"00\",\"(?:[235]\\\\d{3}|800)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[235]\"],\"0$1\"]],\"0\"],GI:[\"350\",\"00\",\"(?:[25]\\\\d\\\\d|629)\\\\d{5}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],GL:[\"299\",\"00\",\"(?:19|[2-689]\\\\d)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-689]\"]]]],GM:[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],GN:[\"224\",\"00\",\"(?:30|6\\\\d\\\\d|722)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],GP:[\"590\",\"00\",\"(?:590|69\\\\d)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"590(?:0[1-68]|1[0-2]|2[0-68]|3[1289]|4[0-24-9]|5[3-579]|6[0189]|7[08]|8[0-689]|9\\\\d)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"]]],GQ:[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],GR:[\"30\",\"00\",\"(?:[268]\\\\d|[79]0)\\\\d{8}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]]]],GT:[\"502\",\"00\",\"(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],GU:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([3-9]\\\\d{6})$\",\"671$1\",0,\"671\"],GW:[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],GY:[\"592\",\"001\",\"(?:862\\\\d|9008)\\\\d{3}|(?:[2-46]\\\\d|77)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46-9]\"]]]],HK:[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4}(?:\\\\d(?:\\\\d(?:\\\\d{4})?)?)?|(?:[235-79]\\\\d|46)\\\\d{6}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],HN:[\"504\",\"00\",\"[237-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],HR:[\"385\",\"00\",\"(?:[24-69]\\\\d|3[0-79])\\\\d{7}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{5,6}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-5]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],HT:[\"509\",\"00\",\"[2-489]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-489]\"]]]],HU:[\"36\",\"00\",\"[2357]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"($1)\"]],\"06\"],ID:[\"62\",\"0(?:0[17-9]|10(?:00|1[67]))\",\"(?:[1-36]|8\\\\d{5})\\\\d{6}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],IE:[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"]],\"0\"],IL:[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],IM:[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([5-8]\\\\d{5})$\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],IN:[\"91\",\"00\",\"(?:00800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|(?:55|61)2|7(?:31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|[2-4]1|5[17]|6[13]|7[14]|80)|7(?:12|(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:1(?:29|60|8[06])|261|552|788[01])[2-7]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|[4-8])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|[4-8])|7(?:1(?:[013-8]|9[6-9])|3179)|807(?:1|9[1-3])|(?:1552|7(?:28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:6|8[06])\",\"1(?:6|8[06]0)\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],IO:[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],IQ:[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],IR:[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],IS:[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],IT:[\"39\",\"00\",\"0\\\\d{6,10}|55\\\\d{8}|[08]\\\\d{5}|(?:3[0-8]|8)\\\\d{7,9}|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[245])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1[4679]|[38]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"3\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,[[\"0669[0-79]\\\\d{1,6}|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[1-356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"33\\\\d{9}|3[1-9]\\\\d{8}|3[2-9]\\\\d{7}\",[9,10,11]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d\\\\d|89(?:2|4[5-9]\\\\d))\\\\d{3}|89[45][0-4]\\\\d\\\\d|(?:1(?:44|6[346])|89(?:5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],0,0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],JE:[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"0|([0-24-8]\\\\d{5})$\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97[7-9]))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:0[0-2]|2[356]|4[0134]|5[49]|6[0-369]|77|81|9[39])\\\\d{6}\"],[\"56\\\\d{8}\"]]],JM:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],JO:[\"962\",\"00\",\"900\\\\d{5}|(?:(?:[268]|7\\\\d)\\\\d|32|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],JP:[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[257-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51|63)|9(?:49|80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[78]|96)|477|51[24]|636)|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[78]|96[2457-9])|477|51[24]|636[2-57-9])|9(?:496|802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"2(?:[34]7|[56]9|74|9[14-79])|82[0367]|993\",\"2(?:[34]7|[56]9|74|9(?:1[02-689]|[4-79]))|82[0367]|993[0-25-9]\",\"2(?:[34]7|59(?:[02-8]|1[0-689]|9[0-8])|69|74|9(?:1[02-689]|[4-79]))|82[0367]|993[0-25-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"2(?:2[12]|3[0-269]|4[59]|5[0-468]|62|7[1-35]|8[16]|9[0238])|4(?:2[1-57]|3[0-57]|[45]|6[28]|7[259]|8[1-9]|9[29])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|9(?:4[15]|9[12489])\",\"2(?:2[12]|3[0-269]|4[59]|5(?:[04][01]|[1-3]|[68]1)|62|7[1-35]|8[16]|9(?:[028]|3[015-9]))|4(?:2(?:[13-57]|21)|3[0-57]|[45]|6[28]|7(?:2|[59][019])|8[1-9]|9[29])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|9(?:4[15]|9(?:[1289]|4[0178]))\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-389])|60|8(?:2[124589]|3[279]|49|6[0-24-689]|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|5[138]|6[1-3]|7[156]|8[189]|93)\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:3[014-9]|7)|5(?:5[0-69]|[68]0|7[015-9]|9)|78[0189]|8(?:3[0134]|9[0-5])|917)|4(?:2(?:20|6|8[014-6]|9[178])|64|7[347])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|60|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3[29]|49|6(?:[0-24]|5[0-3589]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|5[138]|6[1-3]|7[156]|8[189]|93[34])|(?:264|837)[016-9]|(?:59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:(?:2|91)7|5(?:5[0-69]|[68]0|7[015-9]|9)|64[016-9]|78[0189]|8(?:3[0134]|9[0-5]))|4(?:2(?:20|6|8[014-6])|64|7[347])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|60|8(?:2(?:[1258]|4[0-39]|9(?:[0169]|2[1-9]|4[1-3]))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|5(?:[0-389]|5[23])|6[01]|9[0145])|7[0-468]|8[68])|9(?:[23][1-9]|5[138]|6[1-3]|7[156]|8[189]|93(?:31|4[357]))|(?:42|866)9[178]|(?:223|8699)[014-9]|(?:59[89]|8(?:68|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:(?:2|91)7|5(?:5[0-69]|[68]0|7[015-9]|9)|64[016-9]|78[0189]|8(?:3[0134]|9[0-5]))|4(?:2(?:20|6|8[014-6])|64|7[347])|5(?:2|3[045]|4[0-369]|5[29]|8[02389]|9[0-3])|60|8(?:2(?:[1258]|4[0-39]|9(?:[019]|4[1-3]|6(?:[0-47-9]|5[01346-9])))|3(?:[29]|7(?:[017-9]|6[6-8]))|49|6(?:[0-24]|5(?:[0-389]|5[23])|6[01]|9[0145])|7[0-468]|8[68])|9(?:5[138]|6[1-3]|7[156]|8[189]|93(?:31|4[357]))|(?:42|866)9[178]|(?:223|8699)[014-9]|(?:829(?:2|66)|9[23])[1-9]|(?:59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]|4(?:2[09]|7[01])\",\"[36]|4(?:2[09]|7(?:0[019]|1))\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3[3-8]|5[2-9])\",\"[14]|[29][2-9]|5[3-9]|7[2-4679]|8(?:[246-9]|3(?:[3-6][2-9]|7|8[2-5])|5[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[2579]|80\"],\"0$1\"]],\"0\"],KE:[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],KG:[\"996\",\"00\",\"(?:[235-7]\\\\d|99)\\\\d{7}|800\\\\d{6,7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],KH:[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],KI:[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],KM:[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],KN:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"869$1\",0,\"869\"],KP:[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|2)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],KR:[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],KW:[\"965\",\"00\",\"(?:18|[2569]\\\\d\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[25]\"]]]],KY:[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"345$1\",0,\"345\"],KZ:[\"7\",\"810\",\"33622\\\\d{5}|(?:7\\\\d|80)\\\\d{8}\",[10],0,\"8\",0,0,0,0,\"33|7\",0,\"8~10\"],LA:[\"856\",\"00\",\"(?:2\\\\d|3)\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"]],\"0\"],LB:[\"961\",\"00\",\"[7-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"]]],\"0\"],LC:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"758$1\",0,\"758\"],LI:[\"423\",\"00\",\"90\\\\d{5}|(?:[2378]|6\\\\d\\\\d)\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[237-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"0|(10(?:01|20|66))\"],LK:[\"94\",\"00\",\"(?:[1-7]\\\\d|[89]1)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],LR:[\"231\",\"00\",\"(?:2|33|5\\\\d|77|88)\\\\d{7}|[45]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\"]],\"0\"],LS:[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],LT:[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-79]\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"8 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(8-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(8-$1)\",1]],\"8\",0,\"[08]\"],LU:[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"2(?:[0367]|4[3-8])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],LV:[\"371\",\"00\",\"(?:[268]\\\\d|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[269]|8[01]\"]]]],LY:[\"218\",\"00\",\"(?:[2569]\\\\d|71)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[25-79]\"],\"0$1\"]],\"0\"],MA:[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{5})(\\\\d{4})\",\"$1-$2\",[\"5(?:29|38)\",\"5(?:29|38)[89]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5[45]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"5(?:2[2-489]|3[5-9]|9)|892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1-$2\",[\"[5-7]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"5(?:2(?:[015-79]\\\\d|2[02-9]|3[2-57]|4[2-8]|8[235-7])|3(?:[0-48]\\\\d|[57][2-9]|6[2-8]|9[3-9])|(?:4[067]|5[03])\\\\d)\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:0[067]|6[1267]|7[017]))\\\\d{6}\"],[\"80\\\\d{7}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"5924[01]\\\\d{4}\"]]],MC:[\"377\",\"00\",\"870\\\\d{5}|(?:[349]|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[39]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"6\"],\"0$1\"]],\"0\"],MD:[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],ME:[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],MF:[\"590\",\"00\",\"(?:590|69\\\\d)\\\\d{6}\",[9],0,\"0\",0,0,0,0,0,[[\"590(?:0[079]|[14]3|[27][79]|30|5[0-268]|87)\\\\d{4}\"],[\"69(?:0\\\\d\\\\d|1(?:2[29]|3[0-5]))\\\\d{4}\"]]],MG:[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"0|([24-9]\\\\d{6})$\",\"20$1\"],MH:[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],MK:[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],ML:[\"223\",\"00\",\"(?:[246-9]\\\\d|50)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],MM:[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[45]|6(?:0[23]|[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-6]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],MN:[\"976\",\"001\",\"[12]\\\\d{7,9}|[57-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[12]1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],MO:[\"853\",\"00\",\"(?:28|[68]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],MP:[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"670$1\",0,\"670\"],MQ:[\"596\",\"00\",\"(?:596|69\\\\d)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[56]\"],\"0$1\"]],\"0\"],MR:[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],MS:[\"1\",\"011\",\"66449\\\\d{5}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(4\\\\d{6})$\",\"664$1\",0,\"664\"],MT:[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],MU:[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[2-468]|5\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"5\"]]],0,0,0,0,0,0,0,\"020\"],MV:[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[3467]|9[14-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],MW:[\"265\",\"00\",\"1\\\\d{6}(?:\\\\d{2})?|(?:[23]1|77|88|99)\\\\d{7}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[17-9]\"],\"0$1\"]],\"0\"],MX:[\"52\",\"0[09]\",\"(?:1\\\\d|[2-9])\\\\d{9}\",[10,11],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"],\"01 $1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"],\"01 $1\",1],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 $3 $4\",[\"1(?:33|5[56]|81)\"],\"044 $1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 $3 $4\",[\"1\"],\"044 $1\",0,\"$1 $2 $3 $4\"]],\"01\",0,\"0[12]|04[45]([2-9]\\\\d{9})$\",\"1$1\",0,0,0,\"00\"],MY:[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[0249]|[367][2-9]|8[1-9])|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1[36-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],MZ:[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-7]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],NA:[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],NC:[\"687\",\"00\",\"[2-57-9]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[2-57-9]\"]]]],NE:[\"227\",\"00\",\"[0289]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[01]\"]]]],NF:[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"3\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],NG:[\"234\",\"009\",\"(?:[124-7]|9\\\\d{3})\\\\d{6}|[1-9]\\\\d{7}|[78]\\\\d{9,13}\",[7,8,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"78\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|9(?:0[3-9]|[1-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-7]|8[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],NI:[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],NL:[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|[89]\\\\d{6,9}|1\\\\d{4,5}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-57-9]\"],\"0$1\"]],\"0\"],NO:[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[489]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-7]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],NP:[\"977\",\"00\",\"9\\\\d{9}|[1-9]\\\\d{7}\",[8,10],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"[1-8]|9(?:[1-579]|6[2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],NR:[\"674\",\"00\",\"(?:444|55\\\\d|888)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[458]\"]]]],NU:[\"683\",\"00\",\"(?:[47]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],NZ:[\"64\",\"0(?:0|161)\",\"[28]\\\\d{7,9}|[346]\\\\d{7}|(?:508|[79]\\\\d)\\\\d{6,7}\",[8,9,10],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[59]|80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7|86\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],OM:[\"968\",\"00\",\"(?:[279]\\\\d{3}|500)\\\\d{4}|8007\\\\d{4,5}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[79]\"]]]],PA:[\"507\",\"00\",\"(?:[1-57-9]|6\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"6\"]]]],PE:[\"51\",\"19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,0,\" Anexo \"],PF:[\"689\",\"00\",\"[48]\\\\d{7}|4\\\\d{5}\",[6,8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[48]\"]]]],PG:[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],PH:[\"63\",\"00\",\"(?:1800|8)\\\\d{7,9}|2\\\\d{5}(?:\\\\d{2})?|(?:[3-7]|9\\\\d)\\\\d{8}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],PK:[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[025-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],PL:[\"48\",\"00\",\"[1-57-9]\\\\d{6}(?:\\\\d{2})?|6\\\\d{5,8}\",[6,7,8,9],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"39|45|5[0137]|6[0469]|7[02389]|8[08]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-8]|9[145]\"]]]],PM:[\"508\",\"00\",\"[45]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[45]\"],\"0$1\"]],\"0\"],PR:[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],PS:[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],PT:[\"351\",\"00\",\"(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"]]]],PW:[\"680\",\"01[12]\",\"(?:[25-8]\\\\d\\\\d|345|488|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],PY:[\"595\",\"00\",\"59\\\\d{4,6}|(?:[2-46-9]\\\\d|5[0-8])\\\\d{4,7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6[347]|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[26]1|3[289]|4[1246-8]|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"]],\"0\"],QA:[\"974\",\"00\",\"800\\\\d{4}|(?:2|[3-7]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[126]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],RE:[\"262\",\"00\",\"(?:26|[68]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[268]\"],\"0$1\"]],\"0\",0,0,0,0,\"262|69|8\"],RO:[\"40\",\"00\",\"(?:[237]\\\\d|[89]0)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[237-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],RS:[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],RU:[\"7\",\"810\",\"[347-9]\\\\d{9}\",[10],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-6]2|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[3489]\"],\"8 ($1)\",1]],\"8\",0,0,0,0,\"3[04-689]|[489]\",0,\"8~10\"],RW:[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],SA:[\"966\",\"00\",\"92\\\\d{7}|(?:[15]|8\\\\d)\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],SB:[\"677\",\"0[01]\",\"(?:[1-6]|[7-9]\\\\d\\\\d)\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],SC:[\"248\",\"010|0[0-2]\",\"8000\\\\d{3}|(?:[249]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]\"]]],0,0,0,0,0,0,0,\"00\"],SD:[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],SE:[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],SG:[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8[1-8]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],SH:[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],SI:[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],SJ:[\"47\",\"00\",\"0\\\\d{4}|(?:[4589]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],SK:[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1/$2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],SL:[\"232\",\"00\",\"(?:[2-578]\\\\d|66|99)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[2-9]\"],\"(0$1)\"]],\"0\"],SM:[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],SN:[\"221\",\"00\",\"(?:[378]\\\\d{4}|93330)\\\\d{4}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],SO:[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|(?:[1-4]\\\\d|59)\\\\d{5}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"1|2[0-79]|3[0-46-8]|4[0-7]|59\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"24|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79[0-8]|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[1-35-9]|799|9[2-9]\"]]],\"0\"],SR:[\"597\",\"00\",\"(?:[2-5]|68|[78]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-8]\"]]]],SS:[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],ST:[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],SV:[\"503\",\"00\",\"[267]\\\\d{7}|[89]00\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[267]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],SX:[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|(5\\\\d{6})$\",\"721$1\",0,\"721\"],SY:[\"963\",\"00\",\"[1-39]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-5]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\",1]],\"0\"],SZ:[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],TA:[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],TC:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-479]\\\\d{6})$\",\"649$1\",0,\"649\"],TD:[\"235\",\"00|16\",\"(?:22|[69]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2679]\"]]],0,0,0,0,0,0,0,\"00\"],TG:[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],TH:[\"66\",\"00[1-9]\",\"1\\\\d{8,9}|(?:[2-57]|[689]\\\\d)\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"14|[3-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],TJ:[\"992\",\"810\",\"(?:[3-59]\\\\d|77|88)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"],0,1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[34]7|91[78]\"],0,1],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[457-9]\"],0,1]],\"8\",0,0,0,0,0,0,\"8~10\"],TK:[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],TL:[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],TM:[\"993\",\"810\",\"[1-6]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"6\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],TN:[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],TO:[\"676\",\"00\",\"[78]\\\\d{6}|[2-478]\\\\d{4}|(?:080|[56])0\\\\d{3}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-6]|7[014]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"7[578]|8\"]]]],TR:[\"90\",\"00\",\"(?:[2-58]\\\\d\\\\d|900)\\\\d{7}|4\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[0589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-59]|61)\",\"5(?:[0-59]|616)\",\"5(?:[0-59]|6161)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1]],\"0\"],TT:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-46-8]\\\\d{6})$\",\"868$1\",0,\"868\"],TV:[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7]],TW:[\"886\",\"0(?:0[25-79]|19)\",\"(?:[24589]|7\\\\d)\\\\d{8}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25][2-8]|[346]|7[1-9]|8[27-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[258]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],TZ:[\"255\",\"00[056]\",\"(?:[26-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],UA:[\"380\",\"00\",\"[3-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|[89]0|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|[89]0|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],UG:[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],US:[\"1\",\"011\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:2(?:0[1-35-9]|1[02-9]|2[03-589]|3[149]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[0-24679]|4[67]|5[12]|6[014]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|6[39]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-47]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[03689]|[34][016]|5[017]|6[0-279]|78|8[0-2])|7(?:0[1-46-8]|1[2-9]|2[04-7]|3[1247]|4[037]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|2[08]|3[0-28]|4[3578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[0179]|5[12469]|7[0-389]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"5(?:00|2[12]|33|44|66|77|88)[2-9]\\\\d{6}\"],0,[\"710[2-9]\\\\d{6}\"]]],UY:[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"(?:[249]\\\\d\\\\d|80)\\\\d{5}|9\\\\d{6}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[24]\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],UZ:[\"998\",\"810\",\"[679]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[679]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],VA:[\"39\",\"00\",\"0\\\\d{6,10}|55\\\\d{8}|[08]\\\\d{5}|(?:3[0-8]|8)\\\\d{7,9}|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11],0,0,0,0,0,0,\"06698\"],VC:[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-7]\\\\d{6})$\",\"784$1\",0,\"784\"],VE:[\"58\",\"00\",\"[89]00\\\\d{7}|(?:[24]\\\\d|50)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24589]\"],\"0$1\"]],\"0\"],VG:[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"1|([2-578]\\\\d{6})$\",\"284$1\",0,\"284\"],VI:[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"1|([2-9]\\\\d{6})$\",\"340$1\",0,\"340\"],VN:[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[69]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[3578]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],VU:[\"678\",\"00\",\"(?:[23]\\\\d|[48]8)\\\\d{3}|(?:[57]\\\\d|90)\\\\d{5}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[579]\"]]]],WF:[\"681\",\"00\",\"(?:[45]0|68|72|8\\\\d)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[4-8]\"]]]],WS:[\"685\",\"0\",\"[2-6]\\\\d{4}|8\\\\d{5}(?:\\\\d{4})?|[78]\\\\d{6}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-6]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"8\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],XK:[\"383\",\"00\",\"[23]\\\\d{7,8}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[23]\"],\"0$1\"]],\"0\"],YE:[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7[24-68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],YT:[\"262\",\"00\",\"80\\\\d{7}|(?:26|63)9\\\\d{6}\",[9],0,\"0\",0,0,0,0,\"269|63\"],ZA:[\"27\",\"00\",\"[1-9]\\\\d{8}|8\\\\d{4,7}\",[5,6,7,8,9],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"]],\"0\"],ZM:[\"260\",\"00\",\"800\\\\d{6}|(?:21|76|9\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[79]\"],\"0$1\"]],\"0\"],ZW:[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"],\"001\":[\"979\",0,\"\\\\d{9}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\"]]]};var metadata = {version:version,country_calling_codes:country_calling_codes,countries:countries};\n\n// The minimum length of the national significant number.\nvar MIN_LENGTH_FOR_NSN = 2;\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nvar MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nvar MAX_LENGTH_COUNTRY_CODE = 3;\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nvar VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9';\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D';\nvar SLASHES = '\\uFF0F/';\nvar DOTS = '\\uFF0E.';\nvar WHITESPACE = ' \\xA0\\xAD\\u200B\\u2060\\u3000';\nvar BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]';\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = '~\\u2053\\u223C\\uFF5E';\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nvar VALID_PUNCTUATION = '' + DASHES + SLASHES + DOTS + WHITESPACE + BRACKETS + TILDES;\n\nvar PLUS_CHARS = '+\\uFF0B';\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n\n// Checks whether the entire input sequence can be matched\n// against the regular expression.\nfunction matchesEntirely() {\n\tvar text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\tvar regular_expression = arguments[1];\n\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n\n/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\nfunction mergeArrays(a, b) {\n\tvar merged = a.slice();\n\n\tfor (var _iterator = b, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar element = _ref;\n\n\t\tif (a.indexOf(element) < 0) {\n\t\t\tmerged.push(element);\n\t\t}\n\t}\n\n\treturn merged.sort(function (a, b) {\n\t\treturn a - b;\n\t});\n\n\t// ES6 version, requires Set polyfill.\n\t// let merged = new Set(a)\n\t// for (const element of b)\n\t// {\n\t// \tmerged.add(i)\n\t// }\n\t// return Array.from(merged).sort((a, b) => a - b)\n}\n\nfunction _classCallCheck$2(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// https://stackoverflow.com/a/46971044/970769\nvar ParseError = function ParseError(code) {\n _classCallCheck$2(this, ParseError);\n\n this.name = this.constructor.name;\n this.message = code;\n this.stack = new Error(code).stack;\n};\n\n\nParseError.prototype = Object.create(Error.prototype);\nParseError.prototype.constructor = ParseError;\n\nvar semverCompare = function cmp (a, b) {\n var pa = a.split('.');\n var pb = b.split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n return 0;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass$2 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Added \"idd_prefix\" and \"default_idd_prefix\".\nvar V3 = '1.2.0';\n\nvar DEFAULT_EXT_PREFIX = ' ext. ';\n\nvar Metadata = function () {\n\tfunction Metadata(metadata) {\n\t\t_classCallCheck$3(this, Metadata);\n\n\t\tvalidateMetadata(metadata);\n\n\t\tthis.metadata = metadata;\n\n\t\tthis.v1 = !metadata.version;\n\t\tthis.v2 = metadata.version !== undefined && semverCompare(metadata.version, V3) === -1;\n\t\tthis.v3 = metadata.version !== undefined; // && compare(metadata.version, V4) === -1\n\t}\n\n\t_createClass$2(Metadata, [{\n\t\tkey: 'hasCountry',\n\t\tvalue: function hasCountry(country) {\n\t\t\treturn this.metadata.countries[country] !== undefined;\n\t\t}\n\t}, {\n\t\tkey: 'country',\n\t\tvalue: function country(_country) {\n\t\t\tif (!_country) {\n\t\t\t\tthis._country = undefined;\n\t\t\t\tthis.country_metadata = undefined;\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this.hasCountry(_country)) {\n\t\t\t\tthrow new Error('Unknown country: ' + _country);\n\t\t\t}\n\n\t\t\tthis._country = _country;\n\t\t\tthis.country_metadata = this.metadata.countries[_country];\n\t\t\treturn this;\n\t\t}\n\t}, {\n\t\tkey: 'getDefaultCountryMetadataForRegion',\n\t\tvalue: function getDefaultCountryMetadataForRegion() {\n\t\t\treturn this.metadata.countries[this.countryCallingCodes()[this.countryCallingCode()][0]];\n\t\t}\n\t}, {\n\t\tkey: 'countryCallingCode',\n\t\tvalue: function countryCallingCode() {\n\t\t\treturn this.country_metadata[0];\n\t\t}\n\t}, {\n\t\tkey: 'IDDPrefix',\n\t\tvalue: function IDDPrefix() {\n\t\t\tif (this.v1 || this.v2) return;\n\t\t\treturn this.country_metadata[1];\n\t\t}\n\t}, {\n\t\tkey: 'defaultIDDPrefix',\n\t\tvalue: function defaultIDDPrefix() {\n\t\t\tif (this.v1 || this.v2) return;\n\t\t\treturn this.country_metadata[12];\n\t\t}\n\t}, {\n\t\tkey: 'nationalNumberPattern',\n\t\tvalue: function nationalNumberPattern() {\n\t\t\tif (this.v1 || this.v2) return this.country_metadata[1];\n\t\t\treturn this.country_metadata[2];\n\t\t}\n\t}, {\n\t\tkey: 'possibleLengths',\n\t\tvalue: function possibleLengths() {\n\t\t\tif (this.v1) return;\n\t\t\treturn this.country_metadata[this.v2 ? 2 : 3];\n\t\t}\n\t}, {\n\t\tkey: '_getFormats',\n\t\tvalue: function _getFormats(country_metadata) {\n\t\t\treturn country_metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// formats are all stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'formats',\n\t\tvalue: function formats() {\n\t\t\tvar _this = this;\n\n\t\t\tvar formats = this._getFormats(this.country_metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n\t\t\treturn formats.map(function (_) {\n\t\t\t\treturn new Format(_, _this);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefix',\n\t\tvalue: function nationalPrefix() {\n\t\t\treturn this.country_metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n\t\t}\n\t}, {\n\t\tkey: '_getNationalPrefixFormattingRule',\n\t\tvalue: function _getNationalPrefixFormattingRule(country_metadata) {\n\t\t\treturn country_metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// national prefix formatting rule is stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'nationalPrefixFormattingRule',\n\t\tvalue: function nationalPrefixFormattingRule() {\n\t\t\treturn this._getNationalPrefixFormattingRule(this.country_metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixForParsing',\n\t\tvalue: function nationalPrefixForParsing() {\n\t\t\t// If `national_prefix_for_parsing` is not set explicitly,\n\t\t\t// then infer it from `national_prefix` (if any)\n\t\t\treturn this.country_metadata[this.v1 ? 5 : this.v2 ? 6 : 7] || this.nationalPrefix();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixTransformRule',\n\t\tvalue: function nationalPrefixTransformRule() {\n\t\t\treturn this.country_metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n\t\t}\n\t}, {\n\t\tkey: '_getNationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function _getNationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn !!this.country_metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// \"national prefix is optional when parsing\" flag is\n\t\t// stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'nationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function nationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.country_metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n\t\t}\n\t}, {\n\t\tkey: 'leadingDigits',\n\t\tvalue: function leadingDigits() {\n\t\t\treturn this.country_metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n\t\t}\n\t}, {\n\t\tkey: 'types',\n\t\tvalue: function types() {\n\t\t\treturn this.country_metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n\t\t}\n\t}, {\n\t\tkey: 'hasTypes',\n\t\tvalue: function hasTypes() {\n\t\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\n\t\t\t/* istanbul ignore next */\n\t\t\tif (this.types() && this.types().length === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Versions <= 1.2.4: can be `undefined`.\n\t\t\t// Version >= 1.2.5: can be `0`.\n\t\t\treturn !!this.types();\n\t\t}\n\t}, {\n\t\tkey: 'type',\n\t\tvalue: function type(_type) {\n\t\t\tif (this.hasTypes() && getType(this.types(), _type)) {\n\t\t\t\treturn new Type(getType(this.types(), _type), this);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'ext',\n\t\tvalue: function ext() {\n\t\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n\t\t\treturn this.country_metadata[13] || DEFAULT_EXT_PREFIX;\n\t\t}\n\t}, {\n\t\tkey: 'countryCallingCodes',\n\t\tvalue: function countryCallingCodes() {\n\t\t\tif (this.v1) return this.metadata.country_phone_code_to_countries;\n\t\t\treturn this.metadata.country_calling_codes;\n\t\t}\n\n\t\t// Formatting information for regions which share\n\t\t// a country calling code is contained by only one region\n\t\t// for performance reasons. For example, for NANPA region\n\t\t// (\"North American Numbering Plan Administration\",\n\t\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\n\t\t// it will be contained in the metadata for `US`.\n\t\t//\n\t\t// `country_calling_code` is always valid.\n\t\t// But the actual country may not necessarily be part of the metadata.\n\t\t//\n\n\t}, {\n\t\tkey: 'chooseCountryByCountryCallingCode',\n\t\tvalue: function chooseCountryByCountryCallingCode(country_calling_code) {\n\t\t\tvar country = this.countryCallingCodes()[country_calling_code][0];\n\n\t\t\t// Do not want to test this case.\n\t\t\t// (custom metadata, not all countries).\n\t\t\t/* istanbul ignore else */\n\t\t\tif (this.hasCountry(country)) {\n\t\t\t\tthis.country(country);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'selectedCountry',\n\t\tvalue: function selectedCountry() {\n\t\t\treturn this._country;\n\t\t}\n\t}]);\n\n\treturn Metadata;\n}();\n\nvar Format = function () {\n\tfunction Format(format, metadata) {\n\t\t_classCallCheck$3(this, Format);\n\n\t\tthis._format = format;\n\t\tthis.metadata = metadata;\n\t}\n\n\t_createClass$2(Format, [{\n\t\tkey: 'pattern',\n\t\tvalue: function pattern() {\n\t\t\treturn this._format[0];\n\t\t}\n\t}, {\n\t\tkey: 'format',\n\t\tvalue: function format() {\n\t\t\treturn this._format[1];\n\t\t}\n\t}, {\n\t\tkey: 'leadingDigitsPatterns',\n\t\tvalue: function leadingDigitsPatterns() {\n\t\t\treturn this._format[2] || [];\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixFormattingRule',\n\t\tvalue: function nationalPrefixFormattingRule() {\n\t\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function nationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormatting();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixIsMandatoryWhenFormatting',\n\t\tvalue: function nationalPrefixIsMandatoryWhenFormatting() {\n\t\t\t// National prefix is omitted if there's no national prefix formatting rule\n\t\t\t// set for this country, or when the national prefix formatting rule\n\t\t\t// contains no national prefix itself, or when this rule is set but\n\t\t\t// national prefix is optional for this phone number format\n\t\t\t// (and it is not enforced explicitly)\n\t\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormatting();\n\t\t}\n\n\t\t// Checks whether national prefix formatting rule contains national prefix.\n\n\t}, {\n\t\tkey: 'usesNationalPrefix',\n\t\tvalue: function usesNationalPrefix() {\n\t\t\treturn this.nationalPrefixFormattingRule() &&\n\t\t\t// Check that national prefix formatting rule is not a dummy one.\n\t\t\tthis.nationalPrefixFormattingRule() !== '$1' &&\n\t\t\t// Check that national prefix formatting rule actually has national prefix digit(s).\n\t\t\t/\\d/.test(this.nationalPrefixFormattingRule().replace('$1', ''));\n\t\t}\n\t}, {\n\t\tkey: 'internationalFormat',\n\t\tvalue: function internationalFormat() {\n\t\t\treturn this._format[5] || this.format();\n\t\t}\n\t}]);\n\n\treturn Format;\n}();\n\nvar Type = function () {\n\tfunction Type(type, metadata) {\n\t\t_classCallCheck$3(this, Type);\n\n\t\tthis.type = type;\n\t\tthis.metadata = metadata;\n\t}\n\n\t_createClass$2(Type, [{\n\t\tkey: 'pattern',\n\t\tvalue: function pattern() {\n\t\t\tif (this.metadata.v1) return this.type;\n\t\t\treturn this.type[0];\n\t\t}\n\t}, {\n\t\tkey: 'possibleLengths',\n\t\tvalue: function possibleLengths() {\n\t\t\tif (this.metadata.v1) return;\n\t\t\treturn this.type[1] || this.metadata.possibleLengths();\n\t\t}\n\t}]);\n\n\treturn Type;\n}();\n\nfunction getType(types, type) {\n\tswitch (type) {\n\t\tcase 'FIXED_LINE':\n\t\t\treturn types[0];\n\t\tcase 'MOBILE':\n\t\t\treturn types[1];\n\t\tcase 'TOLL_FREE':\n\t\t\treturn types[2];\n\t\tcase 'PREMIUM_RATE':\n\t\t\treturn types[3];\n\t\tcase 'PERSONAL_NUMBER':\n\t\t\treturn types[4];\n\t\tcase 'VOICEMAIL':\n\t\t\treturn types[5];\n\t\tcase 'UAN':\n\t\t\treturn types[6];\n\t\tcase 'PAGER':\n\t\t\treturn types[7];\n\t\tcase 'VOIP':\n\t\t\treturn types[8];\n\t\tcase 'SHARED_COST':\n\t\t\treturn types[9];\n\t}\n}\n\nfunction validateMetadata(metadata) {\n\tif (!metadata) {\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n\t}\n\n\t// `country_phone_code_to_countries` was renamed to\n\t// `country_calling_codes` in `1.0.18`.\n\tif (!is_object(metadata) || !is_object(metadata.countries) || !is_object(metadata.country_calling_codes) && !is_object(metadata.country_phone_code_to_countries)) {\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument was passed but it\\'s not a valid metadata. Must be an object having `.countries` and `.country_calling_codes` child object properties. Got ' + (is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata) + '.');\n\t}\n}\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar is_object = function is_object(_) {\n\treturn (typeof _ === 'undefined' ? 'undefined' : _typeof(_)) === 'object';\n};\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar type_of = function type_of(_) {\n\treturn typeof _ === 'undefined' ? 'undefined' : _typeof(_);\n};\n\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\nfunction getCountryCallingCode(country, metadata) {\n\tmetadata = new Metadata(metadata);\n\tif (metadata.hasCountry(country)) {\n\t\treturn metadata.country(country).countryCallingCode();\n\t}\n\tthrow new Error('Unknown country: ' + country);\n}\n\nfunction isSupportedCountry(country, metadata) {\n\t// metadata = new Metadata(metadata)\n\t// return metadata.hasCountry(country)\n\treturn metadata.countries[country] !== undefined;\n}\n\n// The RFC 3966 format for extensions.\nvar RFC3966_EXTN_PREFIX = ';ext=';\n\n// Pattern to capture digits used in an extension.\n// Places a maximum length of '7' for an extension.\nvar CAPTURING_EXTN_DIGITS = '([' + VALID_DIGITS + ']{1,7})';\n\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\nfunction create_extension_pattern(purpose) {\n\t// One-character symbols that can be used to indicate an extension.\n\tvar single_extension_characters = 'x\\uFF58#\\uFF03~\\uFF5E';\n\n\tswitch (purpose) {\n\t\t// For parsing, we are slightly more lenient in our interpretation than for matching. Here we\n\t\t// allow \"comma\" and \"semicolon\" as possible extension indicators. When matching, these are\n\t\tcase 'parsing':\n\t\t\tsingle_extension_characters = ',;' + single_extension_characters;\n\t}\n\n\treturn RFC3966_EXTN_PREFIX + CAPTURING_EXTN_DIGITS + '|' + '[ \\xA0\\\\t,]*' + '(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|' +\n\t// \"доб.\"\n\t'\\u0434\\u043E\\u0431|' + '[' + single_extension_characters + ']|int|anexo|\\uFF49\\uFF4E\\uFF54)' + '[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*' + CAPTURING_EXTN_DIGITS + '#?|' + '[- ]+([' + VALID_DIGITS + ']{1,5})#';\n}\n\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\nvar EXTN_PATTERNS_FOR_PARSING = create_extension_pattern('parsing');\n\nvar EXTN_PATTERNS_FOR_MATCHING = create_extension_pattern('matching');\n\n// Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\nvar EXTN_PATTERN = new RegExp('(?:' + EXTN_PATTERNS_FOR_PARSING + ')$', 'i');\n\n// Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\nfunction extractExtension(number) {\n\tvar start = number.search(EXTN_PATTERN);\n\tif (start < 0) {\n\t\treturn {};\n\t}\n\n\t// If we find a potential extension, and the number preceding this is a viable\n\t// number, we assume it is an extension.\n\tvar number_without_extension = number.slice(0, start);\n\n\tvar matches = number.match(EXTN_PATTERN);\n\tvar i = 1;\n\twhile (i < matches.length) {\n\t\tif (matches[i] != null && matches[i].length > 0) {\n\t\t\treturn {\n\t\t\t\tnumber: number_without_extension,\n\t\t\t\text: matches[i]\n\t\t\t};\n\t\t}\n\t\ti++;\n\t}\n}\n\n// Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}';\n//\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\nvar VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\n// The combined regular expression for valid phone numbers:\n//\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp(\n// Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' +\n// Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER +\n// Phone number extensions\n'(?:' + EXTN_PATTERNS_FOR_PARSING + ')?' + '$', 'i');\n\n// Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\nfunction isViablePhoneNumber(number) {\n\treturn number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n}\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nvar DIGITS = {\n\t'0': '0',\n\t'1': '1',\n\t'2': '2',\n\t'3': '3',\n\t'4': '4',\n\t'5': '5',\n\t'6': '6',\n\t'7': '7',\n\t'8': '8',\n\t'9': '9',\n\t'\\uFF10': '0', // Fullwidth digit 0\n\t'\\uFF11': '1', // Fullwidth digit 1\n\t'\\uFF12': '2', // Fullwidth digit 2\n\t'\\uFF13': '3', // Fullwidth digit 3\n\t'\\uFF14': '4', // Fullwidth digit 4\n\t'\\uFF15': '5', // Fullwidth digit 5\n\t'\\uFF16': '6', // Fullwidth digit 6\n\t'\\uFF17': '7', // Fullwidth digit 7\n\t'\\uFF18': '8', // Fullwidth digit 8\n\t'\\uFF19': '9', // Fullwidth digit 9\n\t'\\u0660': '0', // Arabic-indic digit 0\n\t'\\u0661': '1', // Arabic-indic digit 1\n\t'\\u0662': '2', // Arabic-indic digit 2\n\t'\\u0663': '3', // Arabic-indic digit 3\n\t'\\u0664': '4', // Arabic-indic digit 4\n\t'\\u0665': '5', // Arabic-indic digit 5\n\t'\\u0666': '6', // Arabic-indic digit 6\n\t'\\u0667': '7', // Arabic-indic digit 7\n\t'\\u0668': '8', // Arabic-indic digit 8\n\t'\\u0669': '9', // Arabic-indic digit 9\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\n};\n\nfunction parseDigit(character) {\n\treturn DIGITS[character];\n}\n\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\nfunction parseDigits(string) {\n\tvar result = '';\n\n\t// Using `.split('')` here instead of normal `for ... of`\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\n\t// (the ones consisting of four bytes) but digits\n\t// (including non-European ones) don't fall into that range\n\t// so such \"exotic\" characters would be discarded anyway.\n\tfor (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar character = _ref;\n\n\t\tvar digit = parseDigit(character);\n\t\tif (digit) {\n\t\t\tresult += digit;\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * // Outputs '+7800555'.\r\n * ```\r\n */\nfunction parseIncompletePhoneNumber(string) {\n\tvar result = '';\n\n\t// Using `.split('')` here instead of normal `for ... of`\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\n\t// (the ones consisting of four bytes) but digits\n\t// (including non-European ones) don't fall into that range\n\t// so such \"exotic\" characters would be discarded anyway.\n\tfor (var _iterator = string.split(''), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar character = _ref;\n\n\t\tresult += parsePhoneNumberCharacter(character, result) || '';\n\t}\n\n\treturn result;\n}\n\n/**\r\n * `input-format` `parse()` function.\r\n * https://github.com/catamphetamine/input-format\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string} value - The value parsed so far.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\nfunction parsePhoneNumberCharacter(character, value) {\n\t// Only allow a leading `+`.\n\tif (character === '+') {\n\t\t// If this `+` is not the first parsed character\n\t\t// then discard it.\n\t\tif (value) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn '+';\n\t}\n\n\t// Allow digits.\n\treturn parseDigit(character);\n}\n\n// Deprecated. Import from 'metadata.js' directly instead.\n\nvar NON_FIXED_LINE_PHONE_TYPES = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL'];\n\n// Finds out national phone number type (fixed line, mobile, etc)\nfunction getNumberType(input) {\n\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\tvar metadata = arguments[2];\n\n\t// When `parse()` returned `{}`\n\t// meaning that the phone number is not a valid one.\n\tif (!input.country) {\n\t\treturn;\n\t}\n\n\tmetadata = new Metadata(metadata);\n\n\tif (!metadata.hasCountry(input.country)) {\n\t\tthrow new Error('Unknown country: ' + input.country);\n\t}\n\n\tvar nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n\tmetadata.country(input.country);\n\n\t// The following is copy-pasted from the original function:\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n\n\t// Is this national number even valid for this country\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\n\t\treturn;\n\t}\n\n\t// Is it fixed line number\n\tif (is_of_type(nationalNumber, 'FIXED_LINE', metadata)) {\n\t\t// Because duplicate regular expressions are removed\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\n\t\t//\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\t// v1 metadata.\n\t\t// Legacy.\n\t\t// Deprecated.\n\t\tif (!metadata.type('MOBILE')) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\n\t\t// (no such country in the minimal metadata set)\n\t\t/* istanbul ignore if */\n\t\tif (is_of_type(nationalNumber, 'MOBILE', metadata)) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\treturn 'FIXED_LINE';\n\t}\n\n\tfor (var _iterator = NON_FIXED_LINE_PHONE_TYPES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar _type = _ref;\n\n\t\tif (is_of_type(nationalNumber, _type, metadata)) {\n\t\t\treturn _type;\n\t\t}\n\t}\n}\n\nfunction is_of_type(nationalNumber, type, metadata) {\n\ttype = metadata.type(type);\n\n\tif (!type || !type.pattern()) {\n\t\treturn false;\n\t}\n\n\t// Check if any possible number lengths are present;\n\t// if so, we use them to avoid checking\n\t// the validation pattern if they don't match.\n\t// If they are absent, this means they match\n\t// the general description, which we have\n\t// already checked before a specific number type.\n\tif (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n\t\treturn false;\n\t}\n\n\treturn matchesEntirely(nationalNumber, type.pattern());\n}\n\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\nfunction checkNumberLengthForType(nationalNumber, type, metadata) {\n\tvar type_info = metadata.type(type);\n\n\t// There should always be \"<possiblePengths/>\" set for every type element.\n\t// This is declared in the XML schema.\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n\t// so we fall back to the \"general description\". Where no numbers of the type\n\t// exist at all, there is one possible length (-1) which is guaranteed\n\t// not to match the length of any real phone number.\n\tvar possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths();\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\n\t\t// No such country in metadata.\n\t\t/* istanbul ignore next */\n\t\tif (!metadata.type('FIXED_LINE')) {\n\t\t\t// The rare case has been encountered where no fixedLine data is available\n\t\t\t// (true for some non-geographical entities), so we just check mobile.\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata);\n\t\t}\n\n\t\tvar mobile_type = metadata.type('MOBILE');\n\n\t\tif (mobile_type) {\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\n\t\t\t// Note that when adding the possible lengths from mobile, we have\n\t\t\t// to again check they aren't empty since if they are this indicates\n\t\t\t// they are the same as the general desc and should be obtained from there.\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths());\n\t\t\t// The current list is sorted; we need to merge in the new list and\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\n\t\t\t// the lists are very small.\n\n\t\t\t// if (local_lengths)\n\t\t\t// {\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n\t\t\t// }\n\t\t\t// else\n\t\t\t// {\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\n\t\t\t// }\n\t\t}\n\t}\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\n\telse if (type && !type_info) {\n\t\t\treturn 'INVALID_LENGTH';\n\t\t}\n\n\tvar actual_length = nationalNumber.length;\n\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n\t// // This is safe because there is never an overlap beween the possible lengths\n\t// // and the local-only lengths; this is checked at build time.\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n\t// {\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n\t// }\n\n\tvar minimum_length = possible_lengths[0];\n\n\tif (minimum_length === actual_length) {\n\t\treturn 'IS_POSSIBLE';\n\t}\n\n\tif (minimum_length > actual_length) {\n\t\treturn 'TOO_SHORT';\n\t}\n\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\n\t\treturn 'TOO_LONG';\n\t}\n\n\t// We skip the first element since we've already checked it.\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n\nfunction isPossibleNumber(input, options, metadata) {\n\t/* istanbul ignore if */\n\tif (options === undefined) {\n\t\toptions = {};\n\t}\n\n\tmetadata = new Metadata(metadata);\n\n\tif (options.v2) {\n\t\tif (!input.countryCallingCode) {\n\t\t\tthrow new Error('Invalid phone number object passed');\n\t\t}\n\t\tmetadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n\t} else {\n\t\tif (!input.phone) {\n\t\t\treturn false;\n\t\t}\n\t\tif (input.country) {\n\t\t\tif (!metadata.hasCountry(input.country)) {\n\t\t\t\tthrow new Error('Unknown country: ' + input.country);\n\t\t\t}\n\t\t\tmetadata.country(input.country);\n\t\t} else {\n\t\t\tif (!input.countryCallingCode) {\n\t\t\t\tthrow new Error('Invalid phone number object passed');\n\t\t\t}\n\t\t\tmetadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n\t\t}\n\t}\n\n\tif (!metadata.possibleLengths()) {\n\t\tthrow new Error('Metadata too old');\n\t}\n\n\treturn is_possible_number(input.phone || input.nationalNumber, undefined, metadata);\n}\n\nfunction is_possible_number(national_number, is_international, metadata) {\n\tswitch (checkNumberLengthForType(national_number, undefined, metadata)) {\n\t\tcase 'IS_POSSIBLE':\n\t\t\treturn true;\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t// \treturn !is_international\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\n\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\nvar SINGLE_IDD_PREFIX = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/;\n\n// For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\nfunction getIDDPrefix(country, metadata) {\n\tvar countryMetadata = new Metadata(metadata);\n\tcountryMetadata.country(country);\n\n\tif (SINGLE_IDD_PREFIX.test(countryMetadata.IDDPrefix())) {\n\t\treturn countryMetadata.IDDPrefix();\n\t}\n\n\treturn countryMetadata.defaultIDDPrefix();\n}\n\nfunction stripIDDPrefix(number, country, metadata) {\n\tif (!country) {\n\t\treturn;\n\t}\n\n\t// Check if the number is IDD-prefixed.\n\n\tvar countryMetadata = new Metadata(metadata);\n\tcountryMetadata.country(country);\n\n\tvar IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n\tif (number.search(IDDPrefixPattern) !== 0) {\n\t\treturn;\n\t}\n\n\t// Strip IDD prefix.\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length);\n\n\t// Some kind of a weird edge case.\n\t// No explanation from Google given.\n\tvar matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\t/* istanbul ignore next */\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n\t\tif (matchedGroups[1] === '0') {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn number;\n}\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n// https://www.ietf.org/rfc/rfc3966.txt\n\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\nfunction parseRFC3966(text) {\n\tvar number = void 0;\n\tvar ext = void 0;\n\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\n\ttext = text.replace(/^tel:/, 'tel=');\n\n\tfor (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar part = _ref;\n\n\t\tvar _part$split = part.split('='),\n\t\t _part$split2 = _slicedToArray(_part$split, 2),\n\t\t name = _part$split2[0],\n\t\t value = _part$split2[1];\n\n\t\tswitch (name) {\n\t\t\tcase 'tel':\n\t\t\t\tnumber = value;\n\t\t\t\tbreak;\n\t\t\tcase 'ext':\n\t\t\t\text = value;\n\t\t\t\tbreak;\n\t\t\tcase 'phone-context':\n\t\t\t\t// Only \"country contexts\" are supported.\n\t\t\t\t// \"Domain contexts\" are ignored.\n\t\t\t\tif (value[0] === '+') {\n\t\t\t\t\tnumber = value + number;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// If the phone number is not viable, then abort.\n\tif (!isViablePhoneNumber(number)) {\n\t\treturn {};\n\t}\n\n\tvar result = { number: number };\n\tif (ext) {\n\t\tresult.ext = ext;\n\t}\n\treturn result;\n}\n\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\nfunction formatRFC3966(_ref2) {\n\tvar number = _ref2.number,\n\t ext = _ref2.ext;\n\n\tif (!number) {\n\t\treturn '';\n\t}\n\n\tif (number[0] !== '+') {\n\t\tthrow new Error('\"formatRFC3966()\" expects \"number\" to be in E.164 format.');\n\t}\n\n\treturn 'tel:' + number + (ext ? ';ext=' + ext : '');\n}\n\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\nfunction isValidNumber(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments[2];\n\n metadata = new Metadata(metadata);\n\n // This is just to support `isValidNumber({})`\n // for cases when `parseNumber()` returns `{}`.\n if (!input.country) {\n return false;\n }\n\n if (!metadata.hasCountry(input.country)) {\n throw new Error('Unknown country: ' + input.country);\n }\n\n metadata.country(input.country);\n\n // By default, countries only have type regexps when it's required for\n // distinguishing different countries having the same `countryCallingCode`.\n if (metadata.hasTypes()) {\n return getNumberType(input, options, metadata.metadata) !== undefined;\n }\n\n // If there are no type regexps for this country in metadata then use\n // `nationalNumberPattern` as a \"better than nothing\" replacement.\n var national_number = options.v2 ? input.nationalNumber : input.phone;\n return matchesEntirely(national_number, metadata.nationalNumberPattern());\n}\n\nvar _extends$2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaultOptions = {\n\tformatExtension: function formatExtension(formattedNumber, extension, metadata) {\n\t\treturn '' + formattedNumber + metadata.ext() + extension;\n\t}\n\n\t// Formats a phone number\n\t//\n\t// Example use cases:\n\t//\n\t// ```js\n\t// formatNumber('8005553535', 'RU', 'INTERNATIONAL')\n\t// formatNumber('8005553535', 'RU', 'INTERNATIONAL', metadata)\n\t// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL')\n\t// formatNumber({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', metadata)\n\t// formatNumber('+78005553535', 'NATIONAL')\n\t// formatNumber('+78005553535', 'NATIONAL', metadata)\n\t// ```\n\t//\n};function formatNumber$1(input, format, options, metadata) {\n\t// Apply default options.\n\tif (options) {\n\t\toptions = _extends$2({}, defaultOptions, options);\n\t} else {\n\t\toptions = defaultOptions;\n\t}\n\n\tmetadata = new Metadata(metadata);\n\n\tif (input.country) {\n\t\t// Validate `input.country`.\n\t\tif (!metadata.hasCountry(input.country)) {\n\t\t\tthrow new Error('Unknown country: ' + input.country);\n\t\t}\n\t\tmetadata.country(input.country);\n\t} else if (input.countryCallingCode) {\n\t\tmetadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n\t} else return input.phone || '';\n\n\tvar countryCallingCode = metadata.countryCallingCode();\n\n\tvar nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n\n\t// This variable should have been declared inside `case`s\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\n\tvar number = void 0;\n\n\tswitch (format) {\n\t\tcase 'NATIONAL':\n\t\t\t// Legacy argument support.\n\t\t\t// (`{ country: ..., phone: '' }`)\n\t\t\tif (!nationalNumber) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\t\tnumber = format_national_number(nationalNumber, 'NATIONAL', metadata);\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension);\n\n\t\tcase 'INTERNATIONAL':\n\t\t\t// Legacy argument support.\n\t\t\t// (`{ country: ..., phone: '' }`)\n\t\t\tif (!nationalNumber) {\n\t\t\t\treturn '+' + countryCallingCode;\n\t\t\t}\n\t\t\tnumber = format_national_number(nationalNumber, 'INTERNATIONAL', metadata);\n\t\t\tnumber = '+' + countryCallingCode + ' ' + number;\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension);\n\n\t\tcase 'E.164':\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\n\t\t\treturn '+' + countryCallingCode + nationalNumber;\n\n\t\tcase 'RFC3966':\n\t\t\treturn formatRFC3966({\n\t\t\t\tnumber: '+' + countryCallingCode + nationalNumber,\n\t\t\t\text: input.ext\n\t\t\t});\n\n\t\tcase 'IDD':\n\t\t\tif (!options.fromCountry) {\n\t\t\t\treturn;\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\n\t\t\t}\n\t\t\tvar IDDPrefix = getIDDPrefix(options.fromCountry, metadata.metadata);\n\t\t\tif (!IDDPrefix) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (options.humanReadable) {\n\t\t\t\tvar formattedForSameCountryCallingCode = countryCallingCode && formatIDDSameCountryCallingCodeNumber(nationalNumber, metadata.countryCallingCode(), options.fromCountry, metadata);\n\t\t\t\tif (formattedForSameCountryCallingCode) {\n\t\t\t\t\tnumber = formattedForSameCountryCallingCode;\n\t\t\t\t} else {\n\t\t\t\t\tnumber = IDDPrefix + ' ' + countryCallingCode + ' ' + format_national_number(nationalNumber, 'INTERNATIONAL', metadata);\n\t\t\t\t}\n\t\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension);\n\t\t\t}\n\t\t\treturn '' + IDDPrefix + countryCallingCode + nationalNumber;\n\n\t\tdefault:\n\t\t\tthrow new Error('Unknown \"format\" argument passed to \"formatNumber()\": \"' + format + '\"');\n\t}\n}\n\n// This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use \\d, so that the first\n// group actually used in the pattern will be matched.\nvar FIRST_GROUP_PATTERN = /(\\$\\d)/;\n\nfunction format_national_number_using_format(number, format, useInternationalFormat, includeNationalPrefixForNationalFormat, metadata) {\n\tvar formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() : format.nationalPrefixFormattingRule() && (!format.nationalPrefixIsOptionalWhenFormatting() || includeNationalPrefixForNationalFormat) ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n\n\tif (useInternationalFormat) {\n\t\treturn changeInternationalFormatStyle(formattedNumber);\n\t}\n\n\treturn formattedNumber;\n}\n\nfunction format_national_number(number, format_as, metadata) {\n\tvar format = choose_format_for_number(metadata.formats(), number);\n\tif (!format) {\n\t\treturn number;\n\t}\n\treturn format_national_number_using_format(number, format, format_as === 'INTERNATIONAL', true, metadata);\n}\n\nfunction choose_format_for_number(available_formats, national_number) {\n\tfor (var _iterator = available_formats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar format = _ref;\n\n\t\t// Validate leading digits\n\t\tif (format.leadingDigitsPatterns().length > 0) {\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\n\t\t\tvar last_leading_digits_pattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1];\n\n\t\t\t// If leading digits don't match then move on to the next phone number format\n\t\t\tif (national_number.search(last_leading_digits_pattern) !== 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Check that the national number matches the phone number format regular expression\n\t\tif (matchesEntirely(national_number, format.pattern())) {\n\t\t\treturn format;\n\t\t}\n\t}\n}\n\n// Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\nfunction changeInternationalFormatStyle(local) {\n\treturn local.replace(new RegExp('[' + VALID_PUNCTUATION + ']+', 'g'), ' ').trim();\n}\n\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber;\n}\n\nfunction formatIDDSameCountryCallingCodeNumber(number, toCountryCallingCode, fromCountry, toCountryMetadata) {\n\tvar fromCountryMetadata = new Metadata(toCountryMetadata.metadata);\n\tfromCountryMetadata.country(fromCountry);\n\n\t// If calling within the same country calling code.\n\tif (toCountryCallingCode === fromCountryMetadata.countryCallingCode()) {\n\t\t// For NANPA regions, return the national format for these regions\n\t\t// but prefix it with the country calling code.\n\t\tif (toCountryCallingCode === '1') {\n\t\t\treturn toCountryCallingCode + ' ' + format_national_number(number, 'NATIONAL', toCountryMetadata);\n\t\t}\n\n\t\t// If regions share a country calling code, the country calling code need\n\t\t// not be dialled. This also applies when dialling within a region, so this\n\t\t// if clause covers both these cases. Technically this is the case for\n\t\t// dialling from La Reunion to other overseas departments of France (French\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\n\t\t// this edge case for now and for those cases return the version including\n\t\t// country calling code. Details here:\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\n\t\t//\n\t\treturn format_national_number(number, 'NATIONAL', toCountryMetadata);\n\t}\n}\n\nvar _extends$3 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass$3 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$4(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PhoneNumber = function () {\n\tfunction PhoneNumber(countryCallingCode, nationalNumber, metadata) {\n\t\t_classCallCheck$4(this, PhoneNumber);\n\n\t\tif (!countryCallingCode) {\n\t\t\tthrow new TypeError('`countryCallingCode` not passed');\n\t\t}\n\t\tif (!nationalNumber) {\n\t\t\tthrow new TypeError('`nationalNumber` not passed');\n\t\t}\n\t\t// If country code is passed then derive `countryCallingCode` from it.\n\t\t// Also store the country code as `.country`.\n\t\tif (isCountryCode(countryCallingCode)) {\n\t\t\tthis.country = countryCallingCode;\n\t\t\tvar _metadata = new Metadata(metadata);\n\t\t\t_metadata.country(countryCallingCode);\n\t\t\tcountryCallingCode = _metadata.countryCallingCode();\n\t\t}\n\t\tthis.countryCallingCode = countryCallingCode;\n\t\tthis.nationalNumber = nationalNumber;\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber;\n\t\tthis.metadata = metadata;\n\t}\n\n\t_createClass$3(PhoneNumber, [{\n\t\tkey: 'isPossible',\n\t\tvalue: function isPossible() {\n\t\t\treturn isPossibleNumber(this, { v2: true }, this.metadata);\n\t\t}\n\t}, {\n\t\tkey: 'isValid',\n\t\tvalue: function isValid() {\n\t\t\treturn isValidNumber(this, { v2: true }, this.metadata);\n\t\t}\n\n\t\t// // Is just an alias for `this.isValid() && this.country === country`.\n\t\t// // https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n\t\t// isValidForRegion(country) {\n\t\t// \treturn isValidNumberForRegion(this, country, { v2: true }, this.metadata)\n\t\t// }\n\n\t}, {\n\t\tkey: 'getType',\n\t\tvalue: function getType() {\n\t\t\treturn getNumberType(this, { v2: true }, this.metadata);\n\t\t}\n\t}, {\n\t\tkey: 'format',\n\t\tvalue: function format(_format, options) {\n\t\t\treturn formatNumber$1(this, _format, options ? _extends$3({}, options, { v2: true }) : { v2: true }, this.metadata);\n\t\t}\n\t}, {\n\t\tkey: 'formatNational',\n\t\tvalue: function formatNational(options) {\n\t\t\treturn this.format('NATIONAL', options);\n\t\t}\n\t}, {\n\t\tkey: 'formatInternational',\n\t\tvalue: function formatInternational(options) {\n\t\t\treturn this.format('INTERNATIONAL', options);\n\t\t}\n\t}, {\n\t\tkey: 'getURI',\n\t\tvalue: function getURI(options) {\n\t\t\treturn this.format('RFC3966', options);\n\t\t}\n\t}]);\n\n\treturn PhoneNumber;\n}();\n\n\nvar isCountryCode = function isCountryCode(value) {\n\treturn (/^[A-Z]{2}$/.test(value)\n\t);\n};\n\n// This is a port of Google Android `libphonenumber`'s\n\n// We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\nvar MAX_INPUT_STRING_LENGTH = 250;\n\n// This consists of the plus symbol, digits, and arabic-indic digits.\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']');\n\n// Regular expression of trailing characters that we want to remove.\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + ']+$');\n\n// `options`:\n// {\n// country:\n// {\n// restrict - (a two-letter country code)\n// the phone number must be in this country\n//\n// default - (a two-letter country code)\n// default country to use for phone number parsing and validation\n// (if no country code could be derived from the phone number)\n// }\n// }\n//\n// Returns `{ country, number }`\n//\n// Example use cases:\n//\n// ```js\n// parse('8 (800) 555-35-35', 'RU')\n// parse('8 (800) 555-35-35', 'RU', metadata)\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n// parse('+7 800 555 35 35')\n// parse('+7 800 555 35 35', metadata)\n// ```\n//\nfunction parse(text) {\n\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\tvar metadata = arguments[2];\n\n\tmetadata = new Metadata(metadata);\n\n\t// Validate `defaultCountry`.\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('INVALID_COUNTRY');\n\t\t}\n\t\tthrow new Error('Unknown country: ' + options.defaultCountry);\n\t}\n\n\t// Parse the phone number.\n\n\tvar _parse_input = parse_input(text, options.v2),\n\t formatted_phone_number = _parse_input.number,\n\t ext = _parse_input.ext;\n\n\t// If the phone number is not viable then return nothing.\n\n\n\tif (!formatted_phone_number) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('NOT_A_NUMBER');\n\t\t}\n\t\treturn {};\n\t}\n\n\tvar _parse_phone_number = parse_phone_number(formatted_phone_number, options.defaultCountry, metadata),\n\t country = _parse_phone_number.country,\n\t nationalNumber = _parse_phone_number.national_number,\n\t countryCallingCode = _parse_phone_number.countryCallingCode,\n\t carrierCode = _parse_phone_number.carrierCode;\n\n\tif (!metadata.selectedCountry()) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('INVALID_COUNTRY');\n\t\t}\n\t\treturn {};\n\t}\n\n\t// Validate national (significant) number length.\n\tif (nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n\t\t// Won't throw here because the regexp already demands length > 1.\n\t\t/* istanbul ignore if */\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('TOO_SHORT');\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {};\n\t}\n\n\t// Validate national (significant) number length.\n\t//\n\t// A sidenote:\n\t//\n\t// They say that sometimes national (significant) numbers\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n\t// Such numbers will just be discarded.\n\t//\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n\t\tif (options.v2) {\n\t\t\tthrow new ParseError('TOO_LONG');\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {};\n\t}\n\n\tif (options.v2) {\n\t\tvar phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n\t\tif (country) {\n\t\t\tphoneNumber.country = country;\n\t\t}\n\t\tif (carrierCode) {\n\t\t\tphoneNumber.carrierCode = carrierCode;\n\t\t}\n\t\tif (ext) {\n\t\t\tphoneNumber.ext = ext;\n\t\t}\n\n\t\treturn phoneNumber;\n\t}\n\n\t// Check if national phone number pattern matches the number.\n\t// National number pattern is different for each country,\n\t// even for those ones which are part of the \"NANPA\" group.\n\tvar valid = country && matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) ? true : false;\n\n\tif (!options.extended) {\n\t\treturn valid ? result(country, nationalNumber, ext) : {};\n\t}\n\n\treturn {\n\t\tcountry: country,\n\t\tcountryCallingCode: countryCallingCode,\n\t\tcarrierCode: carrierCode,\n\t\tvalid: valid,\n\t\tpossible: valid ? true : options.extended === true && metadata.possibleLengths() && is_possible_number(nationalNumber, countryCallingCode !== undefined, metadata),\n\t\tphone: nationalNumber,\n\t\text: ext\n\t};\n}\n\n/**\r\n * Extracts a parseable phone number.\r\n * @param {string} text - Input.\r\n * @return {string}.\r\n */\nfunction extract_formatted_phone_number(text, v2) {\n\tif (!text) {\n\t\treturn;\n\t}\n\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\n\t\tif (v2) {\n\t\t\tthrow new ParseError('TOO_LONG');\n\t\t}\n\t\treturn;\n\t}\n\n\t// Attempt to extract a possible number from the string passed in\n\n\tvar starts_at = text.search(PHONE_NUMBER_START_PATTERN);\n\n\tif (starts_at < 0) {\n\t\treturn;\n\t}\n\n\treturn text\n\t// Trim everything to the left of the phone number\n\t.slice(starts_at)\n\t// Remove trailing non-numerical characters\n\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n\n// Strips any national prefix (such as 0, 1) present in the number provided.\n// \"Carrier codes\" are only used in Colombia and Brazil,\n// and only when dialing within those countries from a mobile phone to a fixed line number.\nfunction strip_national_prefix_and_carrier_code(number, metadata) {\n\tif (!number || !metadata.nationalPrefixForParsing()) {\n\t\treturn { number: number };\n\t}\n\n\t// Attempt to parse the first digits as a national prefix\n\tvar national_prefix_pattern = new RegExp('^(?:' + metadata.nationalPrefixForParsing() + ')');\n\tvar national_prefix_matcher = national_prefix_pattern.exec(number);\n\n\t// If no national prefix is present in the phone number,\n\t// but the national prefix is optional for this country,\n\t// then consider this phone number valid.\n\t//\n\t// Google's reference `libphonenumber` implementation\n\t// wouldn't recognize such phone numbers as valid,\n\t// but I think it would perfectly make sense\n\t// to consider such phone numbers as valid\n\t// because if a national phone number was originally\n\t// formatted without the national prefix\n\t// then it must be parseable back into the original national number.\n\t// In other words, `parse(format(number))`\n\t// must always be equal to `number`.\n\t//\n\tif (!national_prefix_matcher) {\n\t\treturn { number: number };\n\t}\n\n\tvar national_significant_number = void 0;\n\n\t// `national_prefix_for_parsing` capturing groups\n\t// (used only for really messy cases: Argentina, Brazil, Mexico, Somalia)\n\tvar captured_groups_count = national_prefix_matcher.length - 1;\n\n\t// If the national number tranformation is needed then do it.\n\t//\n\t// `national_prefix_matcher[captured_groups_count]` means that\n\t// the corresponding captured group is not empty.\n\t// It can be empty if it's optional.\n\t// Example: \"0?(?:...)?\" for Argentina.\n\t//\n\tif (metadata.nationalPrefixTransformRule() && national_prefix_matcher[captured_groups_count]) {\n\t\tnational_significant_number = number.replace(national_prefix_pattern, metadata.nationalPrefixTransformRule());\n\t}\n\t// Else, no transformation is necessary,\n\t// and just strip the national prefix.\n\telse {\n\t\t\tnational_significant_number = number.slice(national_prefix_matcher[0].length);\n\t\t}\n\n\tvar carrierCode = void 0;\n\tif (captured_groups_count > 0) {\n\t\tcarrierCode = national_prefix_matcher[1];\n\t}\n\n\t// The following is done in `get_country_and_national_number_for_local_number()` instead.\n\t//\n\t// // Verify the parsed national (significant) number for this country\n\t// const national_number_rule = new RegExp(metadata.nationalNumberPattern())\n\t// //\n\t// // If the original number (before stripping national prefix) was viable,\n\t// // and the resultant number is not, then prefer the original phone number.\n\t// // This is because for some countries (e.g. Russia) the same digit could be both\n\t// // a national prefix and a leading digit of a valid national phone number,\n\t// // like `8` is the national prefix for Russia and both\n\t// // `8 800 555 35 35` and `800 555 35 35` are valid numbers.\n\t// if (matchesEntirely(number, national_number_rule) &&\n\t// \t\t!matchesEntirely(national_significant_number, national_number_rule))\n\t// {\n\t// \treturn number\n\t// }\n\n\t// Return the parsed national (significant) number\n\treturn {\n\t\tnumber: national_significant_number,\n\t\tcarrierCode: carrierCode\n\t};\n}\n\nfunction find_country_code(country_calling_code, national_phone_number, metadata) {\n\t// Is always non-empty, because `country_calling_code` is always valid\n\tvar possible_countries = metadata.countryCallingCodes()[country_calling_code];\n\n\t// If there's just one country corresponding to the country code,\n\t// then just return it, without further phone number digits validation.\n\tif (possible_countries.length === 1) {\n\t\treturn possible_countries[0];\n\t}\n\n\treturn _find_country_code(possible_countries, national_phone_number, metadata.metadata);\n}\n\n// Changes `metadata` `country`.\nfunction _find_country_code(possible_countries, national_phone_number, metadata) {\n\tmetadata = new Metadata(metadata);\n\n\tfor (var _iterator = possible_countries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar country = _ref;\n\n\t\tmetadata.country(country);\n\n\t\t// Leading digits check would be the simplest one\n\t\tif (metadata.leadingDigits()) {\n\t\t\tif (national_phone_number && national_phone_number.search(metadata.leadingDigits()) === 0) {\n\t\t\t\treturn country;\n\t\t\t}\n\t\t}\n\t\t// Else perform full validation with all of those\n\t\t// fixed-line/mobile/etc regular expressions.\n\t\telse if (getNumberType({ phone: national_phone_number, country: country }, undefined, metadata.metadata)) {\n\t\t\t\treturn country;\n\t\t\t}\n\t}\n}\n\n/**\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\nfunction parse_input(text, v2) {\n\t// Parse RFC 3966 phone number URI.\n\tif (text && text.indexOf('tel:') === 0) {\n\t\treturn parseRFC3966(text);\n\t}\n\n\tvar number = extract_formatted_phone_number(text, v2);\n\n\t// If the phone number is not viable, then abort.\n\tif (!number || !isViablePhoneNumber(number)) {\n\t\treturn {};\n\t}\n\n\t// Attempt to parse extension first, since it doesn't require region-specific\n\t// data and we want to have the non-normalised number here.\n\tvar with_extension_stripped = extractExtension(number);\n\tif (with_extension_stripped.ext) {\n\t\treturn with_extension_stripped;\n\t}\n\n\treturn { number: number };\n}\n\n/**\r\n * Creates `parse()` result object.\r\n */\nfunction result(country, national_number, ext) {\n\tvar result = {\n\t\tcountry: country,\n\t\tphone: national_number\n\t};\n\n\tif (ext) {\n\t\tresult.ext = ext;\n\t}\n\n\treturn result;\n}\n\n/**\r\n * Parses a viable phone number.\r\n * Returns `{ country, countryCallingCode, national_number }`.\r\n */\nfunction parse_phone_number(formatted_phone_number, default_country, metadata) {\n\tvar _extractCountryCallin = extractCountryCallingCode(formatted_phone_number, default_country, metadata.metadata),\n\t countryCallingCode = _extractCountryCallin.countryCallingCode,\n\t number = _extractCountryCallin.number;\n\n\tif (!number) {\n\t\treturn { countryCallingCode: countryCallingCode };\n\t}\n\n\tvar country = void 0;\n\n\tif (countryCallingCode) {\n\t\tmetadata.chooseCountryByCountryCallingCode(countryCallingCode);\n\t} else if (default_country) {\n\t\tmetadata.country(default_country);\n\t\tcountry = default_country;\n\t\tcountryCallingCode = getCountryCallingCode(default_country, metadata.metadata);\n\t} else return {};\n\n\tvar _parse_national_numbe = parse_national_number(number, metadata),\n\t national_number = _parse_national_numbe.national_number,\n\t carrier_code = _parse_national_numbe.carrier_code;\n\n\t// Sometimes there are several countries\n\t// corresponding to the same country phone code\n\t// (e.g. NANPA countries all having `1` country phone code).\n\t// Therefore, to reliably determine the exact country,\n\t// national (significant) number should have been parsed first.\n\t//\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\n\t// get their countries populated with the full set of\n\t// \"phone number type\" regular expressions.\n\t//\n\n\n\tvar exactCountry = find_country_code(countryCallingCode, national_number, metadata);\n\tif (exactCountry) {\n\t\tcountry = exactCountry;\n\t\tmetadata.country(country);\n\t}\n\n\treturn {\n\t\tcountry: country,\n\t\tcountryCallingCode: countryCallingCode,\n\t\tnational_number: national_number,\n\t\tcarrierCode: carrier_code\n\t};\n}\n\nfunction parse_national_number(number, metadata) {\n\tvar national_number = parseIncompletePhoneNumber(number);\n\tvar carrier_code = void 0;\n\n\t// Parsing national prefixes and carrier codes\n\t// is only required for local phone numbers\n\t// but some people don't understand that\n\t// and sometimes write international phone numbers\n\t// with national prefixes (or maybe even carrier codes).\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\n\t// Google's original library forgives such mistakes\n\t// and so does this library, because it has been requested:\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\n\n\tvar _strip_national_prefi = strip_national_prefix_and_carrier_code(national_number, metadata),\n\t potential_national_number = _strip_national_prefi.number,\n\t carrierCode = _strip_national_prefi.carrierCode;\n\n\t// If metadata has \"possible lengths\" then employ the new algorythm.\n\n\n\tif (metadata.possibleLengths()) {\n\t\t// We require that the NSN remaining after stripping the national prefix and\n\t\t// carrier code be long enough to be a possible length for the region.\n\t\t// Otherwise, we don't do the stripping, since the original number could be\n\t\t// a valid short number.\n\t\tswitch (checkNumberLengthForType(potential_national_number, undefined, metadata)) {\n\t\t\tcase 'TOO_SHORT':\n\t\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t\tcase 'INVALID_LENGTH':\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tnational_number = potential_national_number;\n\t\t\t\tcarrier_code = carrierCode;\n\t\t}\n\t} else {\n\t\t// If the original number (before stripping national prefix) was viable,\n\t\t// and the resultant number is not, then prefer the original phone number.\n\t\t// This is because for some countries (e.g. Russia) the same digit could be both\n\t\t// a national prefix and a leading digit of a valid national phone number,\n\t\t// like `8` is the national prefix for Russia and both\n\t\t// `8 800 555 35 35` and `800 555 35 35` are valid numbers.\n\t\tif (matchesEntirely(national_number, metadata.nationalNumberPattern()) && !matchesEntirely(potential_national_number, metadata.nationalNumberPattern())) ; else {\n\t\t\tnational_number = potential_national_number;\n\t\t\tcarrier_code = carrierCode;\n\t\t}\n\t}\n\n\treturn {\n\t\tnational_number: national_number,\n\t\tcarrier_code: carrier_code\n\t};\n}\n\n// Determines the country for a given (possibly incomplete) phone number.\n// export function get_country_from_phone_number(number, metadata)\n// {\n// \treturn parse_phone_number(number, null, metadata).country\n// }\n\n// Parses a formatted phone number\n// and returns `{ countryCallingCode, number }`\n// where `number` is just the \"number\" part\n// which is left after extracting `countryCallingCode`\n// and is not necessarily a \"national (significant) number\"\n// and might as well contain national prefix.\n//\nfunction extractCountryCallingCode(number, country, metadata) {\n\tnumber = parseIncompletePhoneNumber(number);\n\n\tif (!number) {\n\t\treturn {};\n\t}\n\n\t// If this is not an international phone number,\n\t// then don't extract country phone code.\n\tif (number[0] !== '+') {\n\t\t// Convert an \"out-of-country\" dialing phone number\n\t\t// to a proper international phone number.\n\t\tvar numberWithoutIDD = stripIDDPrefix(number, country, metadata);\n\n\t\t// If an IDD prefix was stripped then\n\t\t// convert the number to international one\n\t\t// for subsequent parsing.\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\n\t\t\tnumber = '+' + numberWithoutIDD;\n\t\t} else {\n\t\t\treturn { number: number };\n\t\t}\n\t}\n\n\t// Fast abortion: country codes do not begin with a '0'\n\tif (number[1] === '0') {\n\t\treturn {};\n\t}\n\n\tmetadata = new Metadata(metadata);\n\n\t// The thing with country phone codes\n\t// is that they are orthogonal to each other\n\t// i.e. there's no such country phone code A\n\t// for which country phone code B exists\n\t// where B starts with A.\n\t// Therefore, while scanning digits,\n\t// if a valid country code is found,\n\t// that means that it is the country code.\n\t//\n\tvar i = 2;\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n\t\tvar countryCallingCode = number.slice(1, i);\n\n\t\tif (metadata.countryCallingCodes()[countryCallingCode]) {\n\t\t\treturn {\n\t\t\t\tcountryCallingCode: countryCallingCode,\n\t\t\t\tnumber: number.slice(i)\n\t\t\t};\n\t\t}\n\n\t\ti++;\n\t}\n\n\treturn {};\n}\n\nvar _extends$4 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction parsePhoneNumber(text, options, metadata) {\n\treturn parse(text, _extends$4({}, options, { v2: true }), metadata);\n}\n\nvar _typeof$1 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends$5 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray$1 = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction normalizeArguments(args) {\n\tvar _Array$prototype$slic = Array.prototype.slice.call(args),\n\t _Array$prototype$slic2 = _slicedToArray$1(_Array$prototype$slic, 4),\n\t arg_1 = _Array$prototype$slic2[0],\n\t arg_2 = _Array$prototype$slic2[1],\n\t arg_3 = _Array$prototype$slic2[2],\n\t arg_4 = _Array$prototype$slic2[3];\n\n\tvar text = void 0;\n\tvar options = void 0;\n\tvar metadata = void 0;\n\n\t// If the phone number is passed as a string.\n\t// `parsePhoneNumber('88005553535', ...)`.\n\tif (typeof arg_1 === 'string') {\n\t\ttext = arg_1;\n\t} else throw new TypeError('A text for parsing must be a string.');\n\n\t// If \"default country\" argument is being passed then move it to `options`.\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\n\tif (!arg_2 || typeof arg_2 === 'string') {\n\t\tif (arg_4) {\n\t\t\toptions = arg_3;\n\t\t\tmetadata = arg_4;\n\t\t} else {\n\t\t\toptions = undefined;\n\t\t\tmetadata = arg_3;\n\t\t}\n\n\t\tif (arg_2) {\n\t\t\toptions = _extends$5({ defaultCountry: arg_2 }, options);\n\t\t}\n\t}\n\t// `defaultCountry` is not passed.\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\n\telse if (isObject(arg_2)) {\n\t\t\tif (arg_3) {\n\t\t\t\toptions = arg_2;\n\t\t\t\tmetadata = arg_3;\n\t\t\t} else {\n\t\t\t\tmetadata = arg_2;\n\t\t\t}\n\t\t} else throw new Error('Invalid second argument: ' + arg_2);\n\n\treturn {\n\t\ttext: text,\n\t\toptions: options,\n\t\tmetadata: metadata\n\t};\n}\n\n// Otherwise istanbul would show this as \"branch not covered\".\n/* istanbul ignore next */\nvar isObject = function isObject(_) {\n\treturn (typeof _ === 'undefined' ? 'undefined' : _typeof$1(_)) === 'object';\n};\n\nvar _extends$6 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction parsePhoneNumberFromString(text, options, metadata) {\n\t// Validate `defaultCountry`.\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\n\t\toptions = _extends$6({}, options, {\n\t\t\tdefaultCountry: undefined\n\t\t});\n\t}\n\t// Parse phone number.\n\ttry {\n\t\treturn parsePhoneNumber(text, options, metadata);\n\t} catch (error) {\n\t\t/* istanbul ignore else */\n\t\tif (error instanceof ParseError) ; else {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n\nfunction parsePhoneNumberFromString$1() {\n\tvar _normalizeArguments = normalizeArguments(arguments),\n\t text = _normalizeArguments.text,\n\t options = _normalizeArguments.options,\n\t metadata = _normalizeArguments.metadata;\n\n\treturn parsePhoneNumberFromString(text, options, metadata);\n}\n\n/** Returns a regular expression quantifier with an upper and lower limit. */\nfunction limit(lower, upper) {\n\tif (lower < 0 || upper <= 0 || upper < lower) {\n\t\tthrow new TypeError();\n\t}\n\treturn \"{\" + lower + \",\" + upper + \"}\";\n}\n\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\nfunction trimAfterFirstMatch(regexp, string) {\n\tvar index = string.search(regexp);\n\n\tif (index >= 0) {\n\t\treturn string.slice(0, index);\n\t}\n\n\treturn string;\n}\n\nfunction startsWith(string, substring) {\n\treturn string.indexOf(substring) === 0;\n}\n\nfunction endsWith(string, substring) {\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length;\n}\n\n// Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\n\nfunction parsePreCandidate(candidate) {\n\t// Check for extra numbers at the end.\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\n\t// from split notations (+41 79 123 45 67 / 68).\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n\n// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/;\n\n// Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\n\nfunction isValidPreCandidate(candidate, offset, text) {\n\t// Skip a match that is more likely to be a date.\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\n\t\treturn false;\n\t}\n\n\t// Skip potential time-stamps.\n\tif (TIME_STAMPS.test(candidate)) {\n\t\tvar followingText = text.slice(offset + candidate.length);\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// Javascript doesn't support UTF-8 regular expressions.\n// So mimicking them here.\n\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\n\nvar _pZ = ' \\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000';\nvar pZ = '[' + _pZ + ']';\nvar PZ = '[^' + _pZ + ']';\n\nvar _pN = '0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19';\n// const pN = `[${_pN}]`\n\nvar _pNd = '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19';\nvar pNd = '[' + _pNd + ']';\n\nvar _pL = 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC';\nvar pL = '[' + _pL + ']';\nvar pL_regexp = new RegExp(pL);\n\nvar _pSc = '$\\xA2-\\xA5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6';\nvar pSc = '[' + _pSc + ']';\nvar pSc_regexp = new RegExp(pSc);\n\nvar _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26';\nvar pMn = '[' + _pMn + ']';\nvar pMn_regexp = new RegExp(pMn);\n\nvar _InBasic_Latin = '\\0-\\x7F';\nvar _InLatin_1_Supplement = '\\x80-\\xFF';\nvar _InLatin_Extended_A = '\\u0100-\\u017F';\nvar _InLatin_Extended_Additional = '\\u1E00-\\u1EFF';\nvar _InLatin_Extended_B = '\\u0180-\\u024F';\nvar _InCombining_Diacritical_Marks = '\\u0300-\\u036F';\n\nvar latinLetterRegexp = new RegExp('[' + _InBasic_Latin + _InLatin_1_Supplement + _InLatin_Extended_A + _InLatin_Extended_Additional + _InLatin_Extended_B + _InCombining_Diacritical_Marks + ']');\n\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\nfunction isLatinLetter(letter) {\n // Combining marks are a subset of non-spacing-mark.\n if (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\n return false;\n }\n\n return latinLetterRegexp.test(letter);\n}\n\nfunction isInvalidPunctuationSymbol(character) {\n return character === '%' || pSc_regexp.test(character);\n}\n\n// Copy-pasted from `PhoneNumberMatcher.js`.\n\nvar OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B';\nvar CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D';\nvar NON_PARENS = '[^' + OPENING_PARENS + CLOSING_PARENS + ']';\n\nvar LEAD_CLASS = '[' + OPENING_PARENS + PLUS_CHARS + ']';\n\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\nvar LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS);\n\n// Limit on the number of pairs of brackets in a phone number.\nvar BRACKET_PAIR_LIMIT = limit(0, 3);\n\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\nvar MATCHING_BRACKETS_ENTIRE = new RegExp('^' + \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\" + NON_PARENS + \"+\" + \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT + NON_PARENS + \"*\" + '$');\n\n/**\r\n * Matches strings that look like publication pages. Example:\r\n * <pre>Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).</pre>\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\n\nfunction isValidCandidate(candidate, offset, text, leniency) {\n\t// Check the candidate doesn't contain any formatting\n\t// which would indicate that it really isn't a phone number.\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n\t\treturn;\n\t}\n\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\tif (leniency !== 'POSSIBLE') {\n\t\t// If the candidate is not at the start of the text,\n\t\t// and does not start with phone-number punctuation,\n\t\t// check the previous character.\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n\t\t\tvar previousChar = text[offset - 1];\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar lastCharIndex = offset + candidate.length;\n\t\tif (lastCharIndex < text.length) {\n\t\t\tvar nextChar = text[lastCharIndex];\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\nvar _createClass$4 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$5(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Copy-pasted from `./parse.js`.\nvar VALID_PHONE_NUMBER$1 = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\nvar WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+');\nvar PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$');\n\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\nvar PhoneNumberSearch = function () {\n\tfunction PhoneNumberSearch(text) {\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\tvar metadata = arguments[2];\n\n\t\t_classCallCheck$5(this, PhoneNumberSearch);\n\n\t\tthis.state = 'NOT_READY';\n\n\t\tthis.text = text;\n\t\tthis.options = options;\n\t\tthis.metadata = metadata;\n\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER$1 +\n\t\t// Phone number extensions\n\t\t'(?:' + EXTN_PATTERNS_FOR_PARSING + ')?', 'ig');\n\n\t\t// this.searching_from = 0\n\t}\n\t// Iteration tristate.\n\n\n\t_createClass$4(PhoneNumberSearch, [{\n\t\tkey: 'find',\n\t\tvalue: function find() {\n\t\t\tvar matches = this.regexp.exec(this.text);\n\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar number = matches[0];\n\t\t\tvar startsAt = matches.index;\n\n\t\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '');\n\t\t\tstartsAt += matches[0].length - number.length;\n\t\t\t// Fixes not parsing numbers with whitespace in the end.\n\t\t\t// Also fixes not parsing numbers with opening parentheses in the end.\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\n\t\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '');\n\n\t\t\tnumber = parsePreCandidate(number);\n\n\t\t\tvar result = this.parseCandidate(number, startsAt);\n\n\t\t\tif (result) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// Tail recursion.\n\t\t\t// Try the next one if this one is not a valid phone number.\n\t\t\treturn this.find();\n\t\t}\n\t}, {\n\t\tkey: 'parseCandidate',\n\t\tvalue: function parseCandidate(number, startsAt) {\n\t\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Don't parse phone numbers which are non-phone numbers\n\t\t\t// due to being part of something else (e.g. a UUID).\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\n\t\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\n\t\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// // Prepend any opening brackets left behind by the\n\t\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\n\t\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\n\t\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\n\t\t\t// if (full_number_starts_at >= 0)\n\t\t\t// {\n\t\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\n\t\t\t// \tstartsAt = full_number_starts_at\n\t\t\t// }\n\t\t\t//\n\t\t\t// this.searching_from = matches.lastIndex\n\n\t\t\tvar result = parse(number, this.options, this.metadata);\n\n\t\t\tif (!result.phone) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresult.startsAt = startsAt;\n\t\t\tresult.endsAt = startsAt + number.length;\n\n\t\t\treturn result;\n\t\t}\n\t}, {\n\t\tkey: 'hasNext',\n\t\tvalue: function hasNext() {\n\t\t\tif (this.state === 'NOT_READY') {\n\t\t\t\tthis.last_match = this.find();\n\n\t\t\t\tif (this.last_match) {\n\t\t\t\t\tthis.state = 'READY';\n\t\t\t\t} else {\n\t\t\t\t\tthis.state = 'DONE';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.state === 'READY';\n\t\t}\n\t}, {\n\t\tkey: 'next',\n\t\tvalue: function next() {\n\t\t\t// Check the state and find the next match as a side-effect if necessary.\n\t\t\tif (!this.hasNext()) {\n\t\t\t\tthrow new Error('No next element');\n\t\t\t}\n\n\t\t\t// Don't retain that memory any longer than necessary.\n\t\t\tvar result = this.last_match;\n\t\t\tthis.last_match = null;\n\t\t\tthis.state = 'NOT_READY';\n\t\t\treturn result;\n\t\t}\n\t}]);\n\n\treturn PhoneNumberSearch;\n}();\n\n// This is a legacy function.\n\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\nvar Leniency = {\n /**\r\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n\n /**\r\n * Phone numbers accepted are \"possible\" and \"valid\".\r\n * Numbers written in national format must have their national-prefix\r\n * present if it is usually written for a number of this type.\r\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n }\n\n // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n return true;\n },\n\n\n /**\r\n * Phone numbers accepted are \"valid\" and\r\n * are grouped in a possible way for this locale. For example, a US number written as\r\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol in the national significant number\r\n * are also dropped at this level.\r\n *\r\n * Warning: This level might result in lower coverage especially for regions outside of\r\n * country code \"+1\". If you are not sure about which level to use,\r\n * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped);\n },\n\n\n /**\r\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\r\n * are grouped in the same way that we would have formatted it, or as a single block. For\r\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\r\n * \"650 253 0000\" or \"6502530000\" are.\r\n * Numbers with more than one '/' symbol are also dropped at this level.\r\n * <p>\r\n * Warning: This level might result in lower coverage especially for regions outside of country\r\n * code \"+1\". If you are not sure about which level to use, email the discussion group\r\n * libphonenumber-discuss@googlegroups.com.\r\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, undefined, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n }\n // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n if (metadata == null) {\n return true;\n }\n\n // Check if a national prefix should be present when formatting this number.\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);\n\n // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n }\n\n // Normalize the remainder.\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput());\n\n // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nfunction containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n }\n\n // Now look for a second one.\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n }\n\n // If the first slash is after the country calling code, this is permitted.\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups) {\n // TODO: Evaluate how this works for other locales (testing has been limited to NANPA regions)\n // and optimise if necessary.\n var normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */);\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n\n // If this didn't pass, see if there are any alternate formats, and try them instead.\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n\n if (alternateFormats) {\n for (var _iterator = alternateFormats.numberFormats(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var alternateFormat = _ref;\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together.\r\n */\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n }\n\n // This will be in the format +CC-DG;ext=EXT where DG represents groups of digits.\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata);\n\n // We remove the extension part from the formatted string before splitting it into different\n // groups.\n var endIndex = rfc3966Format.indexOf(';');\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n }\n\n // The country-code will have a '-' following it.\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN);\n\n // Set this to the last group, skipping it if the number has an extension.\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1;\n\n // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n }\n\n // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n }\n\n // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n }\n\n // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n if (fromIndex < 0) {\n return false;\n }\n // Moves {@code fromIndex} forward.\n fromIndex += formattedNumberGroups[i].length();\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n }\n\n // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n\nvar _extends$7 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass$5 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$6(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\nvar INNER_MATCHES = [\n// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\n'\\\\/+(.*)/',\n\n// Note that the bracket here is inside the capturing group, since we consider it part of the\n// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\n'(\\\\([^(]*)',\n\n// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\n// We require a space on either side of the hyphen for it to be considered a separator.\n'(?:' + pZ + '-|-' + pZ + ')' + pZ + '*(.+)',\n\n// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\n// possible that it's supposed to be used to break two numbers without spaces, and we haven't\n// seen many instances of it used within a number.\n'[\\u2012-\\u2015\\uFF0D]' + pZ + '*(.+)',\n\n// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\n'\\\\.+' + pZ + '*([^.]+)',\n\n// Breaks on space - e.g. \"3324451234 8002341234\"\npZ + '+(' + PZ + '+)'];\n\n// Limit on the number of leading (plus) characters.\nvar leadLimit = limit(0, 2);\n\n// Limit on the number of consecutive punctuation characters.\nvar punctuationLimit = limit(0, 4);\n\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\nvar digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE;\n\n// Limit on the number of blocks separated by punctuation.\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\nvar blockLimit = limit(0, digitBlockLimit);\n\n/* A punctuation sequence allowing white space. */\nvar punctuation = '[' + VALID_PUNCTUATION + ']' + punctuationLimit;\n\n// A digits block without punctuation.\nvar digitSequence = pNd + limit(1, digitBlockLimit);\n\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n * <ul>\r\n * <li>All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n * <ul>\r\n * <li>Leading punctuation / plus signs are limited.\r\n * <li>Consecutive occurrences of punctuation are limited.\r\n * <li>Number of digits is limited.\r\n * </ul>\r\n * <li>No whitespace is allowed at the start or end.\r\n * <li>No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n * </ul>\r\n */\nvar PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit + digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit + '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?';\n\n// Regular expression of trailing characters that we want to remove.\n// We remove all characters that are not alpha or numerical characters.\n// The hash character is retained here, as it may signify\n// the previous block was an extension.\n//\n// // Don't know what does '&&' mean here.\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\n//\nvar UNWANTED_END_CHAR_PATTERN = new RegExp('[^' + _pN + _pL + '#]+$');\n\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n * <p>Vanity numbers (phone numbers using alphabetic digits such as <tt>1-800-SIX-FLAGS</tt> are\r\n * not found.\r\n *\r\n * <p>This class is not thread-safe.\r\n */\n\nvar PhoneNumberMatcher = function () {\n\n /**\r\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\r\n * new instance.\r\n *\r\n * @param util the phone number util to use\r\n * @param text the character sequence that we will search, null for no text\r\n * @param country the country to assume for phone numbers not written in international format\r\n * (with a leading plus, or with the international dialing prefix of the specified region).\r\n * May be null or \"ZZ\" if only numbers with a leading plus should be\r\n * considered.\r\n * @param leniency the leniency to use when evaluating candidate phone numbers\r\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\r\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\r\n * be {@code >= 0}.\r\n */\n\n /** The iteration tristate. */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments[2];\n\n _classCallCheck$6(this, PhoneNumberMatcher);\n\n this.state = 'NOT_READY';\n this.searchIndex = 0;\n\n options = _extends$7({}, options, {\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n\n /** The degree of validation requested. */\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError('Unknown leniency: ' + options.leniency + '.');\n }\n\n /** The maximum number of retries after matching an invalid number. */\n this.maxTries = options.maxTries;\n\n this.PATTERN = new RegExp(PATTERN, 'ig');\n }\n\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\n\n\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n\n _createClass$5(PhoneNumberMatcher, [{\n key: 'find',\n value: function find() // (index)\n {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n\n var matches = void 0;\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match =\n // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text)\n // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country, match.phone, this.metadata);\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n\n /**\r\n * Attempts to extract a match from `candidate`\r\n * if the whole candidate does not qualify as a match.\r\n */\n\n }, {\n key: 'extractInnerMatch',\n value: function extractInnerMatch(candidate, offset, text) {\n for (var _iterator = INNER_MATCHES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var innerMatchPattern = _ref;\n\n var isFirstMatch = true;\n var matches = void 0;\n var possibleInnerMatch = new RegExp(innerMatchPattern, 'g');\n while ((matches = possibleInnerMatch.exec(candidate)) !== null && this.maxTries > 0) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidate.slice(0, matches.index));\n\n var _match = this.parseAndVerify(_group, offset, text);\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, matches[1]);\n\n // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a group match start index,\n // therefore using the overall match start index `matches.index`.\n var match = this.parseAndVerify(group, offset + matches.index, text);\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n\n /**\r\n * Parses a phone number from the `candidate` using `parseNumber` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\n\n }, {\n key: 'parseAndVerify',\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parse(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry\n }, this.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n country: number.country,\n phone: number.phone\n };\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: 'hasNext',\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: 'next',\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n }\n\n // Don't retain that memory any longer than necessary.\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nvar _createClass$6 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck$7(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Used in phone number format template creation.\n// Could be any digit, I guess.\nvar DUMMY_DIGIT = '9';\n// I don't know why is it exactly `15`\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15;\n// Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH);\n\n// The digits that have not been entered yet will be represented by a \\u2008,\n// the punctuation space.\nvar DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER);\n\n// A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\nvar CREATE_CHARACTER_CLASS_PATTERN = function () {\n\treturn (/\\[([^\\[\\]])*\\]/g\n\t);\n};\n\n// Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\nvar CREATE_STANDALONE_DIGIT_PATTERN = function () {\n\treturn (/\\d(?=[^,}][^,}])/g\n\t);\n};\n\n// A pattern that is used to determine if a `format` is eligible\n// to be used by the \"as you type formatter\".\n// It is eligible when the `format` contains groups of the dollar sign\n// followed by a single digit, separated by valid phone number punctuation.\n// This prevents invalid punctuation (such as the star sign in Israeli star numbers)\n// getting into the output of the \"as you type formatter\".\nvar ELIGIBLE_FORMAT_PATTERN = new RegExp('^' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)+' + '$');\n\n// This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar VALID_INCOMPLETE_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\nvar VALID_INCOMPLETE_PHONE_NUMBER_PATTERN = new RegExp('^' + VALID_INCOMPLETE_PHONE_NUMBER + '$', 'i');\n\nvar AsYouType = function () {\n\n\t/**\r\n * @param {string?} [defaultCountry] - The default country used for parsing non-international phone numbers.\r\n * @param {Object} metadata\r\n */\n\tfunction AsYouType(defaultCountry, metadata) {\n\t\t_classCallCheck$7(this, AsYouType);\n\n\t\tthis.options = {};\n\n\t\tthis.metadata = new Metadata(metadata);\n\n\t\tif (defaultCountry && this.metadata.hasCountry(defaultCountry)) {\n\t\t\tthis.defaultCountry = defaultCountry;\n\t\t}\n\n\t\tthis.reset();\n\t}\n\t// Not setting `options` to a constructor argument\n\t// not to break backwards compatibility\n\t// for older versions of the library.\n\n\n\t_createClass$6(AsYouType, [{\n\t\tkey: 'input',\n\t\tvalue: function input(text) {\n\t\t\t// Parse input\n\n\t\t\tvar extracted_number = extract_formatted_phone_number(text) || '';\n\n\t\t\t// Special case for a lone '+' sign\n\t\t\t// since it's not considered a possible phone number.\n\t\t\tif (!extracted_number) {\n\t\t\t\tif (text && text.indexOf('+') >= 0) {\n\t\t\t\t\textracted_number = '+';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Validate possible first part of a phone number\n\t\t\tif (!VALID_INCOMPLETE_PHONE_NUMBER_PATTERN.test(extracted_number)) {\n\t\t\t\treturn this.currentOutput;\n\t\t\t}\n\n\t\t\treturn this.processInput(parseIncompletePhoneNumber(extracted_number));\n\t\t}\n\t}, {\n\t\tkey: 'processInput',\n\t\tvalue: function processInput(input) {\n\t\t\t// If an out of position '+' sign detected\n\t\t\t// (or a second '+' sign),\n\t\t\t// then just drop it from the input.\n\t\t\tif (input[0] === '+') {\n\t\t\t\tif (!this.parsedInput) {\n\t\t\t\t\tthis.parsedInput += '+';\n\n\t\t\t\t\t// If a default country was set\n\t\t\t\t\t// then reset it because an explicitly international\n\t\t\t\t\t// phone number is being entered\n\t\t\t\t\tthis.resetCountriness();\n\t\t\t\t}\n\n\t\t\t\tinput = input.slice(1);\n\t\t\t}\n\n\t\t\t// Raw phone number\n\t\t\tthis.parsedInput += input;\n\n\t\t\t// // Reset phone number validation state\n\t\t\t// this.valid = false\n\n\t\t\t// Add digits to the national number\n\t\t\tthis.nationalNumber += input;\n\n\t\t\t// TODO: Deprecated: rename `this.nationalNumber`\n\t\t\t// to `this.nationalNumber` and remove `.getNationalNumber()`.\n\n\t\t\t// Try to format the parsed input\n\n\t\t\tif (this.isInternational()) {\n\t\t\t\tif (!this.countryCallingCode) {\n\t\t\t\t\t// Extract country calling code from the digits entered so far.\n\n\t\t\t\t\t// There must be some digits in order to extract anything from them.\n\t\t\t\t\tif (!this.nationalNumber) {\n\t\t\t\t\t\t// Return raw phone number\n\t\t\t\t\t\treturn this.parsedInput;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If one looks at country phone codes\n\t\t\t\t\t// then he can notice that no one country phone code\n\t\t\t\t\t// is ever a (leftmost) substring of another country phone code.\n\t\t\t\t\t// So if a valid country code is extracted so far\n\t\t\t\t\t// then it means that this is the country code.\n\n\t\t\t\t\t// If no country phone code could be extracted so far,\n\t\t\t\t\t// then just return the raw phone number,\n\t\t\t\t\t// because it has no way of knowing\n\t\t\t\t\t// how to format the phone number so far.\n\t\t\t\t\tif (!this.extractCountryCallingCode()) {\n\t\t\t\t\t\t// Return raw phone number\n\t\t\t\t\t\treturn this.parsedInput;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Initialize country-specific data\n\t\t\t\t\tthis.initialize_phone_number_formats_for_this_country_calling_code();\n\t\t\t\t\tthis.resetFormat();\n\t\t\t\t\tthis.determineTheCountry();\n\t\t\t\t}\n\t\t\t\t// `this.country` could be `undefined`,\n\t\t\t\t// for instance, when there is ambiguity\n\t\t\t\t// in a form of several different countries\n\t\t\t\t// each corresponding to the same country phone code\n\t\t\t\t// (e.g. NANPA: USA, Canada, etc),\n\t\t\t\t// and there's not enough digits entered\n\t\t\t\t// to reliably determine the country\n\t\t\t\t// the phone number belongs to.\n\t\t\t\t// Therefore, in cases of such ambiguity,\n\t\t\t\t// each time something is input,\n\t\t\t\t// try to determine the country\n\t\t\t\t// (if it's not determined yet).\n\t\t\t\telse if (!this.country) {\n\t\t\t\t\t\tthis.determineTheCountry();\n\t\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Some national prefixes are substrings of other national prefixes\n\t\t\t\t// (for the same country), therefore try to extract national prefix each time\n\t\t\t\t// because a longer national prefix might be available at some point in time.\n\n\t\t\t\tvar previous_national_prefix = this.nationalPrefix;\n\t\t\t\tthis.nationalNumber = this.nationalPrefix + this.nationalNumber;\n\n\t\t\t\t// Possibly extract a national prefix\n\t\t\t\tthis.extractNationalPrefix();\n\n\t\t\t\tif (this.nationalPrefix !== previous_national_prefix) {\n\t\t\t\t\t// National number has changed\n\t\t\t\t\t// (due to another national prefix been extracted)\n\t\t\t\t\t// therefore national number has changed\n\t\t\t\t\t// therefore reset all previous formatting data.\n\t\t\t\t\t// (and leading digits matching state)\n\t\t\t\t\tthis.matching_formats = undefined;\n\t\t\t\t\tthis.resetFormat();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if (!this.shouldFormat())\n\t\t\t// {\n\t\t\t// \treturn this.format_as_non_formatted_number()\n\t\t\t// }\n\n\t\t\tif (!this.nationalNumber) {\n\t\t\t\treturn this.format_as_non_formatted_number();\n\t\t\t}\n\n\t\t\t// Check the available phone number formats\n\t\t\t// based on the currently available leading digits.\n\t\t\tthis.match_formats_by_leading_digits();\n\n\t\t\t// Format the phone number (given the next digits)\n\t\t\tvar formatted_national_phone_number = this.formatNationalNumber(input);\n\n\t\t\t// If the phone number could be formatted,\n\t\t\t// then return it, possibly prepending with country phone code\n\t\t\t// (for international phone numbers only)\n\t\t\tif (formatted_national_phone_number) {\n\t\t\t\treturn this.formatFullNumber(formatted_national_phone_number);\n\t\t\t}\n\n\t\t\t// If the phone number couldn't be formatted,\n\t\t\t// then just fall back to the raw phone number.\n\t\t\treturn this.format_as_non_formatted_number();\n\t\t}\n\t}, {\n\t\tkey: 'format_as_non_formatted_number',\n\t\tvalue: function format_as_non_formatted_number() {\n\t\t\t// Strip national prefix for incorrectly inputted international phones.\n\t\t\tif (this.isInternational() && this.countryCallingCode) {\n\t\t\t\treturn '+' + this.countryCallingCode + this.nationalNumber;\n\t\t\t}\n\n\t\t\treturn this.parsedInput;\n\t\t}\n\t}, {\n\t\tkey: 'formatNationalNumber',\n\t\tvalue: function formatNationalNumber(next_digits) {\n\t\t\t// Format the next phone number digits\n\t\t\t// using the previously chosen phone number format.\n\t\t\t//\n\t\t\t// This is done here because if `attempt_to_format_complete_phone_number`\n\t\t\t// was placed before this call then the `template`\n\t\t\t// wouldn't reflect the situation correctly (and would therefore be inconsistent)\n\t\t\t//\n\t\t\tvar national_number_formatted_with_previous_format = void 0;\n\t\t\tif (this.chosenFormat) {\n\t\t\t\tnational_number_formatted_with_previous_format = this.formatNextNationalNumberDigits(next_digits);\n\t\t\t}\n\n\t\t\t// See if the input digits can be formatted properly already. If not,\n\t\t\t// use the results from formatNextNationalNumberDigits(), which does formatting\n\t\t\t// based on the formatting pattern chosen.\n\n\t\t\tvar formatted_number = this.attempt_to_format_complete_phone_number();\n\n\t\t\t// Just because a phone number doesn't have a suitable format\n\t\t\t// that doesn't mean that the phone is invalid\n\t\t\t// because phone number formats only format phone numbers,\n\t\t\t// they don't validate them and some (rare) phone numbers\n\t\t\t// are meant to stay non-formatted.\n\t\t\tif (formatted_number) {\n\t\t\t\treturn formatted_number;\n\t\t\t}\n\n\t\t\t// For some phone number formats national prefix\n\n\t\t\t// If the previously chosen phone number format\n\t\t\t// didn't match the next (current) digit being input\n\t\t\t// (leading digits pattern didn't match).\n\t\t\tif (this.chooseAnotherFormat()) {\n\t\t\t\t// And a more appropriate phone number format\n\t\t\t\t// has been chosen for these `leading digits`,\n\t\t\t\t// then format the national phone number (so far)\n\t\t\t\t// using the newly selected phone number pattern.\n\n\t\t\t\t// Will return `undefined` if it couldn't format\n\t\t\t\t// the supplied national number\n\t\t\t\t// using the selected phone number pattern.\n\n\t\t\t\treturn this.reformatNationalNumber();\n\t\t\t}\n\n\t\t\t// If could format the next (current) digit\n\t\t\t// using the previously chosen phone number format\n\t\t\t// then return the formatted number so far.\n\n\t\t\t// If no new phone number format could be chosen,\n\t\t\t// and couldn't format the supplied national number\n\t\t\t// using the selected phone number pattern,\n\t\t\t// then it will return `undefined`.\n\n\t\t\treturn national_number_formatted_with_previous_format;\n\t\t}\n\t}, {\n\t\tkey: 'reset',\n\t\tvalue: function reset() {\n\t\t\t// Input stripped of non-phone-number characters.\n\t\t\t// Can only contain a possible leading '+' sign and digits.\n\t\t\tthis.parsedInput = '';\n\n\t\t\tthis.currentOutput = '';\n\n\t\t\t// This contains the national prefix that has been extracted. It contains only\n\t\t\t// digits without formatting.\n\t\t\tthis.nationalPrefix = '';\n\n\t\t\tthis.nationalNumber = '';\n\t\t\tthis.carrierCode = '';\n\n\t\t\tthis.resetCountriness();\n\n\t\t\tthis.resetFormat();\n\n\t\t\treturn this;\n\t\t}\n\t}, {\n\t\tkey: 'resetCountry',\n\t\tvalue: function resetCountry() {\n\t\t\tif (this.isInternational()) {\n\t\t\t\tthis.country = undefined;\n\t\t\t} else {\n\t\t\t\tthis.country = this.defaultCountry;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'resetCountriness',\n\t\tvalue: function resetCountriness() {\n\t\t\tthis.resetCountry();\n\n\t\t\tif (this.defaultCountry && !this.isInternational()) {\n\t\t\t\tthis.metadata.country(this.defaultCountry);\n\t\t\t\tthis.countryCallingCode = this.metadata.countryCallingCode();\n\n\t\t\t\tthis.initialize_phone_number_formats_for_this_country_calling_code();\n\t\t\t} else {\n\t\t\t\tthis.metadata.country(undefined);\n\t\t\t\tthis.countryCallingCode = undefined;\n\n\t\t\t\t// \"Available formats\" are all formats available for the country.\n\t\t\t\t// \"Matching formats\" are only formats eligible for the national number being entered.\n\t\t\t\tthis.available_formats = [];\n\t\t\t\tthis.matching_formats = undefined;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'resetFormat',\n\t\tvalue: function resetFormat() {\n\t\t\tthis.chosenFormat = undefined;\n\t\t\tthis.template = undefined;\n\t\t\tthis.partially_populated_template = undefined;\n\t\t\tthis.last_match_position = -1;\n\t\t}\n\n\t\t// Format each digit of national phone number (so far)\n\t\t// using the newly selected phone number pattern.\n\n\t}, {\n\t\tkey: 'reformatNationalNumber',\n\t\tvalue: function reformatNationalNumber() {\n\t\t\t// Format each digit of national phone number (so far)\n\t\t\t// using the selected phone number pattern.\n\t\t\treturn this.formatNextNationalNumberDigits(this.nationalNumber);\n\t\t}\n\t}, {\n\t\tkey: 'initialize_phone_number_formats_for_this_country_calling_code',\n\t\tvalue: function initialize_phone_number_formats_for_this_country_calling_code() {\n\t\t\t// Get all \"eligible\" phone number formats for this country\n\t\t\tthis.available_formats = this.metadata.formats().filter(function (format) {\n\t\t\t\treturn ELIGIBLE_FORMAT_PATTERN.test(format.internationalFormat());\n\t\t\t});\n\n\t\t\tthis.matching_formats = undefined;\n\t\t}\n\t}, {\n\t\tkey: 'match_formats_by_leading_digits',\n\t\tvalue: function match_formats_by_leading_digits() {\n\t\t\tvar leading_digits = this.nationalNumber;\n\n\t\t\t// \"leading digits\" pattern list starts with a\n\t\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\n\t\t\t// So, after a user inputs 3 digits of a national (significant) phone number\n\t\t\t// this national (significant) number can already be formatted.\n\t\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\n\t\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n\n\t\t\t// This implementation is different from Google's\n\t\t\t// in that it searches for a fitting format\n\t\t\t// even if the user has entered less than\n\t\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n\t\t\t// Because some leading digits patterns already match for a single first digit.\n\t\t\tvar index_of_leading_digits_pattern = leading_digits.length - MIN_LEADING_DIGITS_LENGTH;\n\t\t\tif (index_of_leading_digits_pattern < 0) {\n\t\t\t\tindex_of_leading_digits_pattern = 0;\n\t\t\t}\n\n\t\t\t// \"Available formats\" are all formats available for the country.\n\t\t\t// \"Matching formats\" are only formats eligible for the national number being entered.\n\n\t\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are available\n\t\t\t// then format matching starts narrowing down the list of possible formats\n\t\t\t// (only previously matched formats are considered for next digits).\n\t\t\tvar available_formats = this.had_enough_leading_digits && this.matching_formats || this.available_formats;\n\t\t\tthis.had_enough_leading_digits = this.shouldFormat();\n\n\t\t\tthis.matching_formats = available_formats.filter(function (format) {\n\t\t\t\tvar leading_digits_patterns_count = format.leadingDigitsPatterns().length;\n\n\t\t\t\t// If this format is not restricted to a certain\n\t\t\t\t// leading digits pattern then it fits.\n\t\t\t\tif (leading_digits_patterns_count === 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar leading_digits_pattern_index = Math.min(index_of_leading_digits_pattern, leading_digits_patterns_count - 1);\n\t\t\t\tvar leading_digits_pattern = format.leadingDigitsPatterns()[leading_digits_pattern_index];\n\n\t\t\t\t// Brackets are required for `^` to be applied to\n\t\t\t\t// all or-ed (`|`) parts, not just the first one.\n\t\t\t\treturn new RegExp('^(' + leading_digits_pattern + ')').test(leading_digits);\n\t\t\t});\n\n\t\t\t// If there was a phone number format chosen\n\t\t\t// and it no longer holds given the new leading digits then reset it.\n\t\t\t// The test for this `if` condition is marked as:\n\t\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\n\t\t\t// To construct a valid test case for this one can find a country\n\t\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\n\t\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\n\t\t\tif (this.chosenFormat && this.matching_formats.indexOf(this.chosenFormat) === -1) {\n\t\t\t\tthis.resetFormat();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'shouldFormat',\n\t\tvalue: function shouldFormat() {\n\t\t\t// Start matching any formats at all when the national number\n\t\t\t// entered so far is at least 3 digits long,\n\t\t\t// otherwise format matching would give false negatives\n\t\t\t// like when the digits entered so far are `2`\n\t\t\t// and the leading digits pattern is `21` –\n\t\t\t// it's quite obvious in this case that the format could be the one\n\t\t\t// but due to the absence of further digits it would give false negative.\n\t\t\t//\n\t\t\t// Presumably the limitation of \"3 digits min\"\n\t\t\t// is imposed to exclude false matches,\n\t\t\t// e.g. when there are two different formats\n\t\t\t// each one fitting one or two leading digits being input.\n\t\t\t// But for this case I would propose a specific `if/else` condition.\n\t\t\t//\n\t\t\treturn this.nationalNumber.length >= MIN_LEADING_DIGITS_LENGTH;\n\t\t}\n\n\t\t// Check to see if there is an exact pattern match for these digits. If so, we\n\t\t// should use this instead of any other formatting template whose\n\t\t// `leadingDigitsPattern` also matches the input.\n\n\t}, {\n\t\tkey: 'attempt_to_format_complete_phone_number',\n\t\tvalue: function attempt_to_format_complete_phone_number() {\n\t\t\tfor (var _iterator = this.matching_formats, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\t\t\tvar _ref;\n\n\t\t\t\tif (_isArray) {\n\t\t\t\t\tif (_i >= _iterator.length) break;\n\t\t\t\t\t_ref = _iterator[_i++];\n\t\t\t\t} else {\n\t\t\t\t\t_i = _iterator.next();\n\t\t\t\t\tif (_i.done) break;\n\t\t\t\t\t_ref = _i.value;\n\t\t\t\t}\n\n\t\t\t\tvar format = _ref;\n\n\t\t\t\tvar matcher = new RegExp('^(?:' + format.pattern() + ')$');\n\n\t\t\t\tif (!matcher.test(this.nationalNumber)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!this.isFormatApplicable(format)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// To leave the formatter in a consistent state\n\t\t\t\tthis.resetFormat();\n\t\t\t\tthis.chosenFormat = format;\n\n\t\t\t\tvar formatted_number = format_national_number_using_format(this.nationalNumber, format, this.isInternational(), this.nationalPrefix !== '', this.metadata);\n\n\t\t\t\t// Special handling for NANPA countries for AsYouType formatter.\n\t\t\t\t// Copied from Google's `libphonenumber`:\n\t\t\t\t// https://github.com/googlei18n/libphonenumber/blob/66986dbbe443ee8450e2b54dcd44ac384b3bbee8/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L535-L573\n\t\t\t\tif (this.nationalPrefix && this.countryCallingCode === '1') {\n\t\t\t\t\tformatted_number = '1 ' + formatted_number;\n\t\t\t\t}\n\n\t\t\t\t// Set `this.template` and `this.partially_populated_template`.\n\t\t\t\t//\n\t\t\t\t// `else` case doesn't ever happen\n\t\t\t\t// with the current metadata,\n\t\t\t\t// but just in case.\n\t\t\t\t//\n\t\t\t\t/* istanbul ignore else */\n\t\t\t\tif (this.createFormattingTemplate(format)) {\n\t\t\t\t\t// Populate `this.partially_populated_template`\n\t\t\t\t\tthis.reformatNationalNumber();\n\t\t\t\t} else {\n\t\t\t\t\t// Prepend `+CountryCode` in case of an international phone number\n\t\t\t\t\tvar full_number = this.formatFullNumber(formatted_number);\n\t\t\t\t\tthis.template = full_number.replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER);\n\t\t\t\t\tthis.partially_populated_template = full_number;\n\t\t\t\t}\n\n\t\t\t\treturn formatted_number;\n\t\t\t}\n\t\t}\n\n\t\t// Prepends `+CountryCode` in case of an international phone number\n\n\t}, {\n\t\tkey: 'formatFullNumber',\n\t\tvalue: function formatFullNumber(formattedNationalNumber) {\n\t\t\tif (this.isInternational()) {\n\t\t\t\treturn '+' + this.countryCallingCode + ' ' + formattedNationalNumber;\n\t\t\t}\n\t\t\treturn formattedNationalNumber;\n\t\t}\n\n\t\t// Extracts the country calling code from the beginning\n\t\t// of the entered `national_number` (so far),\n\t\t// and places the remaining input into the `national_number`.\n\n\t}, {\n\t\tkey: 'extractCountryCallingCode',\n\t\tvalue: function extractCountryCallingCode$1() {\n\t\t\tvar _extractCountryCallin = extractCountryCallingCode(this.parsedInput, this.defaultCountry, this.metadata.metadata),\n\t\t\t countryCallingCode = _extractCountryCallin.countryCallingCode,\n\t\t\t number = _extractCountryCallin.number;\n\n\t\t\tif (!countryCallingCode) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.countryCallingCode = countryCallingCode;\n\n\t\t\t// Sometimes people erroneously write national prefix\n\t\t\t// as part of an international number, e.g. +44 (0) ....\n\t\t\t// This violates the standards for international phone numbers,\n\t\t\t// so \"As You Type\" formatter assumes no national prefix\n\t\t\t// when parsing a phone number starting from `+`.\n\t\t\t// Even if it did attempt to filter-out that national prefix\n\t\t\t// it would look weird for a user trying to enter a digit\n\t\t\t// because from user's perspective the keyboard \"wouldn't be working\".\n\t\t\tthis.nationalNumber = number;\n\n\t\t\tthis.metadata.chooseCountryByCountryCallingCode(countryCallingCode);\n\t\t\treturn this.metadata.selectedCountry() !== undefined;\n\t\t}\n\t}, {\n\t\tkey: 'extractNationalPrefix',\n\t\tvalue: function extractNationalPrefix() {\n\t\t\tthis.nationalPrefix = '';\n\n\t\t\tif (!this.metadata.selectedCountry()) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only strip national prefixes for non-international phone numbers\n\t\t\t// because national prefixes can't be present in international phone numbers.\n\t\t\t// While `parseNumber()` is forgiving is such cases, `AsYouType` is not.\n\n\t\t\tvar _strip_national_prefi = strip_national_prefix_and_carrier_code(this.nationalNumber, this.metadata),\n\t\t\t potential_national_number = _strip_national_prefi.number,\n\t\t\t carrierCode = _strip_national_prefi.carrierCode;\n\n\t\t\tif (carrierCode) {\n\t\t\t\tthis.carrierCode = carrierCode;\n\t\t\t}\n\n\t\t\t// We require that the NSN remaining after stripping the national prefix and\n\t\t\t// carrier code be long enough to be a possible length for the region.\n\t\t\t// Otherwise, we don't do the stripping, since the original number could be\n\t\t\t// a valid short number.\n\t\t\tif (!this.metadata.possibleLengths() || this.isPossibleNumber(this.nationalNumber) && !this.isPossibleNumber(potential_national_number)) {\n\t\t\t\t// Verify the parsed national (significant) number for this country\n\t\t\t\t//\n\t\t\t\t// If the original number (before stripping national prefix) was viable,\n\t\t\t\t// and the resultant number is not, then prefer the original phone number.\n\t\t\t\t// This is because for some countries (e.g. Russia) the same digit could be both\n\t\t\t\t// a national prefix and a leading digit of a valid national phone number,\n\t\t\t\t// like `8` is the national prefix for Russia and both\n\t\t\t\t// `8 800 555 35 35` and `800 555 35 35` are valid numbers.\n\t\t\t\tif (matchesEntirely(this.nationalNumber, this.metadata.nationalNumberPattern()) && !matchesEntirely(potential_national_number, this.metadata.nationalNumberPattern())) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.nationalPrefix = this.nationalNumber.slice(0, this.nationalNumber.length - potential_national_number.length);\n\t\t\tthis.nationalNumber = potential_national_number;\n\n\t\t\treturn this.nationalPrefix;\n\t\t}\n\t}, {\n\t\tkey: 'isPossibleNumber',\n\t\tvalue: function isPossibleNumber(number) {\n\t\t\tvar validation_result = checkNumberLengthForType(number, undefined, this.metadata);\n\t\t\tswitch (validation_result) {\n\t\t\t\tcase 'IS_POSSIBLE':\n\t\t\t\t\treturn true;\n\t\t\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t\t\t// \treturn !this.isInternational()\n\t\t\t\tdefault:\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'chooseAnotherFormat',\n\t\tvalue: function chooseAnotherFormat() {\n\t\t\t// When there are multiple available formats, the formatter uses the first\n\t\t\t// format where a formatting template could be created.\n\t\t\tfor (var _iterator2 = this.matching_formats, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n\t\t\t\tvar _ref2;\n\n\t\t\t\tif (_isArray2) {\n\t\t\t\t\tif (_i2 >= _iterator2.length) break;\n\t\t\t\t\t_ref2 = _iterator2[_i2++];\n\t\t\t\t} else {\n\t\t\t\t\t_i2 = _iterator2.next();\n\t\t\t\t\tif (_i2.done) break;\n\t\t\t\t\t_ref2 = _i2.value;\n\t\t\t\t}\n\n\t\t\t\tvar format = _ref2;\n\n\t\t\t\t// If this format is currently being used\n\t\t\t\t// and is still possible, then stick to it.\n\t\t\t\tif (this.chosenFormat === format) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// If this `format` is suitable for \"as you type\",\n\t\t\t\t// then extract the template from this format\n\t\t\t\t// and use it to format the phone number being input.\n\n\t\t\t\tif (!this.isFormatApplicable(format)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!this.createFormattingTemplate(format)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis.chosenFormat = format;\n\n\t\t\t\t// With a new formatting template, the matched position\n\t\t\t\t// using the old template needs to be reset.\n\t\t\t\tthis.last_match_position = -1;\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// No format matches the phone number,\n\t\t\t// therefore set `country` to `undefined`\n\t\t\t// (or to the default country).\n\t\t\tthis.resetCountry();\n\n\t\t\t// No format matches the national phone number entered\n\t\t\tthis.resetFormat();\n\t\t}\n\t}, {\n\t\tkey: 'isFormatApplicable',\n\t\tvalue: function isFormatApplicable(format) {\n\t\t\t// If national prefix is mandatory for this phone number format\n\t\t\t// and the user didn't input the national prefix\n\t\t\t// then this phone number format isn't suitable.\n\t\t\tif (!this.isInternational() && !this.nationalPrefix && format.nationalPrefixIsMandatoryWhenFormatting()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// If this format doesn't use national prefix\n\t\t\t// but the user did input national prefix\n\t\t\t// then this phone number format isn't suitable.\n\t\t\tif (this.nationalPrefix && !format.usesNationalPrefix() && !format.nationalPrefixIsOptionalWhenFormatting()) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}, {\n\t\tkey: 'createFormattingTemplate',\n\t\tvalue: function createFormattingTemplate(format) {\n\t\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\n\t\t\t// (20|3)\\d{4}. In those cases we quickly return.\n\t\t\t// (Though there's no such format in current metadata)\n\t\t\t/* istanbul ignore if */\n\t\t\tif (format.pattern().indexOf('|') >= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Get formatting template for this phone number format\n\t\t\tvar template = this.getTemplateForNumberFormatPattern(format);\n\n\t\t\t// If the national number entered is too long\n\t\t\t// for any phone number format, then abort.\n\t\t\tif (!template) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// This one is for national number only\n\t\t\tthis.partially_populated_template = template;\n\n\t\t\t// For convenience, the public `.template` property\n\t\t\t// contains the whole international number\n\t\t\t// if the phone number being input is international:\n\t\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\n\t\t\t// a spacebar and then the template for the formatted national number.\n\t\t\tif (this.isInternational()) {\n\t\t\t\tthis.template = DIGIT_PLACEHOLDER + repeat(DIGIT_PLACEHOLDER, this.countryCallingCode.length) + ' ' + template;\n\t\t\t}\n\t\t\t// For local numbers, replace national prefix\n\t\t\t// with a digit placeholder.\n\t\t\telse {\n\t\t\t\t\tthis.template = template.replace(/\\d/g, DIGIT_PLACEHOLDER);\n\t\t\t\t}\n\n\t\t\t// This one is for the full phone number\n\t\t\treturn this.template;\n\t\t}\n\n\t\t// Generates formatting template for a phone number format\n\n\t}, {\n\t\tkey: 'getTemplateForNumberFormatPattern',\n\t\tvalue: function getTemplateForNumberFormatPattern(format) {\n\t\t\t// A very smart trick by the guys at Google\n\t\t\tvar number_pattern = format.pattern();\n\n\t\t\t/* istanbul ignore else */\n\t\t\t{\n\t\t\t\tnumber_pattern = number_pattern\n\t\t\t\t// Replace anything in the form of [..] with \\d\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d');\n\t\t\t}\n\n\t\t\t// This match will always succeed,\n\t\t\t// because the \"longest dummy phone number\"\n\t\t\t// has enough length to accomodate any possible\n\t\t\t// national phone number format pattern.\n\t\t\tvar dummy_phone_number_matching_format_pattern = LONGEST_DUMMY_PHONE_NUMBER.match(number_pattern)[0];\n\n\t\t\t// If the national number entered is too long\n\t\t\t// for any phone number format, then abort.\n\t\t\tif (this.nationalNumber.length > dummy_phone_number_matching_format_pattern.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Prepare the phone number format\n\t\t\tvar number_format = this.getFormatFormat(format);\n\n\t\t\t// Get a formatting template which can be used to efficiently format\n\t\t\t// a partial number where digits are added one by one.\n\n\t\t\t// Below `strict_pattern` is used for the\n\t\t\t// regular expression (with `^` and `$`).\n\t\t\t// This wasn't originally in Google's `libphonenumber`\n\t\t\t// and I guess they don't really need it\n\t\t\t// because they're not using \"templates\" to format phone numbers\n\t\t\t// but I added `strict_pattern` after encountering\n\t\t\t// South Korean phone number formatting bug.\n\t\t\t//\n\t\t\t// Non-strict regular expression bug demonstration:\n\t\t\t//\n\t\t\t// this.nationalNumber : `111111111` (9 digits)\n\t\t\t//\n\t\t\t// number_pattern : (\\d{2})(\\d{3,4})(\\d{4})\n\t\t\t// number_format : `$1 $2 $3`\n\t\t\t// dummy_phone_number_matching_format_pattern : `9999999999` (10 digits)\n\t\t\t//\n\t\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\n\t\t\t//\n\t\t\t// template : xx xxxx xxxx\n\t\t\t//\n\t\t\t// But the correct template in this case is `xx xxx xxxx`.\n\t\t\t// The template was generated incorrectly because of the\n\t\t\t// `{3,4}` variability in the `number_pattern`.\n\t\t\t//\n\t\t\t// The fix is, if `this.nationalNumber` has already sufficient length\n\t\t\t// to satisfy the `number_pattern` completely then `this.nationalNumber` is used\n\t\t\t// instead of `dummy_phone_number_matching_format_pattern`.\n\n\t\t\tvar strict_pattern = new RegExp('^' + number_pattern + '$');\n\t\t\tvar national_number_dummy_digits = this.nationalNumber.replace(/\\d/g, DUMMY_DIGIT);\n\n\t\t\t// If `this.nationalNumber` has already sufficient length\n\t\t\t// to satisfy the `number_pattern` completely then use it\n\t\t\t// instead of `dummy_phone_number_matching_format_pattern`.\n\t\t\tif (strict_pattern.test(national_number_dummy_digits)) {\n\t\t\t\tdummy_phone_number_matching_format_pattern = national_number_dummy_digits;\n\t\t\t}\n\n\t\t\t// Generate formatting template for this phone number format\n\t\t\treturn dummy_phone_number_matching_format_pattern\n\t\t\t// Format the dummy phone number according to the format\n\t\t\t.replace(new RegExp(number_pattern), number_format)\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER);\n\t\t}\n\t}, {\n\t\tkey: 'formatNextNationalNumberDigits',\n\t\tvalue: function formatNextNationalNumberDigits(digits) {\n\t\t\t// Using `.split('')` to iterate through a string here\n\t\t\t// to avoid requiring `Symbol.iterator` polyfill.\n\t\t\t// `.split('')` is generally not safe for Unicode,\n\t\t\t// but in this particular case for `digits` it is safe.\n\t\t\t// for (const digit of digits)\n\t\t\tfor (var _iterator3 = digits.split(''), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n\t\t\t\tvar _ref3;\n\n\t\t\t\tif (_isArray3) {\n\t\t\t\t\tif (_i3 >= _iterator3.length) break;\n\t\t\t\t\t_ref3 = _iterator3[_i3++];\n\t\t\t\t} else {\n\t\t\t\t\t_i3 = _iterator3.next();\n\t\t\t\t\tif (_i3.done) break;\n\t\t\t\t\t_ref3 = _i3.value;\n\t\t\t\t}\n\n\t\t\t\tvar digit = _ref3;\n\n\t\t\t\t// If there is room for more digits in current `template`,\n\t\t\t\t// then set the next digit in the `template`,\n\t\t\t\t// and return the formatted digits so far.\n\n\t\t\t\t// If more digits are entered than the current format could handle\n\t\t\t\tif (this.partially_populated_template.slice(this.last_match_position + 1).search(DIGIT_PLACEHOLDER_MATCHER) === -1) {\n\t\t\t\t\t// Reset the current format,\n\t\t\t\t\t// so that the new format will be chosen\n\t\t\t\t\t// in a subsequent `this.chooseAnotherFormat()` call\n\t\t\t\t\t// later in code.\n\t\t\t\t\tthis.chosenFormat = undefined;\n\t\t\t\t\tthis.template = undefined;\n\t\t\t\t\tthis.partially_populated_template = undefined;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.last_match_position = this.partially_populated_template.search(DIGIT_PLACEHOLDER_MATCHER);\n\t\t\t\tthis.partially_populated_template = this.partially_populated_template.replace(DIGIT_PLACEHOLDER_MATCHER, digit);\n\t\t\t}\n\n\t\t\t// Return the formatted phone number so far.\n\t\t\treturn cut_stripping_dangling_braces(this.partially_populated_template, this.last_match_position + 1);\n\n\t\t\t// The old way which was good for `input-format` but is not so good\n\t\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\n\t\t\t// return close_dangling_braces(this.partially_populated_template, this.last_match_position + 1)\n\t\t\t// \t.replace(DIGIT_PLACEHOLDER_MATCHER_GLOBAL, ' ')\n\t\t}\n\t}, {\n\t\tkey: 'isInternational',\n\t\tvalue: function isInternational() {\n\t\t\treturn this.parsedInput && this.parsedInput[0] === '+';\n\t\t}\n\t}, {\n\t\tkey: 'getFormatFormat',\n\t\tvalue: function getFormatFormat(format) {\n\t\t\tif (this.isInternational()) {\n\t\t\t\treturn changeInternationalFormatStyle(format.internationalFormat());\n\t\t\t}\n\n\t\t\t// If national prefix formatting rule is set\n\t\t\t// for this phone number format\n\t\t\tif (format.nationalPrefixFormattingRule()) {\n\t\t\t\t// If the user did input the national prefix\n\t\t\t\t// (or if the national prefix formatting rule does not require national prefix)\n\t\t\t\t// then maybe make it part of the phone number template\n\t\t\t\tif (this.nationalPrefix || !format.usesNationalPrefix()) {\n\t\t\t\t\t// Make the national prefix part of the phone number template\n\t\t\t\t\treturn format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule());\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Special handling for NANPA countries for AsYouType formatter.\n\t\t\t// Copied from Google's `libphonenumber`:\n\t\t\t// https://github.com/googlei18n/libphonenumber/blob/66986dbbe443ee8450e2b54dcd44ac384b3bbee8/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L535-L573\n\t\t\telse if (this.countryCallingCode === '1' && this.nationalPrefix === '1') {\n\t\t\t\t\treturn '1 ' + format.format();\n\t\t\t\t}\n\n\t\t\treturn format.format();\n\t\t}\n\n\t\t// Determines the country of the phone number\n\t\t// entered so far based on the country phone code\n\t\t// and the national phone number.\n\n\t}, {\n\t\tkey: 'determineTheCountry',\n\t\tvalue: function determineTheCountry() {\n\t\t\tthis.country = find_country_code(this.countryCallingCode, this.nationalNumber, this.metadata);\n\t\t}\n\n\t\t/**\r\n * Returns an instance of `PhoneNumber` class.\r\n * Will return `undefined` if no national (significant) number\r\n * digits have been entered so far, or if no `defaultCountry` has been\r\n * set and the user enters a phone number not in international format.\r\n */\n\n\t}, {\n\t\tkey: 'getNumber',\n\t\tvalue: function getNumber() {\n\t\t\tif (!this.countryCallingCode || !this.nationalNumber) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tvar phoneNumber = new PhoneNumber(this.country || this.countryCallingCode, this.nationalNumber, this.metadata.metadata);\n\t\t\tif (this.carrierCode) {\n\t\t\t\tphoneNumber.carrierCode = this.carrierCode;\n\t\t\t}\n\t\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\n\t\t\treturn phoneNumber;\n\t\t}\n\t}, {\n\t\tkey: 'getNationalNumber',\n\t\tvalue: function getNationalNumber() {\n\t\t\treturn this.nationalNumber;\n\t\t}\n\t}, {\n\t\tkey: 'getTemplate',\n\t\tvalue: function getTemplate() {\n\t\t\tif (!this.template) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar index = -1;\n\n\t\t\tvar i = 0;\n\t\t\twhile (i < this.parsedInput.length) {\n\t\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1);\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\treturn cut_stripping_dangling_braces(this.template, index + 1);\n\t\t}\n\t}]);\n\n\treturn AsYouType;\n}();\n\n\nfunction strip_dangling_braces(string) {\n\tvar dangling_braces = [];\n\tvar i = 0;\n\twhile (i < string.length) {\n\t\tif (string[i] === '(') {\n\t\t\tdangling_braces.push(i);\n\t\t} else if (string[i] === ')') {\n\t\t\tdangling_braces.pop();\n\t\t}\n\t\ti++;\n\t}\n\n\tvar start = 0;\n\tvar cleared_string = '';\n\tdangling_braces.push(string.length);\n\tfor (var _iterator4 = dangling_braces, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n\t\tvar _ref4;\n\n\t\tif (_isArray4) {\n\t\t\tif (_i4 >= _iterator4.length) break;\n\t\t\t_ref4 = _iterator4[_i4++];\n\t\t} else {\n\t\t\t_i4 = _iterator4.next();\n\t\t\tif (_i4.done) break;\n\t\t\t_ref4 = _i4.value;\n\t\t}\n\n\t\tvar index = _ref4;\n\n\t\tcleared_string += string.slice(start, index);\n\t\tstart = index + 1;\n\t}\n\n\treturn cleared_string;\n}\n\nfunction cut_stripping_dangling_braces(string, cut_before_index) {\n\tif (string[cut_before_index] === ')') {\n\t\tcut_before_index++;\n\t}\n\treturn strip_dangling_braces(string.slice(0, cut_before_index));\n}\n\n// Repeats a string (or a symbol) N times.\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\nfunction repeat(string, times) {\n\tif (times < 1) {\n\t\treturn '';\n\t}\n\n\tvar result = '';\n\n\twhile (times > 1) {\n\t\tif (times & 1) {\n\t\t\tresult += string;\n\t\t}\n\n\t\ttimes >>= 1;\n\t\tstring += string;\n\t}\n\n\treturn result + string;\n}\n\n// Deprecated.\r\n\r\nfunction parsePhoneNumberFromString$2()\r\n{\r\n\tvar parameters = Array.prototype.slice.call(arguments);\r\n\tparameters.push(metadata);\r\n\treturn parsePhoneNumberFromString$1.apply(this, parameters)\r\n}\r\n\r\n// Deprecated.\r\nfunction PhoneNumberSearch$1(text, options)\r\n{\r\n\tPhoneNumberSearch.call(this, text, options, metadata);\r\n}\r\n\r\n// Deprecated.\r\nPhoneNumberSearch$1.prototype = Object.create(PhoneNumberSearch.prototype, {});\r\nPhoneNumberSearch$1.prototype.constructor = PhoneNumberSearch$1;\r\n\r\nfunction PhoneNumberMatcher$1(text, options)\r\n{\r\n\tPhoneNumberMatcher.call(this, text, options, metadata);\r\n}\r\n\r\nPhoneNumberMatcher$1.prototype = Object.create(PhoneNumberMatcher.prototype, {});\r\nPhoneNumberMatcher$1.prototype.constructor = PhoneNumberMatcher$1;\r\n\r\nfunction AsYouType$1(country)\r\n{\r\n\tAsYouType.call(this, country, metadata);\r\n}\r\n\r\nAsYouType$1.prototype = Object.create(AsYouType.prototype, {});\r\nAsYouType$1.prototype.constructor = AsYouType$1;\n\nvar classnames = createCommonjsModule(function (module) {\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n});\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends$8 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar ReactCountryFlag = function (_Component) {\n inherits(ReactCountryFlag, _Component);\n\n function ReactCountryFlag() {\n classCallCheck(this, ReactCountryFlag);\n return possibleConstructorReturn(this, (ReactCountryFlag.__proto__ || Object.getPrototypeOf(ReactCountryFlag)).apply(this, arguments));\n }\n\n createClass(ReactCountryFlag, [{\n key: \"render\",\n value: function render() {\n var _props = this.props,\n cdnUrl = _props.cdnUrl,\n code = _props.code,\n styleProps = _props.styleProps,\n svg = _props.svg,\n title = _props.title;\n\n\n var flagUrl = \"\" + cdnUrl + code.toLowerCase() + \".svg\";\n var emoji = code.toUpperCase().replace(/./g, function (char) {\n return String.fromCodePoint(char.charCodeAt(0) + 127397);\n });\n\n return svg ? React.createElement(\"span\", {\n \"aria-label\": code,\n role: \"img\",\n style: _extends$8({\n position: \"relative\",\n display: \"inline-block\",\n width: \"1.3333333333em\",\n height: \"1em\",\n backgroundImage: \"url(\" + flagUrl + \")\",\n backgroundPosition: \"50%\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"contain\",\n fontSize: \"1em\",\n lineHeight: \"1em\",\n verticalAlign: \"middle\"\n }, styleProps),\n title: title || code\n }) : React.createElement(\n \"span\",\n {\n \"aria-label\": code,\n role: \"img\",\n style: _extends$8({\n verticalAlign: \"middle\"\n }, styleProps),\n title: code\n },\n emoji\n );\n }\n }]);\n return ReactCountryFlag;\n}(Component);\n\nReactCountryFlag.propTypes = {\n cdnUrl: propTypes.string,\n code: propTypes.string.isRequired,\n styleProps: propTypes.object,\n svg: propTypes.bool,\n title: propTypes.string\n};\nReactCountryFlag.defaultProps = {\n cdnUrl: \"https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/3.2.1/flags/4x3/\",\n svg: false\n};\n\n/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER$1 = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array ? array.length : 0;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol$1 = root.Symbol,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty$1.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty$1.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty$1.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject$1(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject$1(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty$1.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n object = Object(object);\n return basePickBy(object, props, function(value, key) {\n return key in object;\n });\n}\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n var index = -1,\n length = props.length,\n result = {};\n\n while (++index < length) {\n var key = props[index],\n value = object[key];\n\n if (predicate(value, key)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER$1 : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty$1.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject$1(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject$1(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n if (object == null) {\n return {};\n }\n props = arrayMap(baseFlatten(props, 1), toKey);\n return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nvar lodash_omit = omit;\n\nvar hasWindowObj = typeof window !== 'undefined';\nvar detectMobile = {\n Android: function Android() {\n return hasWindowObj && window.navigator.userAgent.match(/Android/i);\n },\n BlackBerry: function BlackBerry() {\n return hasWindowObj && window.navigator.userAgent.match(/BlackBerry/i);\n },\n iOS: function iOS() {\n return hasWindowObj && window.navigator.userAgent.match(/iPhone|iPad|iPod/i);\n },\n Opera: function Opera() {\n return hasWindowObj && window.navigator.userAgent.match(/Opera Mini/i);\n },\n Windows: function Windows() {\n return hasWindowObj && window.navigator.userAgent.match(/IEMobile/i);\n },\n any: function any() {\n return detectMobile.Android() || detectMobile.BlackBerry() || detectMobile.iOS() || detectMobile.Opera() || detectMobile.Windows();\n }\n};\n\nvar globe = \"data:image/png;base64,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\";\n\nvar allCountries = [{\n name: 'International',\n regions: [],\n iso2: 'intl',\n dialCode: '',\n isAreaCode: true,\n hasAreaCodes: false\n}, {\n name: 'Afghanistan (افغانستان)',\n regions: ['asia'],\n iso2: 'af',\n dialCode: '+93',\n hasAreaCodes: false\n}, {\n name: 'Albania (Shqipëri)',\n regions: ['europe'],\n iso2: 'al',\n dialCode: '+355',\n hasAreaCodes: false\n}, {\n name: 'Algeria (الجزائر)',\n regions: ['africa', 'north-africa'],\n iso2: 'dz',\n dialCode: '+213',\n hasAreaCodes: false\n}, {\n name: 'American Samoa',\n regions: ['oceania'],\n iso2: 'as',\n dialCode: '+1684',\n hasAreaCodes: false\n}, {\n name: 'Andorra',\n regions: ['europe'],\n iso2: 'ad',\n dialCode: '+376',\n hasAreaCodes: false\n}, {\n name: 'Angola',\n regions: ['africa'],\n iso2: 'ao',\n dialCode: '+244',\n hasAreaCodes: false\n}, {\n name: 'Anguilla',\n regions: ['america', 'carribean'],\n iso2: 'ai',\n dialCode: '+1264',\n hasAreaCodes: false\n}, {\n name: 'Antigua and Barbuda',\n regions: ['america', 'carribean'],\n iso2: 'ag',\n dialCode: '+1268',\n hasAreaCodes: false\n}, {\n name: 'Argentina',\n regions: ['america', 'south-america'],\n iso2: 'ar',\n dialCode: '+54',\n hasAreaCodes: false\n}, {\n name: 'Armenia (Հայաստան)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'am',\n dialCode: '+374',\n hasAreaCodes: false\n}, {\n name: 'Aruba',\n regions: ['america', 'carribean'],\n iso2: 'aw',\n dialCode: '+297',\n hasAreaCodes: false\n}, {\n name: 'Australia',\n regions: ['oceania'],\n iso2: 'au',\n dialCode: '+61',\n hasAreaCodes: false\n}, {\n name: 'Austria (Österreich)',\n regions: ['europe', 'european-union'],\n iso2: 'at',\n dialCode: '+43',\n hasAreaCodes: false\n}, {\n name: 'Azerbaijan (Azərbaycan)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'az',\n dialCode: '+994',\n hasAreaCodes: false\n}, {\n name: 'Bahamas',\n regions: ['america', 'carribean'],\n iso2: 'bs',\n dialCode: '+1242',\n hasAreaCodes: false\n}, {\n name: 'Bahrain (البحرين)',\n regions: ['middle-east'],\n iso2: 'bh',\n dialCode: '+973',\n hasAreaCodes: false\n}, {\n name: 'Bangladesh (বাংলাদেশ)',\n regions: ['asia'],\n iso2: 'bd',\n dialCode: '+880',\n hasAreaCodes: false\n}, {\n name: 'Barbados',\n regions: ['america', 'carribean'],\n iso2: 'bb',\n dialCode: '+1246',\n hasAreaCodes: false\n}, {\n name: 'Belarus (Беларусь)',\n regions: ['europe', 'ex-ussr'],\n iso2: 'by',\n dialCode: '+375',\n hasAreaCodes: false\n}, {\n name: 'Belgium (België)',\n regions: ['europe', 'european-union'],\n iso2: 'be',\n dialCode: '+32',\n hasAreaCodes: false\n}, {\n name: 'Belize',\n regions: ['america', 'central-america'],\n iso2: 'bz',\n dialCode: '+501',\n hasAreaCodes: false\n}, {\n name: 'Benin (Bénin)',\n regions: ['africa'],\n iso2: 'bj',\n dialCode: '+229',\n hasAreaCodes: false\n}, {\n name: 'Bermuda',\n regions: ['america', 'north-america'],\n iso2: 'bm',\n dialCode: '+1441',\n hasAreaCodes: false\n}, {\n name: 'Bhutan (འབྲུག)',\n regions: ['asia'],\n iso2: 'bt',\n dialCode: '+975',\n hasAreaCodes: false\n}, {\n name: 'Bolivia',\n regions: ['america', 'south-america'],\n iso2: 'bo',\n dialCode: '+591',\n hasAreaCodes: false\n}, {\n name: 'Bosnia and Herzegovina (Босна и Херцеговина)',\n regions: ['europe'],\n iso2: 'ba',\n dialCode: '+387',\n hasAreaCodes: false\n}, {\n name: 'Botswana',\n regions: ['africa'],\n iso2: 'bw',\n dialCode: '+267',\n hasAreaCodes: false\n}, {\n name: 'Brazil (Brasil)',\n regions: ['america', 'south-america'],\n iso2: 'br',\n dialCode: '+55',\n hasAreaCodes: false\n}, {\n name: 'British Indian Ocean Territory',\n regions: ['asia'],\n iso2: 'io',\n dialCode: '+246',\n hasAreaCodes: false\n}, {\n name: 'British Virgin Islands',\n regions: ['america', 'carribean'],\n iso2: 'vg',\n dialCode: '+1284',\n hasAreaCodes: false\n}, {\n name: 'Brunei',\n regions: ['asia'],\n iso2: 'bn',\n dialCode: '+673',\n hasAreaCodes: false\n}, {\n name: 'Bulgaria (България)',\n regions: ['europe', 'european-union'],\n iso2: 'bg',\n dialCode: '+359',\n hasAreaCodes: false\n}, {\n name: 'Burkina Faso',\n regions: ['africa'],\n iso2: 'bf',\n dialCode: '+226',\n hasAreaCodes: false\n}, {\n name: 'Burundi (Uburundi)',\n regions: ['africa'],\n iso2: 'bi',\n dialCode: '+257',\n hasAreaCodes: false\n}, {\n name: 'Cambodia (កម្ពុជា)',\n regions: ['asia'],\n iso2: 'kh',\n dialCode: '+855',\n hasAreaCodes: false\n}, {\n name: 'Cameroon (Cameroun)',\n regions: ['africa'],\n iso2: 'cm',\n dialCode: '+237',\n hasAreaCodes: false\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1',\n hasAreaCodes: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1204',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1236',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1249',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1250',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1289',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1306',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1343',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1365',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1387',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1403',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1416',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1418',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1431',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1437',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1438',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1450',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1506',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1514',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1519',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1548',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1579',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1581',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1587',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1604',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1613',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1639',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1647',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1672',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1705',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1709',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1742',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1778',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1780',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1782',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1807',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1819',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1825',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1867',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1873',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1902',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Canada',\n regions: ['america', 'north-america'],\n iso2: 'ca',\n dialCode: '+1905',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Cape Verde (Kabu Verdi)',\n regions: ['africa'],\n iso2: 'cv',\n dialCode: '+238',\n hasAreaCodes: false\n}, {\n name: 'Caribbean Netherlands',\n regions: ['america', 'carribean'],\n iso2: 'bq',\n dialCode: '+599',\n hasAreaCodes: false\n}, {\n name: 'Cayman Islands',\n regions: ['america', 'carribean'],\n iso2: 'ky',\n dialCode: '+1345',\n hasAreaCodes: false\n}, {\n name: 'Central African Republic (République centrafricaine)',\n regions: ['africa'],\n iso2: 'cf',\n dialCode: '+236',\n hasAreaCodes: false\n}, {\n name: 'Chad (Tchad)',\n regions: ['africa'],\n iso2: 'td',\n dialCode: '+235',\n hasAreaCodes: false\n}, {\n name: 'Chile',\n regions: ['america', 'south-america'],\n iso2: 'cl',\n dialCode: '+56',\n hasAreaCodes: false\n}, {\n name: 'China (中国)',\n regions: ['asia'],\n iso2: 'cn',\n dialCode: '+86',\n hasAreaCodes: false\n}, {\n name: 'Colombia',\n regions: ['america', 'south-america'],\n iso2: 'co',\n dialCode: '+57',\n hasAreaCodes: false\n}, {\n name: 'Comoros (جزر القمر)',\n regions: ['africa'],\n iso2: 'km',\n dialCode: '+269',\n hasAreaCodes: false\n}, {\n name: 'Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)',\n regions: ['africa'],\n iso2: 'cd',\n dialCode: '+243',\n hasAreaCodes: false\n}, {\n name: 'Congo (Republic) (Congo-Brazzaville)',\n regions: ['africa'],\n iso2: 'cg',\n dialCode: '+242',\n hasAreaCodes: false\n}, {\n name: 'Cook Islands',\n regions: ['oceania'],\n iso2: 'ck',\n dialCode: '+682',\n hasAreaCodes: false\n}, {\n name: 'Costa Rica',\n regions: ['america', 'central-america'],\n iso2: 'cr',\n dialCode: '+506',\n hasAreaCodes: false\n}, {\n name: 'Côte d’Ivoire',\n regions: ['africa'],\n iso2: 'ci',\n dialCode: '+225',\n hasAreaCodes: false\n}, {\n name: 'Croatia (Hrvatska)',\n regions: ['europe', 'european-union'],\n iso2: 'hr',\n dialCode: '+385',\n hasAreaCodes: false\n}, {\n name: 'Cuba',\n regions: ['america', 'carribean'],\n iso2: 'cu',\n dialCode: '+53',\n hasAreaCodes: false\n}, {\n name: 'Curaçao',\n regions: ['america', 'carribean'],\n iso2: 'cw',\n dialCode: '+599',\n hasAreaCodes: false\n}, {\n name: 'Cyprus (Κύπρος)',\n regions: ['europe', 'european-union'],\n iso2: 'cy',\n dialCode: '+357',\n hasAreaCodes: false\n}, {\n name: 'Czech Republic (Česká republika)',\n regions: ['europe', 'european-union'],\n iso2: 'cz',\n dialCode: '+420',\n hasAreaCodes: false\n}, {\n name: 'Denmark (Danmark)',\n regions: ['europe', 'european-union'],\n iso2: 'dk',\n dialCode: '+45',\n hasAreaCodes: false\n}, {\n name: 'Djibouti',\n regions: ['africa'],\n iso2: 'dj',\n dialCode: '+253',\n hasAreaCodes: false\n}, {\n name: 'Dominica',\n regions: ['america', 'carribean'],\n iso2: 'dm',\n dialCode: '+1767',\n hasAreaCodes: false\n}, {\n name: 'Dominican Republic (República Dominicana)',\n regions: ['america', 'carribean'],\n iso2: 'do',\n dialCode: '+1',\n hasAreaCodes: true\n}, {\n name: 'Dominican Republic (República Dominicana)',\n regions: ['america', 'carribean'],\n iso2: 'do',\n dialCode: '+1809',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Dominican Republic (República Dominicana)',\n regions: ['america', 'carribean'],\n iso2: 'do',\n dialCode: '+1829',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Dominican Republic (República Dominicana)',\n regions: ['america', 'carribean'],\n iso2: 'do',\n dialCode: '+1849',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Ecuador',\n regions: ['america', 'south-america'],\n iso2: 'ec',\n dialCode: '+593',\n hasAreaCodes: false\n}, {\n name: 'Egypt (مصر)',\n regions: ['africa', 'north-africa'],\n iso2: 'eg',\n dialCode: '+20',\n hasAreaCodes: false\n}, {\n name: 'El Salvador',\n regions: ['america', 'central-america'],\n iso2: 'sv',\n dialCode: '+503',\n hasAreaCodes: false\n}, {\n name: 'Equatorial Guinea (Guinea Ecuatorial)',\n regions: ['africa'],\n iso2: 'gq',\n dialCode: '+240',\n hasAreaCodes: false\n}, {\n name: 'Eritrea',\n regions: ['africa'],\n iso2: 'er',\n dialCode: '+291',\n hasAreaCodes: false\n}, {\n name: 'Estonia (Eesti)',\n regions: ['europe', 'european-union', 'ex-ussr'],\n iso2: 'ee',\n dialCode: '+372',\n hasAreaCodes: false\n}, {\n name: 'Ethiopia',\n regions: ['africa'],\n iso2: 'et',\n dialCode: '+251',\n hasAreaCodes: false\n}, {\n name: 'Falkland Islands (Islas Malvinas)',\n regions: ['america', 'south-america'],\n iso2: 'fk',\n dialCode: '+500',\n hasAreaCodes: false\n}, {\n name: 'Faroe Islands (Føroyar)',\n regions: ['europe'],\n iso2: 'fo',\n dialCode: '+298',\n hasAreaCodes: false\n}, {\n name: 'Fiji',\n regions: ['oceania'],\n iso2: 'fj',\n dialCode: '+679',\n hasAreaCodes: false\n}, {\n name: 'Finland (Suomi)',\n regions: ['europe', 'european-union'],\n iso2: 'fi',\n dialCode: '+358',\n hasAreaCodes: false\n}, {\n name: 'France',\n regions: ['europe', 'european-union'],\n iso2: 'fr',\n dialCode: '+33',\n hasAreaCodes: false\n}, {\n name: 'French Guiana (Guyane française)',\n regions: ['america', 'south-america'],\n iso2: 'gf',\n dialCode: '+594',\n hasAreaCodes: false\n}, {\n name: 'French Polynesia (Polynésie française)',\n regions: ['oceania'],\n iso2: 'pf',\n dialCode: '+689',\n hasAreaCodes: false\n}, {\n name: 'Gabon',\n regions: ['africa'],\n iso2: 'ga',\n dialCode: '+241',\n hasAreaCodes: false\n}, {\n name: 'Gambia',\n regions: ['africa'],\n iso2: 'gm',\n dialCode: '+220',\n hasAreaCodes: false\n}, {\n name: 'Georgia (საქართველო)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'ge',\n dialCode: '+995',\n hasAreaCodes: false\n}, {\n name: 'Germany (Deutschland)',\n regions: ['europe', 'european-union'],\n iso2: 'de',\n dialCode: '+49',\n hasAreaCodes: false\n}, {\n name: 'Ghana (Gaana)',\n regions: ['africa'],\n iso2: 'gh',\n dialCode: '+233',\n hasAreaCodes: false\n}, {\n name: 'Gibraltar',\n regions: ['europe'],\n iso2: 'gi',\n dialCode: '+350',\n hasAreaCodes: false\n}, {\n name: 'Greece (Ελλάδα)',\n regions: ['europe', 'european-union'],\n iso2: 'gr',\n dialCode: '+30',\n hasAreaCodes: false\n}, {\n name: 'Greenland (Kalaallit Nunaat)',\n regions: ['america'],\n iso2: 'gl',\n dialCode: '+299',\n hasAreaCodes: false\n}, {\n name: 'Grenada',\n regions: ['america', 'carribean'],\n iso2: 'gd',\n dialCode: '+1473',\n hasAreaCodes: false\n}, {\n name: 'Guadeloupe',\n regions: ['america', 'carribean'],\n iso2: 'gp',\n dialCode: '+590',\n hasAreaCodes: false\n}, {\n name: 'Guam',\n regions: ['oceania'],\n iso2: 'gu',\n dialCode: '+1671',\n hasAreaCodes: false\n}, {\n name: 'Guatemala',\n regions: ['america', 'central-america'],\n iso2: 'gt',\n dialCode: '+502',\n hasAreaCodes: false\n}, {\n name: 'Guinea (Guinée)',\n regions: ['africa'],\n iso2: 'gn',\n dialCode: '+224',\n hasAreaCodes: false\n}, {\n name: 'Guinea-Bissau (Guiné Bissau)',\n regions: ['africa'],\n iso2: 'gw',\n dialCode: '+245',\n hasAreaCodes: false\n}, {\n name: 'Guyana',\n regions: ['america', 'south-america'],\n iso2: 'gy',\n dialCode: '+592',\n hasAreaCodes: false\n}, {\n name: 'Haiti',\n regions: ['america', 'carribean'],\n iso2: 'ht',\n dialCode: '+509',\n hasAreaCodes: false\n}, {\n name: 'Honduras',\n regions: ['america', 'central-america'],\n iso2: 'hn',\n dialCode: '+504',\n hasAreaCodes: false\n}, {\n name: 'Hong Kong (香港)',\n regions: ['asia'],\n iso2: 'hk',\n dialCode: '+852',\n hasAreaCodes: false\n}, {\n name: 'Hungary (Magyarország)',\n regions: ['europe', 'european-union'],\n iso2: 'hu',\n dialCode: '+36',\n hasAreaCodes: false\n}, {\n name: 'Iceland (Ísland)',\n regions: ['europe'],\n iso2: 'is',\n dialCode: '+354',\n hasAreaCodes: false\n}, {\n name: 'India (भारत)',\n regions: ['asia'],\n iso2: 'in',\n dialCode: '+91',\n hasAreaCodes: false\n}, {\n name: 'Indonesia',\n regions: ['asia'],\n iso2: 'id',\n dialCode: '+62',\n hasAreaCodes: false\n}, {\n name: 'Iran (ایران)',\n regions: ['middle-east'],\n iso2: 'ir',\n dialCode: '+98',\n hasAreaCodes: false\n}, {\n name: 'Iraq (العراق)',\n regions: ['middle-east'],\n iso2: 'iq',\n dialCode: '+964',\n hasAreaCodes: false\n}, {\n name: 'Ireland',\n regions: ['europe', 'european-union'],\n iso2: 'ie',\n dialCode: '+353',\n hasAreaCodes: false\n}, {\n name: 'Israel (ישראל)',\n regions: ['middle-east'],\n iso2: 'il',\n dialCode: '+972',\n hasAreaCodes: false\n}, {\n name: 'Italy (Italia)',\n regions: ['europe', 'european-union'],\n iso2: 'it',\n dialCode: '+39',\n hasAreaCodes: false\n}, {\n name: 'Jamaica',\n regions: ['america', 'carribean'],\n iso2: 'jm',\n dialCode: '+1876',\n hasAreaCodes: false\n}, {\n name: 'Japan (日本)',\n regions: ['asia'],\n iso2: 'jp',\n dialCode: '+81',\n hasAreaCodes: false\n}, {\n name: 'Jordan (الأردن)',\n regions: ['middle-east'],\n iso2: 'jo',\n dialCode: '+962',\n hasAreaCodes: false\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7',\n hasAreaCodes: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7313',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7327',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+77172',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7312',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+773622',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7321',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7324',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7336',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7318',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7315',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7325',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7311',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7326',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kazakhstan (Казахстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kz',\n dialCode: '+7310',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Kenya',\n regions: ['africa'],\n iso2: 'ke',\n dialCode: '+254',\n hasAreaCodes: false\n}, {\n name: 'Kiribati',\n regions: ['oceania'],\n iso2: 'ki',\n dialCode: '+686',\n hasAreaCodes: false\n}, {\n name: 'Kuwait (الكويت)',\n regions: ['middle-east'],\n iso2: 'kw',\n dialCode: '+965',\n hasAreaCodes: false\n}, {\n name: 'Kyrgyzstan (Кыргызстан)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'kg',\n dialCode: '+996',\n hasAreaCodes: false\n}, {\n name: 'Laos (ລາວ)',\n regions: ['asia'],\n iso2: 'la',\n dialCode: '+856',\n hasAreaCodes: false\n}, {\n name: 'Latvia (Latvija)',\n regions: ['europe', 'european-union', 'ex-ussr'],\n iso2: 'lv',\n dialCode: '+371',\n hasAreaCodes: false\n}, {\n name: 'Lebanon (لبنان)',\n regions: ['middle-east'],\n iso2: 'lb',\n dialCode: '+961',\n hasAreaCodes: false\n}, {\n name: 'Lesotho',\n regions: ['africa'],\n iso2: 'ls',\n dialCode: '+266',\n hasAreaCodes: false\n}, {\n name: 'Liberia',\n regions: ['africa'],\n iso2: 'lr',\n dialCode: '+231',\n hasAreaCodes: false\n}, {\n name: 'Libya (ليبيا)',\n regions: ['africa', 'north-africa'],\n iso2: 'ly',\n dialCode: '+218',\n hasAreaCodes: false\n}, {\n name: 'Liechtenstein',\n regions: ['europe'],\n iso2: 'li',\n dialCode: '+423',\n hasAreaCodes: false\n}, {\n name: 'Lithuania (Lietuva)',\n regions: ['europe', 'european-union', 'ex-ussr'],\n iso2: 'lt',\n dialCode: '+370',\n hasAreaCodes: false\n}, {\n name: 'Luxembourg',\n regions: ['europe', 'european-union'],\n iso2: 'lu',\n dialCode: '+352',\n hasAreaCodes: false\n}, {\n name: 'Macau (澳門)',\n regions: ['asia'],\n iso2: 'mo',\n dialCode: '+853',\n hasAreaCodes: false\n}, {\n name: 'Macedonia (FYROM) (Македонија)',\n regions: ['europe'],\n iso2: 'mk',\n dialCode: '+389',\n hasAreaCodes: false\n}, {\n name: 'Madagascar (Madagasikara)',\n regions: ['africa'],\n iso2: 'mg',\n dialCode: '+261',\n hasAreaCodes: false\n}, {\n name: 'Malawi',\n regions: ['africa'],\n iso2: 'mw',\n dialCode: '+265',\n hasAreaCodes: false\n}, {\n name: 'Malaysia',\n regions: ['asia'],\n iso2: 'my',\n dialCode: '+60',\n hasAreaCodes: false\n}, {\n name: 'Maldives',\n regions: ['asia'],\n iso2: 'mv',\n dialCode: '+960',\n hasAreaCodes: false\n}, {\n name: 'Mali',\n regions: ['africa'],\n iso2: 'ml',\n dialCode: '+223',\n hasAreaCodes: false\n}, {\n name: 'Malta',\n regions: ['europe', 'european-union'],\n iso2: 'mt',\n dialCode: '+356',\n hasAreaCodes: false\n}, {\n name: 'Marshall Islands',\n regions: ['oceania'],\n iso2: 'mh',\n dialCode: '+692',\n hasAreaCodes: false\n}, {\n name: 'Martinique',\n regions: ['america', 'carribean'],\n iso2: 'mq',\n dialCode: '+596',\n hasAreaCodes: false\n}, {\n name: 'Mauritania (موريتانيا)',\n regions: ['africa'],\n iso2: 'mr',\n dialCode: '+222',\n hasAreaCodes: false\n}, {\n name: 'Mauritius (Moris)',\n regions: ['africa'],\n iso2: 'mu',\n dialCode: '+230',\n hasAreaCodes: false\n}, {\n name: 'Mexico (México)',\n regions: ['america', 'central-america'],\n iso2: 'mx',\n dialCode: '+52',\n hasAreaCodes: false\n}, {\n name: 'Micronesia',\n regions: ['oceania'],\n iso2: 'fm',\n dialCode: '+691',\n hasAreaCodes: false\n}, {\n name: 'Moldova (Republica Moldova)',\n regions: ['europe'],\n iso2: 'md',\n dialCode: '+373',\n hasAreaCodes: false\n}, {\n name: 'Monaco',\n regions: ['europe'],\n iso2: 'mc',\n dialCode: '+377',\n hasAreaCodes: false\n}, {\n name: 'Mongolia (Монгол)',\n regions: ['asia'],\n iso2: 'mn',\n dialCode: '+976',\n hasAreaCodes: false\n}, {\n name: 'Montenegro (Crna Gora)',\n regions: ['europe'],\n iso2: 'me',\n dialCode: '+382',\n hasAreaCodes: false\n}, {\n name: 'Montserrat',\n regions: ['america', 'carribean'],\n iso2: 'ms',\n dialCode: '+1664',\n hasAreaCodes: false\n}, {\n name: 'Morocco (المغرب)',\n regions: ['africa', 'north-africa'],\n iso2: 'ma',\n dialCode: '+212',\n hasAreaCodes: false\n}, {\n name: 'Mozambique (Moçambique)',\n regions: ['africa'],\n iso2: 'mz',\n dialCode: '+258',\n hasAreaCodes: false\n}, {\n name: 'Myanmar (Burma) (မြန်မာ)',\n regions: ['asia'],\n iso2: 'mm',\n dialCode: '+95',\n hasAreaCodes: false\n}, {\n name: 'Namibia (Namibië)',\n regions: ['africa'],\n iso2: 'na',\n dialCode: '+264',\n hasAreaCodes: false\n}, {\n name: 'Nauru',\n regions: ['africa'],\n iso2: 'nr',\n dialCode: '+674',\n hasAreaCodes: false\n}, {\n name: 'Nepal (नेपाल)',\n regions: ['asia'],\n iso2: 'np',\n dialCode: '+977',\n hasAreaCodes: false\n}, {\n name: 'Netherlands (Nederland)',\n regions: ['europe', 'european-union'],\n iso2: 'nl',\n dialCode: '+31',\n hasAreaCodes: false\n}, {\n name: 'New Caledonia (Nouvelle-Calédonie)',\n regions: ['oceania'],\n iso2: 'nc',\n dialCode: '+687',\n hasAreaCodes: false\n}, {\n name: 'New Zealand',\n regions: ['oceania'],\n iso2: 'nz',\n dialCode: '+64',\n hasAreaCodes: false\n}, {\n name: 'Nicaragua',\n regions: ['america', 'central-america'],\n iso2: 'ni',\n dialCode: '+505',\n hasAreaCodes: false\n}, {\n name: 'Niger (Nijar)',\n regions: ['africa'],\n iso2: 'ne',\n dialCode: '+227',\n hasAreaCodes: false\n}, {\n name: 'Nigeria',\n regions: ['africa'],\n iso2: 'ng',\n dialCode: '+234',\n hasAreaCodes: false\n}, {\n name: 'Niue',\n regions: ['asia'],\n iso2: 'nu',\n dialCode: '+683',\n hasAreaCodes: false\n}, {\n name: 'Norfolk Island',\n regions: ['oceania'],\n iso2: 'nf',\n dialCode: '+672',\n hasAreaCodes: false\n}, {\n name: 'North Korea (조선 민주주의 인민 공화국)',\n regions: ['asia'],\n iso2: 'kp',\n dialCode: '+850',\n hasAreaCodes: false\n}, {\n name: 'Northern Mariana Islands',\n regions: ['oceania'],\n iso2: 'mp',\n dialCode: '+1670',\n hasAreaCodes: false\n}, {\n name: 'Norway (Norge)',\n regions: ['europe'],\n iso2: 'no',\n dialCode: '+47',\n hasAreaCodes: false\n}, {\n name: 'Oman (عُمان)',\n regions: ['middle-east'],\n iso2: 'om',\n dialCode: '+968',\n hasAreaCodes: false\n}, {\n name: 'Pakistan (پاکستان)',\n regions: ['asia'],\n iso2: 'pk',\n dialCode: '+92',\n hasAreaCodes: false\n}, {\n name: 'Palau',\n regions: ['oceania'],\n iso2: 'pw',\n dialCode: '+680',\n hasAreaCodes: false\n}, {\n name: 'Palestine (فلسطين)',\n regions: ['middle-east'],\n iso2: 'ps',\n dialCode: '+970',\n hasAreaCodes: false\n}, {\n name: 'Panama (Panamá)',\n regions: ['america', 'central-america'],\n iso2: 'pa',\n dialCode: '+507',\n hasAreaCodes: false\n}, {\n name: 'Papua New Guinea',\n regions: ['oceania'],\n iso2: 'pg',\n dialCode: '+675',\n hasAreaCodes: false\n}, {\n name: 'Paraguay',\n regions: ['america', 'south-america'],\n iso2: 'py',\n dialCode: '+595',\n hasAreaCodes: false\n}, {\n name: 'Peru (Perú)',\n regions: ['america', 'south-america'],\n iso2: 'pe',\n dialCode: '+51',\n hasAreaCodes: false\n}, {\n name: 'Philippines',\n regions: ['asia'],\n iso2: 'ph',\n dialCode: '+63',\n hasAreaCodes: false\n}, {\n name: 'Poland (Polska)',\n regions: ['europe', 'european-union'],\n iso2: 'pl',\n dialCode: '+48',\n hasAreaCodes: false\n}, {\n name: 'Portugal',\n regions: ['europe', 'european-union'],\n iso2: 'pt',\n dialCode: '+351',\n hasAreaCodes: false\n}, {\n name: 'Puerto Rico',\n regions: ['america', 'carribean'],\n iso2: 'pr',\n dialCode: '+1',\n hasAreaCodes: true\n}, {\n name: 'Puerto Rico',\n regions: ['america', 'carribean'],\n iso2: 'pr',\n dialCode: '+1787',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Puerto Rico',\n regions: ['america', 'carribean'],\n iso2: 'pr',\n dialCode: '+1939',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Qatar (قطر)',\n regions: ['middle-east'],\n iso2: 'qa',\n dialCode: '+974',\n hasAreaCodes: false\n}, {\n name: 'Réunion (La Réunion)',\n regions: ['africa'],\n iso2: 're',\n dialCode: '+262',\n hasAreaCodes: false\n}, {\n name: 'Romania (România)',\n regions: ['europe', 'european-union'],\n iso2: 'ro',\n dialCode: '+40',\n hasAreaCodes: false\n}, {\n name: 'Russia (Россия)',\n regions: ['europe', 'asia', 'ex-ussr'],\n iso2: 'ru',\n dialCode: '+7',\n hasAreaCodes: false\n}, {\n name: 'Rwanda',\n regions: ['africa'],\n iso2: 'rw',\n dialCode: '+250',\n hasAreaCodes: false\n}, {\n name: 'Saint Barthélemy (Saint-Barthélemy)',\n regions: ['america', 'carribean'],\n iso2: 'bl',\n dialCode: '+590',\n hasAreaCodes: false\n}, {\n name: 'Saint Helena',\n regions: ['africa'],\n iso2: 'sh',\n dialCode: '+290',\n hasAreaCodes: false\n}, {\n name: 'Saint Kitts and Nevis',\n regions: ['america', 'carribean'],\n iso2: 'kn',\n dialCode: '+1869',\n hasAreaCodes: false\n}, {\n name: 'Saint Lucia',\n regions: ['america', 'carribean'],\n iso2: 'lc',\n dialCode: '+1758',\n hasAreaCodes: false\n}, {\n name: 'Saint Martin (Saint-Martin (partie française))',\n regions: ['america', 'carribean'],\n iso2: 'mf',\n dialCode: '+590',\n hasAreaCodes: false\n}, {\n name: 'Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)',\n regions: ['america', 'north-america'],\n iso2: 'pm',\n dialCode: '+508',\n hasAreaCodes: false\n}, {\n name: 'Saint Vincent and the Grenadines',\n regions: ['america', 'carribean'],\n iso2: 'vc',\n dialCode: '+1784',\n hasAreaCodes: false\n}, {\n name: 'Samoa',\n regions: ['oceania'],\n iso2: 'ws',\n dialCode: '+685',\n hasAreaCodes: false\n}, {\n name: 'San Marino',\n regions: ['europe'],\n iso2: 'sm',\n dialCode: '+378',\n hasAreaCodes: false\n}, {\n name: 'São Tomé and Príncipe (São Tomé e Príncipe)',\n regions: ['africa'],\n iso2: 'st',\n dialCode: '+239',\n hasAreaCodes: false\n}, {\n name: 'Saudi Arabia (المملكة العربية السعودية)',\n regions: ['middle-east'],\n iso2: 'sa',\n dialCode: '+966',\n hasAreaCodes: false\n}, {\n name: 'Senegal (Sénégal)',\n regions: ['africa'],\n iso2: 'sn',\n dialCode: '+221',\n hasAreaCodes: false\n}, {\n name: 'Serbia (Србија)',\n regions: ['europe'],\n iso2: 'rs',\n dialCode: '+381',\n hasAreaCodes: false\n}, {\n name: 'Seychelles',\n regions: ['africa'],\n iso2: 'sc',\n dialCode: '+248',\n hasAreaCodes: false\n}, {\n name: 'Sierra Leone',\n regions: ['africa'],\n iso2: 'sl',\n dialCode: '+232',\n hasAreaCodes: false\n}, {\n name: 'Singapore',\n regions: ['asia'],\n iso2: 'sg',\n dialCode: '+65',\n hasAreaCodes: false\n}, {\n name: 'Sint Maarten',\n regions: ['america', 'carribean'],\n iso2: 'sx',\n dialCode: '+1721',\n hasAreaCodes: false\n}, {\n name: 'Slovakia (Slovensko)',\n regions: ['europe', 'european-union'],\n iso2: 'sk',\n dialCode: '+421',\n hasAreaCodes: false\n}, {\n name: 'Slovenia (Slovenija)',\n regions: ['europe', 'european-union'],\n iso2: 'si',\n dialCode: '+386',\n hasAreaCodes: false\n}, {\n name: 'Solomon Islands',\n regions: ['oceania'],\n iso2: 'sb',\n dialCode: '+677',\n hasAreaCodes: false\n}, {\n name: 'Somalia (Soomaaliya)',\n regions: ['africa'],\n iso2: 'so',\n dialCode: '+252',\n hasAreaCodes: false\n}, {\n name: 'South Africa',\n regions: ['africa'],\n iso2: 'za',\n dialCode: '+27',\n hasAreaCodes: false\n}, {\n name: 'South Korea (대한민국)',\n regions: ['asia'],\n iso2: 'kr',\n dialCode: '+82',\n hasAreaCodes: false\n}, {\n name: 'South Sudan (جنوب السودان)',\n regions: ['africa', 'north-africa'],\n iso2: 'ss',\n dialCode: '+211',\n hasAreaCodes: false\n}, {\n name: 'Spain (España)',\n regions: ['europe', 'european-union'],\n iso2: 'es',\n dialCode: '+34',\n hasAreaCodes: false\n}, {\n name: 'Sri Lanka (ශ්රී ලංකාව)',\n regions: ['asia'],\n iso2: 'lk',\n dialCode: '+94',\n hasAreaCodes: false\n}, {\n name: 'Sudan (السودان)',\n regions: ['africa'],\n iso2: 'sd',\n dialCode: '+249',\n hasAreaCodes: false\n}, {\n name: 'Suriname',\n regions: ['america', 'south-america'],\n iso2: 'sr',\n dialCode: '+597',\n hasAreaCodes: false\n}, {\n name: 'Swaziland',\n regions: ['africa'],\n iso2: 'sz',\n dialCode: '+268',\n hasAreaCodes: false\n}, {\n name: 'Sweden (Sverige)',\n regions: ['europe', 'european-union'],\n iso2: 'se',\n dialCode: '+46',\n hasAreaCodes: false\n}, {\n name: 'Switzerland (Schweiz)',\n regions: ['europe'],\n iso2: 'ch',\n dialCode: '+41',\n hasAreaCodes: false\n}, {\n name: 'Syria (سوريا)',\n regions: ['middle-east'],\n iso2: 'sy',\n dialCode: '+963',\n hasAreaCodes: false\n}, {\n name: 'Taiwan (台灣)',\n regions: ['asia'],\n iso2: 'tw',\n dialCode: '+886',\n hasAreaCodes: false\n}, {\n name: 'Tajikistan',\n regions: ['asia', 'ex-ussr'],\n iso2: 'tj',\n dialCode: '+992',\n hasAreaCodes: false\n}, {\n name: 'Tanzania',\n regions: ['africa'],\n iso2: 'tz',\n dialCode: '+255',\n hasAreaCodes: false\n}, {\n name: 'Thailand (ไทย)',\n regions: ['asia'],\n iso2: 'th',\n dialCode: '+66',\n hasAreaCodes: false\n}, {\n name: 'Timor-Leste',\n regions: ['asia'],\n iso2: 'tl',\n dialCode: '+670',\n hasAreaCodes: false\n}, {\n name: 'Togo',\n regions: ['africa'],\n iso2: 'tg',\n dialCode: '+228',\n hasAreaCodes: false\n}, {\n name: 'Tokelau',\n regions: ['oceania'],\n iso2: 'tk',\n dialCode: '+690',\n hasAreaCodes: false\n}, {\n name: 'Tonga',\n regions: ['oceania'],\n iso2: 'to',\n dialCode: '+676',\n hasAreaCodes: false\n}, {\n name: 'Trinidad and Tobago',\n regions: ['america', 'carribean'],\n iso2: 'tt',\n dialCode: '+1868',\n hasAreaCodes: false\n}, {\n name: 'Tunisia (تونس)',\n regions: ['africa', 'north-africa'],\n iso2: 'tn',\n dialCode: '+216',\n hasAreaCodes: false\n}, {\n name: 'Turkey (Türkiye)',\n regions: ['europe'],\n iso2: 'tr',\n dialCode: '+90',\n hasAreaCodes: false\n}, {\n name: 'Turkmenistan',\n regions: ['asia', 'ex-ussr'],\n iso2: 'tm',\n dialCode: '+993',\n hasAreaCodes: false\n}, {\n name: 'Turks and Caicos Islands',\n regions: ['america', 'carribean'],\n iso2: 'tc',\n dialCode: '+1649',\n hasAreaCodes: false\n}, {\n name: 'Tuvalu',\n regions: ['asia'],\n iso2: 'tv',\n dialCode: '+688',\n hasAreaCodes: false\n}, {\n name: 'U.S. Virgin Islands',\n regions: ['america', 'carribean'],\n iso2: 'vi',\n dialCode: '+1340',\n hasAreaCodes: false\n}, {\n name: 'Uganda',\n regions: ['africa'],\n iso2: 'ug',\n dialCode: '+256',\n hasAreaCodes: false\n}, {\n name: 'Ukraine',\n regions: ['europe', 'ex-ussr'],\n iso2: 'ua',\n dialCode: '+380',\n hasAreaCodes: false\n}, {\n name: 'United Arab Emirates (الإمارات العربية المتحدة)',\n regions: ['middle-east'],\n iso2: 'ae',\n dialCode: '+971',\n hasAreaCodes: false\n}, {\n name: 'United Kingdom',\n regions: ['europe', 'european-union'],\n iso2: 'gb',\n dialCode: '+44',\n hasAreaCodes: false\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1',\n hasAreaCodes: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1907',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1205',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1251',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1256',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1334',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1479',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1501',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1870',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1480',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1520',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1602',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1623',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1928',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1209',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1213',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1310',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1323',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1408',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1415',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1510',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1530',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1559',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1562',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1619',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1626',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1650',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1661',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1707',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1714',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1760',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1805',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1818',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1831',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1858',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1909',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1916',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1925',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1949',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1951',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1303',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1719',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1970',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1203',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1860',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1202',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1302',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1239',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1305',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1321',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1352',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1386',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1407',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1561',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1727',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1772',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1813',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1850',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1863',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1904',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1941',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1954',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1229',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1404',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1478',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1706',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1770',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1912',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1808',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1319',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1515',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1563',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1641',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1712',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1208',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1217',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1309',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1312',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1618',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1630',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1708',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1773',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1815',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1847',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1219',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1260',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1317',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1574',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1765',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1812',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1316',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1620',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1785',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1913',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1270',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1502',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1606',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1859',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1225',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1318',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1337',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1504',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1985',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1413',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1508',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1617',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1781',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1978',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1301',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1410',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1207',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1231',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1248',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1269',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1313',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1517',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1586',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1616',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1734',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1810',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1906',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1989',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1218',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1320',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1507',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1612',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1651',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1763',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1952',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1314',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1417',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1573',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1636',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1660',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1816',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1228',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1601',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1662',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1406',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1252',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1336',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1704',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1828',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1910',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1919',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1701',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1308',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1402',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1603',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1201',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1609',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1732',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1856',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1908',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1973',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1505',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1575',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1702',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1775',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1212',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1315',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1516',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1518',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1585',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1607',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1631',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1716',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1718',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1845',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1914',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1216',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1330',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1419',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1440',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1513',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1614',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1740',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1937',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1405',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1580',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1918',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1503',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1541',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1215',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1412',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1570',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1610',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1717',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1724',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1814',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1401',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1803',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1843',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1864',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1605',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1423',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1615',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1731',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1865',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1901',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1931',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1210',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1214',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1254',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1281',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1325',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1361',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1409',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1432',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1512',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1713',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1806',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1817',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1830',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1903',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1915',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1936',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1940',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1956',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1972',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1979',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1435',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1801',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1276',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1434',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1540',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1703',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1757',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1804',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1802',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1206',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1253',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1360',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1425',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1509',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1262',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1414',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1608',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1715',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1920',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1304',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'United States',\n regions: ['america', 'north-america'],\n iso2: 'us',\n dialCode: '+1307',\n hasAreaCodes: true,\n isAreaCode: true\n}, {\n name: 'Uruguay',\n regions: ['america', 'south-america'],\n iso2: 'uy',\n dialCode: '+598',\n hasAreaCodes: false\n}, {\n name: 'Uzbekistan (Oʻzbekiston)',\n regions: ['asia', 'ex-ussr'],\n iso2: 'uz',\n dialCode: '+998',\n hasAreaCodes: false\n}, {\n name: 'Vanuatu',\n regions: ['oceania'],\n iso2: 'vu',\n dialCode: '+678',\n hasAreaCodes: false\n}, {\n name: 'Vatican City (Città del Vaticano)',\n regions: ['europe'],\n iso2: 'va',\n dialCode: '+39',\n hasAreaCodes: false\n}, {\n name: 'Venezuela',\n regions: ['america', 'south-america'],\n iso2: 've',\n dialCode: '+58',\n hasAreaCodes: false\n}, {\n name: 'Vietnam (Việt Nam)',\n regions: ['asia'],\n iso2: 'vn',\n dialCode: '+84',\n hasAreaCodes: false\n}, {\n name: 'Wallis and Futuna',\n regions: ['oceania'],\n iso2: 'wf',\n dialCode: '+681',\n hasAreaCodes: false\n}, {\n name: 'Yemen (اليمن)',\n regions: ['middle-east'],\n iso2: 'ye',\n dialCode: '+967',\n hasAreaCodes: false\n}, {\n name: 'Zambia',\n regions: ['africa'],\n iso2: 'zm',\n dialCode: '+260',\n hasAreaCodes: false\n}, {\n name: 'Zimbabwe',\n regions: ['africa'],\n iso2: 'zw',\n dialCode: '+263',\n hasAreaCodes: false\n}];\n\nvar findCountryBy = function findCountryBy(identifyer, item) {\n return allCountries.find(function (country) {\n return country[identifyer] === item;\n });\n};\nvar getCountry = function getCountry(phoneNumber) {\n var tel = phoneNumber.startsWith('+') ? phoneNumber.slice(1, 6) : phoneNumber.slice(0, 5);\n return allCountries.find(function (country) {\n return country.dialCode.startsWith(\"+\".concat(tel.replace(' ', '')));\n });\n};\nvar getCountriesByRegions = function getCountriesByRegions(regions) {\n if (typeof regions === 'string') {\n return allCountries.filter(function (country) {\n return country.regions.includes(regions.toLowerCase());\n });\n }\n\n return allCountries.filter(function (country) {\n return regions.map(function (region) {\n return country.regions.includes(region.toLowerCase());\n }).some(function (el) {\n return el;\n });\n });\n};\nvar getPreferredCountries = function getPreferredCountries(preferredCountries) {\n return preferredCountries.map(function (prefCountry) {\n return findCountryBy('iso2', prefCountry.toLowerCase());\n });\n};\nvar getInitialCountry = function getInitialCountry(defaultCountry, preferredCountries, regions) {\n return defaultCountry ? findCountryBy('iso2', defaultCountry.toLowerCase()) : preferredCountries.length ? findCountryBy('iso2', preferredCountries[0].toLowerCase()) : regions ? getCountriesByRegions(regions)[0] : findCountryBy('iso2', 'intl');\n};\nvar getCountryList = function getCountryList(preferredCountries, regions) {\n return preferredCountries.length ? getPreferredCountries(preferredCountries) : regions ? getCountriesByRegions(regions) : allCountries;\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css = \".react-phonenr-input{display:flex;max-width:320px;position:relative}.react-phonenr-input button,.react-phonenr-input input{appearance:none;-moz-appearance:none;-webkit-appearance:none;box-sizing:border-box;border:1px solid #ccc;outline:none;border-radius:0;height:1.8rem}.react-phonenr-input .flag-wrapper{position:relative;display:flex;align-content:center;justify-content:center;align-items:center;padding-right:7px;padding-left:2px;width:30px;border:1px solid #ccc;border-right:none;background-color:#ddd}.react-phonenr-input .flag-wrapper img{width:20px;position:absolute;top:50%;transform:translateY(-50%);z-index:5}.react-phonenr-input .flag-wrapper select{position:absolute;appearance:none;-moz-appearance:none;-webkit-appearance:none;width:100%;height:100%;padding:0;margin:0;border:none;border-radius:0;opacity:0;z-index:10}.react-phonenr-input .flag-wrapper:after{content:\\\"\\\";width:0;height:0;border:2.8px solid transparent;border-top-color:#000;position:absolute;right:2px;top:50%;transform:translateY(-50%);pointer-events:none}.react-phonenr-input input{width:280px;font-size:inherit;padding:0 5px}.react-phonenr-input ul{box-sizing:border-box;width:100%;max-height:290px;position:absolute;top:35px;border:1px solid #ccc;list-style:none;margin:0;overflow-y:auto;padding:0;background-color:#fff;z-index:999}.react-phonenr-input ul li{position:relative;display:flex;align-items:center;align-content:space-between;font-size:1rem;padding:3px .5rem 3px 35px}.react-phonenr-input ul li.active-country,.react-phonenr-input ul li:hover{background-color:#ddd;color:currentColor;cursor:pointer}.react-phonenr-input ul li span{position:absolute!important;top:50%!important;left:3px!important;transform:translateY(-50%)!important;margin:0 5px}.react-phonenr-input ul::-webkit-scrollbar{width:3px}.react-phonenr-input ul::-webkit-scrollbar-track{background:#f1f1f1;box-shadow:inset 0 0 5px #ccc}.react-phonenr-input ul::-webkit-scrollbar-thumb{background:#888}.react-phonenr-input ul::-webkit-scrollbar-thumb:hover{background:#555}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9QaG9uZUlucHV0L3N0eWxlcy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUNFLFlBQWEsQ0FDYixlQUFnQixDQUNoQixpQkFBa0IsQ0FIcEIsdURBTUksZUFBZ0IsQ0FDaEIsb0JBQXFCLENBQ3JCLHVCQUF3QixDQUN4QixxQkFBc0IsQ0FDdEIscUJBQXNCLENBQ3RCLFlBQWEsQ0FDYixlQUFrQixDQUNsQixhQUF3QixDQWI1QixtQ0FnQkksaUJBQWtCLENBQ2xCLFlBQWEsQ0FDYixvQkFBcUIsQ0FDckIsc0JBQXVCLENBQ3ZCLGtCQUFtQixDQUNuQixpQkFBa0IsQ0FDbEIsZ0JBQWlCLENBQ2pCLFVBQVcsQ0FFWCxxQkFBa0IsQ0FBbEIsaUJBQWtCLENBQ2xCLHFCQUFzQixDQTFCMUIsdUNBNEJNLFVBQVcsQ0FDWCxpQkFBa0IsQ0FDbEIsT0FBUSxDQUNSLDBCQUEyQixDQUMzQixTQUFVLENBaENoQiwwQ0FtQ00saUJBQWtCLENBQ2xCLGVBQWdCLENBQ2hCLG9CQUFxQixDQUNyQix1QkFBd0IsQ0FDeEIsVUFBVyxDQUNYLFdBQVksQ0FDWixTQUFVLENBQ1YsUUFBUyxDQUNULFdBQVksQ0FDWixlQUFrQixDQUNsQixTQUFVLENBQ1YsVUFBVyxDQTlDakIseUNBaURNLFVBQVcsQ0FDWCxPQUFRLENBQ1IsUUFBUyxDQUVULDhCQUFzRCxDQUF0RCxxQkFBc0QsQ0FDdEQsaUJBQWtCLENBQ2xCLFNBQVUsQ0FDVixPQUFRLENBQ1IsMEJBQTJCLENBQzNCLG1CQUFvQixDQTFEMUIsMkJBOERJLFdBQVksQ0FDWixpQkFBa0IsQ0FDbEIsYUFBZ0IsQ0FoRXBCLHdCQW1FSSxxQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLGdCQUFpQixDQUNqQixpQkFBa0IsQ0FDbEIsUUFBUyxDQUNULHFCQUFzQixDQUN0QixlQUFnQixDQUNoQixRQUFTLENBQ1QsZUFBZ0IsQ0FDaEIsU0FBVSxDQUNWLHFCQUFzQixDQUN0QixXQXNDcUIsQ0FwSHpCLDJCQWdGTSxpQkFBa0IsQ0FDbEIsWUFBYSxDQUNiLGtCQUFtQixDQUNuQiwyQkFBNEIsQ0FDNUIsY0FBZSxDQUNmLDBCQUE0QixDQXJGbEMsMkVBd0ZRLHFCQUFzQixDQUN0QixrQkFBbUIsQ0FDbkIsY0FBZSxDQTFGdkIsZ0NBNkZRLDJCQUE2QixDQUM3QixpQkFBbUIsQ0FDbkIsa0JBQW9CLENBQ3BCLG9DQUFzQyxDQUN0QyxZQUFlLENBakd2QiwyQ0FzR00sU0FBVSxDQXRHaEIsaURBMkdNLGtCQUFtQixDQUNuQiw2QkFBOEIsQ0E1R3BDLGlEQWlITSxlQUFnQixDQWpIdEIsdURBc0hNLGVBQWdCIiwiZmlsZSI6InN0eWxlcy5zY3NzIn0= */\";\nstyleInject(css);\n\nvar PhoneInput =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(PhoneInput, _Component);\n\n function PhoneInput(props) {\n var _this;\n\n _classCallCheck(this, PhoneInput);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PhoneInput).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"handleSelect\", function (code) {\n return function (e) {\n var country = findCountryBy('iso2', code || e.target.value);\n\n _this.setState({\n country: country,\n phoneNumber: country.dialCode,\n showCountries: false\n }, function () {\n return _this.props.onChange(_this.state.phoneNumber);\n });\n\n _this.phoneInput.current.focus();\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"scrollToCountry\", function () {\n var _this$state = _this.state,\n showCountries = _this$state.showCountries,\n iso2 = _this$state.country.iso2;\n\n if (showCountries && iso2 !== 'intl') {\n _this.countryList.current.scrollTop = _this.activeCountry.current.offsetTop - 50;\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"toggleList\", function () {\n _this.setState(function (prevState) {\n return {\n showCountries: !prevState.showCountries\n };\n }, function () {\n return _this.scrollToCountry();\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"formatNumber\", function (number) {\n var format = _this.props.format;\n var iso2 = _this.state.country.iso2;\n var phoneNumber = number;\n\n if (format === 'INTERNATIONAL') {\n if (!phoneNumber.startsWith('+')) {\n phoneNumber = \"+\".concat(phoneNumber);\n }\n\n if (phoneNumber.startsWith('+00')) {\n phoneNumber = phoneNumber.replace('00', '');\n }\n }\n\n var parsedPhoneNumber = parsePhoneNumberFromString$2(phoneNumber, iso2.toUpperCase());\n\n try {\n phoneNumber = parsedPhoneNumber.format(format);\n } catch (e) {\n phoneNumber = phoneNumber.replace(/\\(+-()\\)/g, '');\n }\n\n return phoneNumber;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (e) {\n var value = e.target.value;\n var _this$props = _this.props,\n defaultCountry = _this$props.defaultCountry,\n preferredCountries = _this$props.preferredCountries,\n regions = _this$props.regions,\n format = _this$props.format,\n onChange = _this$props.onChange;\n\n if (!value.length) {\n _this.setState({\n country: getInitialCountry(defaultCountry, preferredCountries, regions),\n phoneNumber: ''\n }, function () {\n return onChange(_this.state.phoneNumber);\n });\n\n return;\n }\n\n if (!/^[\\d ()+-]+$/.test(value)) return;\n\n _this.setState(function (prevState) {\n return {\n country: format === 'INTERNATIONAL' && getCountry(value) || prevState.country,\n phoneNumber: _this.formatNumber(value)\n };\n }, function () {\n _this.scrollToCountry();\n\n onChange(_this.state.phoneNumber);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"handleFlag\", function (iso2) {\n return iso2 === 'intl' ? React.createElement(\"img\", {\n src: globe,\n alt: \"globe\"\n }) : React.createElement(ReactCountryFlag, {\n code: iso2 || '',\n styleProps: _objectSpread({\n display: 'block',\n position: 'absolute',\n width: '20px',\n height: '15px',\n backgroundPosition: 'center center',\n zIndex: 7\n }, _this.props.buttonFlagStyles),\n svg: true\n });\n });\n\n var _defaultCountry = props.defaultCountry,\n _preferredCountries = props.preferredCountries,\n _regions = props.regions,\n _format = props.format;\n _this.state = {\n country: getInitialCountry(_defaultCountry, _preferredCountries, _regions),\n phoneNumber: _format === 'INTERNATIONAL' ? getInitialCountry(_defaultCountry, _preferredCountries, _regions).dialCode : '',\n showCountries: false\n };\n _this.phoneInput = createRef();\n _this.countryList = createRef();\n _this.activeCountry = createRef();\n return _this;\n }\n\n _createClass(PhoneInput, [{\n key: \"handleClickOutside\",\n value: function handleClickOutside() {\n this.setState({\n showCountries: false\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state2 = this.state,\n iso2 = _this$state2.country.iso2,\n phoneNumber = _this$state2.phoneNumber,\n showCountries = _this$state2.showCountries;\n var _this$props2 = this.props,\n placeholder = _this$props2.placeholder,\n disabled = _this$props2.disabled,\n preferredCountries = _this$props2.preferredCountries,\n regions = _this$props2.regions,\n format = _this$props2.format,\n className = _this$props2.className,\n listFlagStyles = _this$props2.listFlagStyles;\n var passableProps = lodash_omit(this.props, ['className', 'format', 'regions', 'defaultCountry', 'preferredCountries', 'buttonFlagStyles', 'listFlagStyles']);\n var isMobile = detectMobile.any();\n var toggleList = !isMobile ? this.toggleList : undefined;\n return React.createElement(\"div\", {\n className: \"react-phonenr-input \".concat(className)\n }, format === 'INTERNATIONAL' && React.createElement(\"div\", {\n onClick: toggleList,\n className: \"flag-wrapper\",\n role: \"none\"\n }, this.handleFlag(iso2), isMobile && React.createElement(\"select\", {\n onChange: this.handleSelect(),\n disabled: disabled\n }, getCountryList(preferredCountries, regions).map(function (c) {\n if (c.isAreaCode) {\n return null;\n }\n\n return React.createElement(\"option\", {\n key: c.iso2,\n value: c.iso2\n }, c.name);\n }))), React.createElement(\"input\", _extends({}, passableProps, {\n type: \"tel\",\n value: phoneNumber,\n onChange: this.handleChange,\n placeholder: placeholder,\n disabled: disabled,\n ref: this.phoneInput,\n maxLength: \"21\"\n })), showCountries && format === 'INTERNATIONAL' && !isMobile && React.createElement(\"ul\", {\n className: \"country-list\",\n ref: this.countryList\n }, getCountryList(preferredCountries, regions).map(function (c) {\n if (c.isAreaCode) {\n return null;\n }\n\n return React.createElement(\"li\", {\n key: c.iso2,\n onClick: _this2.handleSelect(c.iso2),\n onKeyPress: _this2.handleSelect(c.iso2),\n className: classnames('country-list-item', {\n 'active-country': c.iso2 === iso2\n }),\n ref: c.iso2 === iso2 ? _this2.activeCountry : null\n }, React.createElement(ReactCountryFlag, {\n styleProps: _objectSpread({\n width: '20px'\n }, listFlagStyles),\n code: c.iso2,\n svg: true\n }), \" \".concat(c.name));\n })));\n }\n }]);\n\n return PhoneInput;\n}(Component);\n\n_defineProperty(PhoneInput, \"defaultProps\", {\n defaultCountry: null,\n preferredCountries: [],\n regions: null,\n format: 'INTERNATIONAL',\n placeholder: '+1 702 123 4567',\n className: null,\n disabled: false,\n buttonFlagStyles: null,\n listFlagStyles: null\n});\n\nvar PhoneInput$1 = dist(PhoneInput);\n\nexport { PhoneInput$1 as PhoneInput };\n//# sourceMappingURL=index.js.map\n","import React from 'react'\nimport PropTypes from 'prop-types'\nimport { PhoneInput as PhoneNrInput } from 'react-phonenr-input'\nimport useLabel from '../useLabel'\nimport './styles.scss'\n\nexport const PhoneInput = ({\n formik,\n id,\n name,\n placeholder,\n disabled,\n hint,\n required,\n format,\n defaultCountry,\n preferredCountries,\n regions,\n buttonFlagStyles,\n listFlagStyles,\n ...rest\n}) => {\n const { setFieldValue, setFieldTouched } = formik\n\n const handleChange = phoneNr => {\n setFieldValue(name, phoneNr)\n setFieldTouched(name, true)\n }\n\n return (\n <PhoneNrInput\n {...rest}\n id={id || name}\n name={name}\n onChange={handleChange}\n placeholder={placeholder}\n disabled={disabled}\n hint={hint}\n required={required}\n format={format}\n defaultCountry={defaultCountry}\n preferredCountries={preferredCountries}\n regions={regions}\n buttonFlagStyles={buttonFlagStyles}\n listFlagStyles={listFlagStyles}\n />\n )\n}\n\nPhoneInput.propTypes = {\n /** @ignore */\n formik: PropTypes.instanceOf(Object).isRequired,\n /** Adds a custom class to the Input wrapper div */\n className: PropTypes.string,\n /** Adds a custom inline styles to the Input wrapper div */\n style: PropTypes.instanceOf(Object),\n /** Sets an Id for the Input Field, if not passed, the id will be the name */\n id: PropTypes.string,\n /** Sets the Name of the Input Field */\n name: PropTypes.string.isRequired,\n /** Sets the main Label for the Input Field */\n label: PropTypes.string,\n /** Sets the Placeholder text */\n placeholder: PropTypes.string,\n /** Sets the default country */\n defaultCountry: PropTypes.string,\n /** Lets you restrict the country dropdown to a specific list of countries */\n preferredCountries: PropTypes.arrayOf(PropTypes.string),\n /** Lets you restrict the country dropdown to a list of countries in the specified regions */\n regions: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n /** Sets the format of the entered phone number, in case of 'NATIONAL' the defaultCountry must be set */\n format: PropTypes.oneOf(['INTERNATIONAL', 'NATIONAL']),\n /** Style object that overrides the styles of the Flag shown in the button */\n buttonFlagStyles: PropTypes.instanceOf(Object),\n /** Style object that overrides the styles of the Flag shown in the country dropdown */\n listFlagStyles: PropTypes.instanceOf(Object),\n /** Disables the Input Field */\n disabled: PropTypes.bool,\n /** Sets a hint text after/below the Input Field */\n hint: PropTypes.string,\n /** Sets the field as requierd, if label is passed, an * is added to the end of the main label. Validation will only work if you pass the required() method in the yup validation schema */\n required: PropTypes.bool,\n}\n\nPhoneInput.defaultProps = {\n className: null,\n style: null,\n id: null,\n label: null,\n placeholder: null,\n defaultCountry: null,\n preferredCountries: [],\n regions: null,\n format: 'INTERNATIONAL',\n buttonFlagStyles: null,\n listFlagStyles: null,\n disabled: false,\n hint: null,\n required: false,\n}\n\nexport default useLabel('phoneInput')(PhoneInput)\n"],"names":["require$$0","require$$1","ReactPropTypesSecret","has","printWarning","ReactIs","assign","checkPropTypes","require$$2","useAutocomplete","setFieldValue","setFieldTouched","name","suggestions","useState","activeSuggestion","setActiveSuggestion","filteredSuggestions","setFilteredSuggestions","showSuggestions","setShowSuggestions","handleChange","e","value","currentTarget","filter","suggestion","toLowerCase","startsWith","handleClick","innerText","handleKeyDown","keyCode","preventDefault","length","global","hasOwnProperty","Symbol","Map","InfoMsg","hintMsg","errorMsg","React","cx","hint","error","defaultProps","useLabel","component","WrappedComponent","props","hideLabel","setHide","handleAutoFill","animationName","handleFocus","handleBlur","formik","touched","errors","values","label","className","placeholder","type","disabled","required","style","format","getIn","touch","hide","hidden","moveLabel","passableProps","omit","hasError","isDisabled","connect","Autocomplete","id","rest","map","index","sugetionItem","Form","children","themed","structured","handleSubmit","Button","onClick","Checkbox","text","_objectWithoutProperties","_objectWithoutPropertiesLoose","_inheritsLoose","isFunction","defineProperty","_extends","emptyFunction","_react","_propTypes","_gud","_warning","_implementation","_defineProperty","_assertThisInitialized","React.createElement","React.Component","PopperJS","placements","Popper","warning","classCallCheck","createClass","PropTypes","onClickOutside","toDate","useDatepicker","handleChangeRaw","target","validChars","test","isValid","Date","date","dateInstance","Datepicker","dateFormat","onFocus","onBlur","DatePickerCmp","tslib_1.__awaiter","tslib_1.__generator","tslib_1.__spread","DropZone","accept","zoneActiveText","fileInfo","disabledText","onDrop","acceptedFiles","concat","getRootProps","getInputProps","isDragActive","rejectedFiles","file","includes","URL","createObjectURL","split","pop","shift","Radio","options","inline","option","Input","onAnimationStart","Select","SubmitBtn","Textarea","Toggle","_classCallCheck","_createClass","_inherits","_possibleConstructorReturn","commonjsGlobal","unwrapExports","createCommonjsModule","reactIs_production_min","reactIs_production_min_1","reactIs_production_min_2","reactIs_production_min_3","reactIs_production_min_4","reactIs_production_min_5","reactIs_production_min_6","reactIs_production_min_7","reactIs_production_min_8","reactIs_production_min_9","reactIs_production_min_10","reactIs_production_min_11","reactIs_production_min_12","reactIs_production_min_13","reactIs_production_min_14","reactIs_production_min_15","reactIs_production_min_16","reactIs_production_min_17","reactIs_production_min_18","reactIs_production_min_19","reactIs_production_min_20","reactIs_production_min_21","reactIs_production_min_22","reactIs_production_min_23","reactIs_production_min_24","reactIs_production_min_25","reactIs_production_min_26","reactIs_production_min_27","reactIs_production_min_28","reactIs_development","reactIs_development_1","reactIs_development_2","reactIs_development_3","reactIs_development_4","reactIs_development_5","reactIs_development_6","reactIs_development_7","reactIs_development_8","reactIs_development_9","reactIs_development_10","reactIs_development_11","reactIs_development_12","reactIs_development_13","reactIs_development_14","reactIs_development_15","reactIs_development_16","reactIs_development_17","reactIs_development_18","reactIs_development_19","reactIs_development_20","reactIs_development_21","reactIs_development_22","reactIs_development_23","reactIs_development_24","reactIs_development_25","reactIs_development_26","reactIs_development_27","reactIs_development_28","reactIs","getOwnPropertySymbols","propIsEnumerable","toObject","shouldUseNative","objectAssign","ReactPropTypesSecret_1","ReactPropTypesSecret$1","loggedTypeFailures","checkPropTypes_1","has$1","printWarning$1","emptyFunctionThatReturnsNull","factoryWithTypeCheckers","emptyFunctionWithReset","factoryWithThrowingShims","propTypes","getOwnPropertySymbols$1","_extends$1","_createClass$1","_classCallCheck$1","_possibleConstructorReturn$1","_inherits$1","dist","_typeof","_slicedToArray","_extends$2","_extends$3","parse","_extends$4","_typeof$1","_slicedToArray$1","isObject","MAX_SAFE_INTEGER","classnames","inherits","possibleConstructorReturn","LARGE_ARRAY_SIZE","HASH_UNDEFINED","INFINITY","MAX_SAFE_INTEGER$1","argsTag","funcTag","genTag","symbolTag","reRegExpChar","reIsHostCtor","reIsUint","freeGlobal","freeSelf","root","apply","arrayIncludes","baseIndexOf","arrayIncludesWith","arrayMap","arrayPush","baseFindIndex","baseIsNaN","baseTimes","baseUnary","cacheHas","getValue","isHostObject","overArg","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","funcToString","hasOwnProperty$1","objectToString","reIsNative","Symbol$1","getPrototype","propertyIsEnumerable","splice","spreadableSymbol","nativeGetSymbols","nativeMax","getNative","nativeCreate","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","arrayLikeKeys","isArray","isArguments","isIndex","eq","baseDifference","baseFlatten","isFlattenable","baseGetAllKeys","baseIsNative","isObject$1","isMasked","toSource","baseKeysIn","nativeKeysIn","isPrototype","basePick","basePickBy","baseRest","getAllKeysIn","keysIn","getSymbolsIn","isKeyable","getSymbols","stubArray","toKey","isSymbol","isArrayLikeObject","isArrayLike","isLength","isObjectLike","lodash_omit","styleInject","css","PhoneInput","defaultCountry","preferredCountries","regions","buttonFlagStyles","listFlagStyles","phoneNr","PhoneNrInput"],"mappings":"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AAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,C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"} |