timered-counter 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"timered-counter.global.js","sources":["../node_modules/tslib/tslib.es6.mjs","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/directives/repeat.js","../node_modules/remeda/dist/chunk-ANXBDSUI.js","../node_modules/remeda/dist/chunk-7BKSRZNG.js","../node_modules/remeda/dist/chunk-RAAYCPUM.js","../node_modules/remeda/dist/chunk-K26VP6CL.js","../node_modules/remeda/dist/chunk-ENXBNJ36.js","../node_modules/remeda/dist/chunk-PJOV2RDB.js","../node_modules/remeda/dist/chunk-RLZQTLGN.js","../node_modules/remeda/dist/chunk-K5HTIQFL.js","../node_modules/remeda/dist/chunk-COZRMC32.js","../node_modules/remeda/dist/chunk-6GTAPB47.js","../node_modules/remeda/dist/chunk-SFZGYJFI.js","../node_modules/remeda/dist/chunk-VCYTMP4D.js","../node_modules/remeda/dist/chunk-JK3VNB42.js","../node_modules/remeda/dist/chunk-BO3LQZNF.js","../node_modules/remeda/dist/chunk-7QX4DO53.js","../node_modules/remeda/dist/chunk-VMV5GVZ5.js","../node_modules/remeda/dist/chunk-VFKB5IBK.js","../node_modules/remeda/dist/chunk-73TZMTEA.js","../node_modules/remeda/dist/chunk-IEE7G5JG.js","src/utils/extract-group-option.js","../node_modules/remeda/dist/chunk-ENOHV5LT.js","src/mixins/counter-styles.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/min.js","src/utils/preprocess-part-data.js","src/utils/parse-json-string.js","src/mixins/counter-parts.js","../node_modules/remeda/dist/chunk-NMC53JVB.js","src/utils/transition-digit.js","src/number-adapter/build-in-number.js","../node_modules/decimal.js/decimal.mjs","src/number-adapter/decimal-js.js","src/string-adapter/build-in-string.js","../node_modules/grapheme-splitter/index.js","src/counter-adapter.js","src/string-adapter/build-in-intl-segmenter.js","src/string-adapter/grapheme-splitter.js","src/mixins/counter-base.js","../node_modules/remeda/dist/chunk-GK5I7C4J.js","src/styles/timered-counter-styles.js","src/mixins/counter-animation.js","../node_modules/lit-html/directives/style-map.js","../node_modules/lit-html/directives/class-map.js","src/transitions/roller/styles.js","src/easing/cubic-bezier.js","src/easing/penner-easing-functions.js","src/transitions/roller/roller-digit.js","src/transitions/roller/roller.js","../node_modules/remeda/dist/chunk-IUVYQYF2.js","src/mixins/counter-aira.js","src/timered-counter.js","src/styles/timered-counter-number-styles.js","src/timered-counter-number.js","src/styles/timered-counter-string-styles.js","src/utils/any-base.js","src/timered-counter-string.js","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/differenceInDays.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/_lib/getRoundingMethod.js","../node_modules/date-fns/differenceInHours.js","../node_modules/date-fns/differenceInMilliseconds.js","../node_modules/date-fns/differenceInMinutes.js","../node_modules/date-fns/isLastDayOfMonth.js","../node_modules/date-fns/endOfDay.js","../node_modules/date-fns/endOfMonth.js","../node_modules/date-fns/differenceInMonths.js","../node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/date-fns/differenceInQuarters.js","../node_modules/date-fns/differenceInSeconds.js","../node_modules/date-fns/differenceInWeeks.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/subHours.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/subMilliseconds.js","../node_modules/date-fns/subMinutes.js","../node_modules/date-fns/addMinutes.js","../node_modules/date-fns/subQuarters.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/subSeconds.js","../node_modules/date-fns/addSeconds.js","../node_modules/date-fns/subWeeks.js","../node_modules/date-fns/addWeeks.js","../node_modules/date-fns/subYears.js","../node_modules/date-fns/addYears.js","src/types/duration.js","src/utils/localized-date-time-fields.js","src/utils/duration.js","../node_modules/date-fns/subMonths.js","src/utils/iso8601-duration.js","src/styles/timered-counter-datetime-styles.js","src/timered-counter-datetime-duration.js","src/easing/easing-functions.js","src/index.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n","import{a as t}from\"./chunk-K26VP6CL.js\";function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return t(r,n,a);throw new Error(\"Wrong number of arguments\")}export{u as a};\n","function u(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}export{u as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function i(...e){return n(r,e)}var r=(e,t)=>e.length>=t;export{i as a};\n","import{a as u}from\"./chunk-RAAYCPUM.js\";function a(...r){return u(o,r)}function o(r,t){let e=[];for(let n=r;n<t;n++)e.push(n);return e}export{a};\n","import{a as n}from\"./chunk-ENXBNJ36.js\";import{a as i}from\"./chunk-RAAYCPUM.js\";function y(...t){return i(f,t)}function f(t,e){if(!n(e,1))return{...t};if(!n(e,2)){let{[e[0]]:r,...m}=t;return m}let o={...t};for(let r of e)delete o[r];return o}export{y as a};\n","import{a as r}from\"./chunk-RAAYCPUM.js\";function t(...e){return r(u,e)}var u=(e,o)=>({...e,...o});export{t as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function m(...a){return n(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:!1,hasNext:!0,next:a(e,t,r)});export{m as a};\n","function e(r){return typeof r==\"number\"&&!Number.isNaN(r)}export{e as a};\n","function t(r){return typeof r==\"string\"}export{t as a};\n","function n(e){return e===void 0?!0:typeof e==\"string\"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{n as a};\n","function n(e){return e==null}export{n as a};\n","function o(r){return Array.isArray(r)}export{o as a};\n","function e(o){return typeof o==\"boolean\"}export{e as a};\n","function t(n){return n instanceof Date}export{t as a};\n","import{a as i}from\"./chunk-RAAYCPUM.js\";function k(...n){return i(u,n)}function u(n,e){if(n===e||Object.is(n,e))return!0;if(typeof n!=\"object\"||typeof e!=\"object\"||n===null||e===null||Object.getPrototypeOf(n)!==Object.getPrototypeOf(e))return!1;if(Array.isArray(n))return l(n,e);if(n instanceof Map)return a(n,e);if(n instanceof Set)return c(n,e);if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();if(Object.keys(n).length!==Object.keys(e).length)return!1;for(let[r,t]of Object.entries(n))if(!(r in e)||!u(t,e[r]))return!1;return!0}function l(n,e){if(n.length!==e.length)return!1;for(let[r,t]of n.entries())if(!u(t,e[r]))return!1;return!0}function a(n,e){if(n.size!==e.size)return!1;for(let[r,t]of n.entries())if(!e.has(r)||!u(t,e.get(r)))return!1;return!0}function c(n,e){if(n.size!==e.size)return!1;let r=[...e];for(let t of n){let o=!1;for(let[s,f]of r.entries())if(u(t,f)){o=!0,r.splice(s,1);break}if(!o)return!1}return!0}export{k as a};\n","import{a as i}from\"./chunk-IEE7G5JG.js\";import{a as o,b as a}from\"./chunk-ANXBDSUI.js\";function f(...e){return i(y,e)}function y(e){if(e.length===0)return a;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);return r=>{let t=n.get(r);return t===void 0||t===0?o:(t===1?n.delete(r):n.set(r,t-1),{hasNext:!0,next:r,done:n.size===0})}}export{f as a};\n","import{a}from\"./chunk-7BKSRZNG.js\";function f(t,i){let o=i.length-t.length;if(o===1){let[n,...r]=i;return a(n,{lazy:t,lazyArgs:r})}if(o===0){let n={lazy:t,lazyArgs:i};return Object.assign(e=>a(e,n),n)}throw new Error(\"Wrong number of arguments\")}export{f as a};\n","import { isArray, isFunction, merge } from 'remeda';\nexport function extractGroupOption(option, getterOptions) {\n return (isFunction(option)\n ? option(getterOptions)\n : option);\n}\nexport function extractPartOption(option, getterOptions) {\n const groupOption = extractGroupOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const value = isArray(groupOption) ? groupOption[i] : groupOption;\n result.push(value);\n }\n return result;\n}\nexport function extractPartDigitOption(option, getterOptions) {\n const extractedOption = extractPartOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const value = isArray(partOption) ? partOption[j] : partOption;\n result[i].push(value);\n }\n }\n return result;\n}\nexport function extractPartDigitCellOption(option, getterOptions) {\n const extractedOption = extractPartDigitOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const { data: digitData } = digits[j];\n const partDigitOption = partOption[j];\n result[i].push([]);\n for (let k = 0; k < digitData.length; k += 1) {\n const value = isArray(partDigitOption)\n ? partDigitOption[k]\n : partDigitOption;\n result[i][j].push(value);\n }\n }\n }\n return result;\n}\nexport function mergeGroupOption(data, source) {\n return merge(data ?? {}, source ?? {});\n}\nexport function mergePartOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergeGroupOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitCellOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartDigitOption(data[index], source[index]);\n }\n return data;\n}\n//# sourceMappingURL=extract-group-option.js.map","function t(n){return typeof n==\"function\"}export{t as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitCellOption, extractPartDigitOption, extractPartOption, mergePartDigitCellOption, mergePartDigitOption, mergePartOption, } from '../utils/extract-group-option.js';\nexport const CounterStylesMixin = (superClass) => {\n class CounterStylesMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 对 `cell` 部分的样式进行设置. 传入的对象将被直接应用到 `cell` 的 `style` 上.\n * 你还可以使用 `cellStylesDynamic` 来动态设置样式.\n */\n this.cellStyles = {};\n this.cachedCellStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `digit` 部分的样式进行设置.\n * 你还可以使用 `digitStylesDynamic` 来动态设置样式.\n */\n this.digitStyles = {};\n this.cachedDigitStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `part` 部分的样式进行设置.\n * 你还可以使用 `partStylesDynamic` 来动态设置样式.\n */\n this.partStyles = {};\n this.cachedPartStyles = [];\n /**\n * 文本颜色, 可使用 CSS 属性 `color` 和 `background-image` 的值.\n *\n * @default 继承自父元素.\n *\n * @example \"red\" 红色\n * @example \"transparent\" 透明\n * @example \"linear-gradient(90deg, red, blue)\" 红蓝渐变\n * @example \"url('https://example.com/image.png')\" 图片背景\n */\n this.color = 'inherit';\n }\n extractCellStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitCellOption(extractPartDigitCellOption(this.cellStyles ?? {}, getterOptions), extractPartDigitCellOption(this.cellStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedCellStyles, result)) {\n this.cachedCellStyles = result;\n }\n return this.cachedCellStyles;\n }\n extractDigitStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.digitStyles ?? {}, getterOptions), extractPartDigitOption(this.digitStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedDigitStyles, result)) {\n this.cachedDigitStyles = result;\n }\n return this.cachedDigitStyles;\n }\n extractPartStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartOption(extractPartOption(this.partStyles ?? {}, getterOptions), extractPartOption(this.partStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedPartStyles, result)) {\n this.cachedPartStyles = result;\n }\n return this.cachedPartStyles;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'cell-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"cellStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'digit-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"digitStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'part-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"partStyles\", void 0);\n __decorate([\n property({ type: String, reflect: true })\n ], CounterStylesMixinClass.prototype, \"color\", void 0);\n return CounterStylesMixinClass;\n};\n//# sourceMappingURL=counter-styles.js.map","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import { isDeepEqual } from 'remeda';\n/**\n * 以下代码块用于判断是否需要启动滚动动画.\n * 下列情况将跳过滚动动画:\n * 1. 当新的滚动数据(即 digits)长度为 1 时.\n * 2. 当滚动方向未改变时:\n * 1. 当滚动数据头尾相同时.\n * 2. 当前滚动数据与上一次全等时.\n */\nfunction rollerPartTest(direction, digits) {\n const [newDirection, oldDirection] = direction;\n const [newDigits, oldDigits] = digits;\n const result = {\n animate: true,\n cancelPrevAnimation: false,\n };\n let earlyReturn = '';\n if (newDigits.data.length === 1) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'only one digit';\n }\n if (newDirection !== oldDirection)\n return result;\n if (newDigits.data[0] === newDigits.data[newDigits.data.length - 1]) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'same head and tail';\n }\n if (isDeepEqual(newDigits, oldDigits)) {\n result.animate = false;\n earlyReturn = 'same digits';\n }\n if (earlyReturn)\n result.earlyReturn = earlyReturn;\n return result;\n}\nexport function preprocessPartData(newDirection, newData, oldDirection, oldData) {\n const results = [];\n let globalIndex = 0;\n for (let i = 0; i < newData.length; i++) {\n const newPart = newData[i];\n const oldPart = oldData?.[i];\n const partDataResults = [];\n for (let j = 0; j < newPart.digits.length; j++) {\n const newDigit = newPart.digits[j];\n const oldDigit = oldPart?.digits.find(d => d.place === newDigit.place);\n partDataResults.push({\n ...rollerPartTest([newDirection, oldDirection], [newDigit, oldDigit]),\n index: globalIndex++,\n partIndex: i,\n digitIndex: j,\n });\n }\n results.push(partDataResults);\n }\n return results;\n}\n//# sourceMappingURL=preprocess-part-data.js.map","export function parseJsonString(value) {\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n}\n//# sourceMappingURL=parse-json-string.js.map","import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from \"tslib\";\nimport { zip } from 'd3-array';\nimport { property } from 'lit/decorators.js';\nimport { isArray, isObjectType } from 'remeda';\nimport { transitionDigit } from '../utils/transition-digit.js';\nimport { preprocessPartData, } from '../utils/preprocess-part-data.js';\nimport { parseJsonString } from '../utils/parse-json-string.js';\nfunction toChar(value) {\n return String.fromCodePoint(value + 48);\n}\nfunction preprocessPartsOptions(options) {\n const digitToChar = {};\n if (isArray(options.digitToChar)) {\n options.digitToChar.forEach((char, index) => {\n digitToChar[toChar(index)] = char;\n });\n }\n else if (isObjectType(options.digitToChar)) {\n Object.entries(options.digitToChar).forEach(([key, value]) => {\n digitToChar[key] = value;\n });\n }\n return {\n ...options,\n digitToChar,\n };\n}\nexport const CounterPartsMixin = (superClass) => {\n var _a, _CounterPartsMixinClass___partsOptions;\n class CounterPartsMixinClass extends superClass {\n constructor() {\n super(...arguments);\n _CounterPartsMixinClass___partsOptions.set(this, {\n ..._a.DEFAULT_PARTS_OPTIONS,\n });\n // partsOptions: InnerPartsOptions =\n // CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS;\n this.parts = [];\n this.oldParts = [];\n this.partPreprocessDataList = [];\n }\n /**\n * 这是 `usePartData` 的配置项. `usePartData` 被用于从数值的变化中生成用于滚动的数据.\n * 这里不会有太多解释, 因为它是一个底层的配置项. 你可以查看 `CounterPartsMixinClass` 的源码了解更多信息.\n */\n get partsOptions() {\n return __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n }\n set partsOptions(value) {\n const old = __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n __classPrivateFieldSet(this, _CounterPartsMixinClass___partsOptions, preprocessPartsOptions({\n ..._a.DEFAULT_PARTS_OPTIONS,\n ...value,\n }), \"f\");\n this.requestUpdate('partsOptions', old);\n }\n sampling(from, to) {\n return transitionDigit(this.numberAdapter, this.numberAdapter.max(from, to), this.numberAdapter.min(from, to), this.partsOptions.sampleCount);\n }\n // eslint-disable-next-line class-methods-use-this\n sampleSplit(samples) {\n return [samples.slice()];\n }\n sampleToString(value) {\n return this.numberAdapter.toString(value);\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value')) {\n this.oldParts = this.parts;\n }\n /**\n * {@link processPartData} 依赖 {@link partsOptions} 和 {@link value} 生成数据.\n * 当依赖项没有变化时, 不需要重新生成数据.\n */\n if (changedProperties.has('value') ||\n changedProperties.has('partsOptions')) {\n this.parts = this.processPartData();\n }\n if (changedProperties.has('value')) {\n this.partPreprocessDataList = preprocessPartData(this.direction, this.parts, this.oldDirection, this.oldParts);\n }\n /**\n * `value` 没变但 `direction` 变化时, 也要重新生成 `partPreprocessDataList`.\n */\n // todo test events 和 animationOptions 冲突\n // if (\n // changedProperties.has('value') ||\n // changedProperties.has('direction')\n // ) {\n // }\n }\n /**\n * process:\n * 1. 采样\n * 2. 转换\n * 3. 构造\n */\n processPartData() {\n const { decimalSeparator, digitToChar, minPlaces, fillChar, type } = this.partsOptions;\n const from = this.value;\n const to = this.oldValue;\n let _sampleToString = value => this.sampleToString(value).split(decimalSeparator);\n if (type === 'string') {\n _sampleToString = value => [this.sampleToString(value), ''];\n }\n const result = [];\n /**\n * 对 {@link from} 到 {@link to} 的范围采样.\n */\n const tempParts = this.sampleSplit(this.sampling(from, to));\n /**\n * 将时间部分的数字转换为用于滚动的字符串数组\n *\n * headNumber: 最先显示的数字. 向下滚动时, 为滚动列表的最后一个数字, 向上滚动时相反.\n * tailNumber: 最后显示的数字. 向下滚动时, 为滚动列表的第一个数字, 向上滚动时相反.\n */\n {\n const directionValue = this.numberAdapter.gt(from, to) ? 'down' : 'up';\n for (let i = 0; i < tempParts.length; i++) {\n const partData = tempParts[i];\n // const headNumber =\n // partData[directionValue === \"down\" ? partData.length - 1 : 0];\n const tailNumber = partData[directionValue === 'down' ? 0 : partData.length - 1];\n const [minIntegerPlaces = 1, minDecimalPlaces = 0] = minPlaces;\n const numberParts = _sampleToString(tailNumber);\n const integerPlaces = Math.max(\n // numberParts[0].length,\n this.stringAdapter.stringToChars(numberParts[0]).length, minIntegerPlaces);\n const decimalPlaces = Math.max(\n // numberParts[1]?.length ?? 0,\n this.stringAdapter.stringToChars(numberParts[1] ?? '').length, minDecimalPlaces);\n /**\n * 使用 zip 将二维矩阵, 旋转90度\n */\n const data = zip(...partData\n /**\n * 保证位数一致, 向前补零\n */\n .map(digitData => {\n const [integer = '', decimal = ''] = _sampleToString(digitData);\n const integerChars = this.stringAdapter.stringToChars(integer);\n const decimalChars = this.stringAdapter.stringToChars(decimal);\n const filledIntegerPlaces = Math.max(integerPlaces - integerChars.length, 0);\n const filledDecimalPlaces = Math.max(decimalPlaces - decimalChars.length, 0);\n let filledChars = [].concat(new Array(filledIntegerPlaces).fill(fillChar), integerChars);\n if (decimalPlaces > 0) {\n filledChars = filledChars.concat([decimalSeparator], decimalChars, new Array(filledDecimalPlaces).fill(fillChar));\n }\n return filledChars;\n }))\n /**\n * 删除连续的重复项\n */\n .map((digitList, index, array) => ({\n data: digitList\n .filter((digit, digitIndex, digitArray) => digitIndex === 0 || digit !== digitArray[digitIndex - 1])\n .map(digit => digitToChar[digit] ?? digit),\n place: array.length - index,\n }));\n result.push({\n digits: data,\n });\n }\n }\n return result;\n }\n }\n _a = CounterPartsMixinClass, _CounterPartsMixinClass___partsOptions = new WeakMap();\n CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS = {\n sampleCount: 16,\n decimalSeparator: '.',\n fillChar: '0',\n minPlaces: [1, 0],\n digitToChar: {},\n type: 'number',\n };\n __decorate([\n property({\n type: Object,\n attribute: 'parts-options',\n converter: value => parseJsonString(value ?? '') ?? {},\n noAccessor: true,\n })\n ], CounterPartsMixinClass.prototype, \"partsOptions\", null);\n return CounterPartsMixinClass;\n};\n//# sourceMappingURL=counter-parts.js.map","function o(e){return typeof e==\"object\"&&e!==null}export{o as a};\n","/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/round.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateRound(na, a, b) {\n return function (t) {\n return na.round(na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t)));\n };\n}\n/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/number.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateNumber(na, a, b) {\n return function (t) {\n return na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t));\n };\n}\nexport function transitionDigit(na, from, to, count) {\n let _count = count;\n const interpolateFunc = na.isInteger(from) && na.isInteger(to)\n ? interpolateRound(na, from, to)\n : interpolateNumber(na, from, to);\n /**\n * 将浮点数转换为整数进行插值计算, 提供与整数插值类似的效果.\n * 取最大的小数位数作为插值个数. 但不超过30.\n */\n // const maxDecimalPlaces = Number.isInteger(from - to)\n // ? 0\n // : Math.max(new Decimal(from).dp(), new Decimal(to).dp());\n // const multiplier = Math.pow(10, maxDecimalPlaces);\n // const count = Math.min(\n // Math.abs(Math.floor(from * multiplier) - Math.floor(to * multiplier)) + 1,\n // 30\n // );\n if (na.eq(from, to))\n _count = 1;\n // [0, 1/count, 2/count, ..., 1]\n // const percents = range(count).map((d) => d / Math.max(count - 1, 1));\n const result = [];\n for (let i = 0; i < _count; i++) {\n const percent = na.div(na.create(i), na.create(Math.max(_count - 1, 1)));\n result.push(interpolateFunc(percent));\n }\n return result;\n}\n//# sourceMappingURL=transition-digit.js.map","const BuildInNumberAdapter = () => ({\n create(value) {\n const num = Number(value);\n return Number.isFinite(num) ? num : 0;\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n return a * b;\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger(a) {\n return Number.isInteger(a);\n },\n isNegative(a) {\n return a < 0;\n },\n isPositive(a) {\n return a > 0;\n },\n isZero(a) {\n return a === 0;\n },\n isNaN(a) {\n return Number.isNaN(a);\n },\n isFinite(a) {\n return Number.isFinite(a);\n },\n abs(a) {\n return Math.abs(a);\n },\n ceil(a) {\n return Math.ceil(a);\n },\n floor(a) {\n return Math.floor(a);\n },\n round(a) {\n return Math.round(a);\n },\n max(a, b) {\n return Math.max(a, b);\n },\n min(a, b) {\n return Math.min(a, b);\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return String(a);\n },\n});\nexport { BuildInNumberAdapter };\n//# sourceMappingURL=build-in-number.js.map","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","import { Decimal } from 'decimal.js';\nimport { isString } from 'remeda';\nconst numberRegex = /^-?\\d+(\\.\\d+)?$/;\nconst DecimalJsAdapter = (config = { precision: 1e3 }) => {\n const InnerDecimal = Decimal.clone(config);\n return {\n create(value) {\n if (isString(value) && !numberRegex.test(value))\n value = 0;\n return new InnerDecimal(value);\n },\n add(a, b) {\n return a.plus(b);\n },\n sub(a, b) {\n return a.minus(b);\n },\n mul(a, b) {\n return a.times(b);\n },\n div(a, b) {\n return a.div(b);\n },\n compare(a, b) {\n return a.cmp(b);\n },\n eq(a, b) {\n return a.eq(b);\n },\n gt(a, b) {\n return a.gt(b);\n },\n gte(a, b) {\n return a.gte(b);\n },\n lt(a, b) {\n return a.lt(b);\n },\n lte(a, b) {\n return a.lte(b);\n },\n isInteger(a) {\n return a.isInteger();\n },\n isNegative(a) {\n return a.isNegative();\n },\n isPositive(a) {\n return a.isPositive();\n },\n isZero(a) {\n return a.isZero();\n },\n isNaN(a) {\n return a.isNaN();\n },\n isFinite(a) {\n return a.isFinite();\n },\n abs(a) {\n return a.abs();\n },\n ceil(a) {\n return a.ceil();\n },\n floor(a) {\n return a.floor();\n },\n round(a) {\n return a.round();\n },\n max(a, b) {\n return InnerDecimal.max(a, b);\n },\n min(a, b) {\n return InnerDecimal.min(a, b);\n },\n toNumber(a) {\n return a.toNumber();\n },\n toString(a) {\n return a.toFixed();\n },\n };\n};\nexport { DecimalJsAdapter };\n//# sourceMappingURL=decimal-js.js.map","/**\n * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.\n * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].\n *\n * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.\n *\n * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n */\nconst BuildInStringAdapter = () => ({\n stringToChars(value) {\n return Array.from(value);\n },\n});\nexport { BuildInStringAdapter };\n//# sourceMappingURL=build-in-string.js.map","/*\r\nBreaks a Javascript string into individual user-perceived \"characters\"\r\ncalled extended grapheme clusters by implementing the Unicode UAX-29 standard, version 10.0.0\r\n\r\nUsage:\r\nvar splitter = new GraphemeSplitter();\r\n//returns an array of strings, one string for each grapheme cluster\r\nvar graphemes = splitter.splitGraphemes(string);\r\n\r\n*/\r\nfunction GraphemeSplitter(){\r\n\tvar CR = 0,\r\n\t\tLF = 1,\r\n\t\tControl = 2,\r\n\t\tExtend = 3,\r\n\t\tRegional_Indicator = 4,\r\n\t\tSpacingMark = 5,\r\n\t\tL = 6,\r\n\t\tV = 7,\r\n\t\tT = 8,\r\n\t\tLV = 9,\r\n\t\tLVT = 10,\r\n\t\tOther = 11,\r\n\t\tPrepend = 12,\r\n\t\tE_Base = 13,\r\n\t\tE_Modifier = 14,\r\n\t\tZWJ = 15,\r\n\t\tGlue_After_Zwj = 16,\r\n\t\tE_Base_GAZ = 17;\r\n\r\n\t// BreakTypes\r\n\tvar NotBreak = 0,\r\n\t\tBreakStart = 1,\r\n\t\tBreak = 2,\r\n\t\tBreakLastRegional = 3,\r\n\t\tBreakPenultimateRegional = 4;\r\n\r\n\tfunction isSurrogate(str, pos) {\r\n\t\treturn 0xd800 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 0xdbff &&\r\n\t\t\t\t0xdc00 <= str.charCodeAt(pos + 1) && str.charCodeAt(pos + 1) <= 0xdfff;\r\n\t}\r\n\r\n\t// Private function, gets a Unicode code point from a JavaScript UTF-16 string\r\n\t// handling surrogate pairs appropriately\r\n\tfunction codePointAt(str, idx){\r\n\t\tif(idx === undefined){\r\n\t\t\tidx = 0;\r\n\t\t}\r\n\t\tvar code = str.charCodeAt(idx);\r\n\r\n\t\t// if a high surrogate\r\n\t\tif (0xD800 <= code && code <= 0xDBFF &&\r\n\t\t\tidx < str.length - 1){\r\n\t\t\tvar hi = code;\r\n\t\t\tvar low = str.charCodeAt(idx + 1);\r\n\t\t\tif (0xDC00 <= low && low <= 0xDFFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn hi;\r\n\t\t}\r\n\r\n\t\t// if a low surrogate\r\n\t\tif (0xDC00 <= code && code <= 0xDFFF &&\r\n\t\t\tidx >= 1){\r\n\t\t\tvar hi = str.charCodeAt(idx - 1);\r\n\t\t\tvar low = code;\r\n\t\t\tif (0xD800 <= hi && hi <= 0xDBFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn low;\r\n\t\t}\r\n\r\n\t\t//just return the char if an unmatched surrogate half or a\r\n\t\t//single-char codepoint\r\n\t\treturn code;\r\n\t}\r\n\r\n\t// Private function, returns whether a break is allowed between the\r\n\t// two given grapheme breaking classes\r\n\tfunction shouldBreak(start, mid, end){\r\n\t\tvar all = [start].concat(mid).concat([end]);\r\n\t\tvar previous = all[all.length - 2]\r\n\t\tvar next = end\r\n\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar eModifierIndex = all.lastIndexOf(E_Modifier)\r\n\t\tif(eModifierIndex > 1 &&\r\n\t\t\tall.slice(1, eModifierIndex).every(function(c){return c == Extend}) &&\r\n\t\t\t[Extend, E_Base, E_Base_GAZ].indexOf(start) == -1){\r\n\t\t\treturn Break\r\n\t\t}\r\n\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB12. ^ (RI RI)* RI\t?\tRI\r\n\t\t// GB13. [^RI] (RI RI)* RI\t?\tRI\r\n\t\tvar rIIndex = all.lastIndexOf(Regional_Indicator)\r\n\t\tif(rIIndex > 0 &&\r\n\t\t\tall.slice(1, rIIndex).every(function(c){return c == Regional_Indicator}) &&\r\n\t\t\t[Prepend, Regional_Indicator].indexOf(previous) == -1) {\r\n\t\t\tif(all.filter(function(c){return c == Regional_Indicator}).length % 2 == 1) {\r\n\t\t\t\treturn BreakLastRegional\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakPenultimateRegional\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// GB3. CR X LF\r\n\t\tif(previous == CR && next == LF){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB4. (Control|CR|LF) ÷\r\n\t\telse if(previous == Control || previous == CR || previous == LF){\r\n\t\t\tif(next == E_Modifier && mid.every(function(c){return c == Extend})){\r\n\t\t\t\treturn Break\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakStart\r\n\t\t\t}\r\n\t\t}\r\n\t\t// GB5. ÷ (Control|CR|LF)\r\n\t\telse if(next == Control || next == CR || next == LF){\r\n\t\t\treturn BreakStart;\r\n\t\t}\r\n\t\t// GB6. L X (L|V|LV|LVT)\r\n\t\telse if(previous == L &&\r\n\t\t\t(next == L || next == V || next == LV || next == LVT)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB7. (LV|V) X (V|T)\r\n\t\telse if((previous == LV || previous == V) &&\r\n\t\t\t(next == V || next == T)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB8. (LVT|T) X (T)\r\n\t\telse if((previous == LVT || previous == T) &&\r\n\t\t\tnext == T){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9. X (Extend|ZWJ)\r\n\t\telse if (next == Extend || next == ZWJ){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9a. X SpacingMark\r\n\t\telse if(next == SpacingMark){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9b. Prepend X\r\n\t\telse if (previous == Prepend){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar previousNonExtendIndex = all.indexOf(Extend) != -1 ? all.lastIndexOf(Extend) - 1 : all.length - 2;\r\n\t\tif([E_Base, E_Base_GAZ].indexOf(all[previousNonExtendIndex]) != -1 &&\r\n\t\t\tall.slice(previousNonExtendIndex + 1, -1).every(function(c){return c == Extend}) &&\r\n\t\t\tnext == E_Modifier){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB11. ZWJ ? (Glue_After_Zwj | EBG)\r\n\t\tif(previous == ZWJ && [Glue_After_Zwj, E_Base_GAZ].indexOf(next) != -1) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB12. ^ (RI RI)* RI ? RI\r\n\t\t// GB13. [^RI] (RI RI)* RI ? RI\r\n\t\tif(mid.indexOf(Regional_Indicator) != -1) {\r\n\t\t\treturn Break;\r\n\t\t}\r\n\t\tif(previous == Regional_Indicator && next == Regional_Indicator) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB999. Any ? Any\r\n\t\treturn BreakStart;\r\n\t}\r\n\r\n\t// Returns the next grapheme break in the string after the given index\r\n\tthis.nextBreak = function(string, index){\r\n\t\tif(index === undefined){\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\tif(index < 0){\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif(index >= string.length - 1){\r\n\t\t\treturn string.length;\r\n\t\t}\r\n\t\tvar prev = getGraphemeBreakProperty(codePointAt(string, index));\r\n\t\tvar mid = []\r\n\t\tfor (var i = index + 1; i < string.length; i++) {\r\n\t\t\t// check for already processed low surrogates\r\n\t\t\tif(isSurrogate(string, i - 1)){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tvar next = getGraphemeBreakProperty(codePointAt(string, i));\r\n\t\t\tif(shouldBreak(prev, mid, next)){\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\tmid.push(next);\r\n\t\t}\r\n\t\treturn string.length;\r\n\t};\r\n\r\n\t// Breaks the given string into an array of grapheme cluster strings\r\n\tthis.splitGraphemes = function(str){\r\n\t\tvar res = [];\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tres.push(str.slice(index, brk));\r\n\t\t\tindex = brk;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tres.push(str.slice(index));\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the iterator of grapheme clusters there are in the given string\r\n\tthis.iterateGraphemes = function(str) {\r\n\t\tvar index = 0;\r\n\t\tvar res = {\r\n\t\t\tnext: (function() {\r\n\t\t\t\tvar value;\r\n\t\t\t\tvar brk;\r\n\t\t\t\tif ((brk = this.nextBreak(str, index)) < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index, brk);\r\n\t\t\t\t\tindex = brk;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\tif (index < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index);\r\n\t\t\t\t\tindex = str.length;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\treturn { value: undefined, done: true };\r\n\t\t\t}).bind(this)\r\n\t\t};\r\n\t\t// ES2015 @@iterator method (iterable) for spread syntax and for...of statement\r\n\t\tif (typeof Symbol !== 'undefined' && Symbol.iterator) {\r\n\t\t\tres[Symbol.iterator] = function() {return res};\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the number of grapheme clusters there are in the given string\r\n\tthis.countGraphemes = function(str){\r\n\t\tvar count = 0;\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tindex = brk;\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\treturn count;\r\n\t};\r\n\r\n\t//given a Unicode code point, determines this symbol's grapheme break property\r\n\tfunction getGraphemeBreakProperty(code){\r\n\r\n\t\t//grapheme break property for Unicode 10.0.0,\r\n\t\t//taken from http://www.unicode.org/Public/10.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\r\n\t\t//and adapted to JavaScript rules\r\n\r\n\t\tif(\r\n\t\t(0x0600 <= code && code <= 0x0605) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\r\n\t\t0x06DD == code || // Cf ARABIC END OF AYAH\r\n\t\t0x070F == code || // Cf SYRIAC ABBREVIATION MARK\r\n\t\t0x08E2 == code || // Cf ARABIC DISPUTED END OF AYAH\r\n\t\t0x0D4E == code || // Lo MALAYALAM LETTER DOT REPH\r\n\t\t0x110BD == code || // Cf KAITHI NUMBER SIGN\r\n\t\t(0x111C2 <= code && code <= 0x111C3) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\r\n\t\t0x11A3A == code || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\r\n\t\t(0x11A86 <= code && code <= 0x11A89) || // Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA\r\n\t\t0x11D46 == code // Lo MASARAM GONDI REPHA\r\n\t\t){\r\n\t\t\treturn Prepend;\r\n\t\t}\r\n\t\tif(\r\n\t\t0x000D == code // Cc <control-000D>\r\n\t\t){\r\n\t\t\treturn CR;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x000A == code // Cc <control-000A>\r\n\t\t){\r\n\t\t\treturn LF;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x0000 <= code && code <= 0x0009) || // Cc [10] <control-0000>..<control-0009>\r\n\t\t(0x000B <= code && code <= 0x000C) || // Cc [2] <control-000B>..<control-000C>\r\n\t\t(0x000E <= code && code <= 0x001F) || // Cc [18] <control-000E>..<control-001F>\r\n\t\t(0x007F <= code && code <= 0x009F) || // Cc [33] <control-007F>..<control-009F>\r\n\t\t0x00AD == code || // Cf SOFT HYPHEN\r\n\t\t0x061C == code || // Cf ARABIC LETTER MARK\r\n\r\n\t\t0x180E == code || // Cf MONGOLIAN VOWEL SEPARATOR\r\n\t\t0x200B == code || // Cf ZERO WIDTH SPACE\r\n\t\t(0x200E <= code && code <= 0x200F) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\r\n\t\t0x2028 == code || // Zl LINE SEPARATOR\r\n\t\t0x2029 == code || // Zp PARAGRAPH SEPARATOR\r\n\t\t(0x202A <= code && code <= 0x202E) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\r\n\t\t(0x2060 <= code && code <= 0x2064) || // Cf [5] WORD JOINER..INVISIBLE PLUS\r\n\t\t0x2065 == code || // Cn <reserved-2065>\r\n\t\t(0x2066 <= code && code <= 0x206F) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\r\n\t\t(0xD800 <= code && code <= 0xDFFF) || // Cs [2048] <surrogate-D800>..<surrogate-DFFF>\r\n\t\t0xFEFF == code || // Cf ZERO WIDTH NO-BREAK SPACE\r\n\t\t(0xFFF0 <= code && code <= 0xFFF8) || // Cn [9] <reserved-FFF0>..<reserved-FFF8>\r\n\t\t(0xFFF9 <= code && code <= 0xFFFB) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\r\n\t\t(0x1BCA0 <= code && code <= 0x1BCA3) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\r\n\t\t(0x1D173 <= code && code <= 0x1D17A) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\r\n\t\t0xE0000 == code || // Cn <reserved-E0000>\r\n\t\t0xE0001 == code || // Cf LANGUAGE TAG\r\n\t\t(0xE0002 <= code && code <= 0xE001F) || // Cn [30] <reserved-E0002>..<reserved-E001F>\r\n\t\t(0xE0080 <= code && code <= 0xE00FF) || // Cn [128] <reserved-E0080>..<reserved-E00FF>\r\n\t\t(0xE01F0 <= code && code <= 0xE0FFF) // Cn [3600] <reserved-E01F0>..<reserved-E0FFF>\r\n\t\t){\r\n\t\t\treturn Control;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x0300 <= code && code <= 0x036F) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\r\n\t\t(0x0483 <= code && code <= 0x0487) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\r\n\t\t(0x0488 <= code && code <= 0x0489) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\r\n\t\t(0x0591 <= code && code <= 0x05BD) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\r\n\t\t0x05BF == code || // Mn HEBREW POINT RAFE\r\n\t\t(0x05C1 <= code && code <= 0x05C2) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\r\n\t\t(0x05C4 <= code && code <= 0x05C5) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\r\n\t\t0x05C7 == code || // Mn HEBREW POINT QAMATS QATAN\r\n\t\t(0x0610 <= code && code <= 0x061A) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\r\n\t\t(0x064B <= code && code <= 0x065F) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\r\n\t\t0x0670 == code || // Mn ARABIC LETTER SUPERSCRIPT ALEF\r\n\t\t(0x06D6 <= code && code <= 0x06DC) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\r\n\t\t(0x06DF <= code && code <= 0x06E4) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\r\n\t\t(0x06E7 <= code && code <= 0x06E8) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\r\n\t\t(0x06EA <= code && code <= 0x06ED) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\r\n\t\t0x0711 == code || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\r\n\t\t(0x0730 <= code && code <= 0x074A) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\r\n\t\t(0x07A6 <= code && code <= 0x07B0) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\r\n\t\t(0x07EB <= code && code <= 0x07F3) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\r\n\t\t(0x0816 <= code && code <= 0x0819) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\r\n\t\t(0x081B <= code && code <= 0x0823) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\r\n\t\t(0x0825 <= code && code <= 0x0827) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\r\n\t\t(0x0829 <= code && code <= 0x082D) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\r\n\t\t(0x0859 <= code && code <= 0x085B) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\r\n\t\t(0x08D4 <= code && code <= 0x08E1) || // Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA\r\n\t\t(0x08E3 <= code && code <= 0x0902) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\r\n\t\t0x093A == code || // Mn DEVANAGARI VOWEL SIGN OE\r\n\t\t0x093C == code || // Mn DEVANAGARI SIGN NUKTA\r\n\t\t(0x0941 <= code && code <= 0x0948) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\r\n\t\t0x094D == code || // Mn DEVANAGARI SIGN VIRAMA\r\n\t\t(0x0951 <= code && code <= 0x0957) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\r\n\t\t(0x0962 <= code && code <= 0x0963) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\r\n\t\t0x0981 == code || // Mn BENGALI SIGN CANDRABINDU\r\n\t\t0x09BC == code || // Mn BENGALI SIGN NUKTA\r\n\t\t0x09BE == code || // Mc BENGALI VOWEL SIGN AA\r\n\t\t(0x09C1 <= code && code <= 0x09C4) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\r\n\t\t0x09CD == code || // Mn BENGALI SIGN VIRAMA\r\n\t\t0x09D7 == code || // Mc BENGALI AU LENGTH MARK\r\n\t\t(0x09E2 <= code && code <= 0x09E3) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0A01 <= code && code <= 0x0A02) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\r\n\t\t0x0A3C == code || // Mn GURMUKHI SIGN NUKTA\r\n\t\t(0x0A41 <= code && code <= 0x0A42) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\r\n\t\t(0x0A47 <= code && code <= 0x0A48) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\r\n\t\t(0x0A4B <= code && code <= 0x0A4D) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\r\n\t\t0x0A51 == code || // Mn GURMUKHI SIGN UDAAT\r\n\t\t(0x0A70 <= code && code <= 0x0A71) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\r\n\t\t0x0A75 == code || // Mn GURMUKHI SIGN YAKASH\r\n\t\t(0x0A81 <= code && code <= 0x0A82) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\r\n\t\t0x0ABC == code || // Mn GUJARATI SIGN NUKTA\r\n\t\t(0x0AC1 <= code && code <= 0x0AC5) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\r\n\t\t(0x0AC7 <= code && code <= 0x0AC8) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\r\n\t\t0x0ACD == code || // Mn GUJARATI SIGN VIRAMA\r\n\t\t(0x0AE2 <= code && code <= 0x0AE3) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0AFA <= code && code <= 0x0AFF) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\r\n\t\t0x0B01 == code || // Mn ORIYA SIGN CANDRABINDU\r\n\t\t0x0B3C == code || // Mn ORIYA SIGN NUKTA\r\n\t\t0x0B3E == code || // Mc ORIYA VOWEL SIGN AA\r\n\t\t0x0B3F == code || // Mn ORIYA VOWEL SIGN I\r\n\t\t(0x0B41 <= code && code <= 0x0B44) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\r\n\t\t0x0B4D == code || // Mn ORIYA SIGN VIRAMA\r\n\t\t0x0B56 == code || // Mn ORIYA AI LENGTH MARK\r\n\t\t0x0B57 == code || // Mc ORIYA AU LENGTH MARK\r\n\t\t(0x0B62 <= code && code <= 0x0B63) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\r\n\t\t0x0B82 == code || // Mn TAMIL SIGN ANUSVARA\r\n\t\t0x0BBE == code || // Mc TAMIL VOWEL SIGN AA\r\n\t\t0x0BC0 == code || // Mn TAMIL VOWEL SIGN II\r\n\t\t0x0BCD == code || // Mn TAMIL SIGN VIRAMA\r\n\t\t0x0BD7 == code || // Mc TAMIL AU LENGTH MARK\r\n\t\t0x0C00 == code || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\r\n\t\t(0x0C3E <= code && code <= 0x0C40) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\r\n\t\t(0x0C46 <= code && code <= 0x0C48) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\r\n\t\t(0x0C4A <= code && code <= 0x0C4D) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\r\n\t\t(0x0C55 <= code && code <= 0x0C56) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\r\n\t\t(0x0C62 <= code && code <= 0x0C63) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\r\n\t\t0x0C81 == code || // Mn KANNADA SIGN CANDRABINDU\r\n\t\t0x0CBC == code || // Mn KANNADA SIGN NUKTA\r\n\t\t0x0CBF == code || // Mn KANNADA VOWEL SIGN I\r\n\t\t0x0CC2 == code || // Mc KANNADA VOWEL SIGN UU\r\n\t\t0x0CC6 == code || // Mn KANNADA VOWEL SIGN E\r\n\t\t(0x0CCC <= code && code <= 0x0CCD) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\r\n\t\t(0x0CD5 <= code && code <= 0x0CD6) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\r\n\t\t(0x0CE2 <= code && code <= 0x0CE3) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\r\n\t\t(0x0D00 <= code && code <= 0x0D01) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\r\n\t\t(0x0D3B <= code && code <= 0x0D3C) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\r\n\t\t0x0D3E == code || // Mc MALAYALAM VOWEL SIGN AA\r\n\t\t(0x0D41 <= code && code <= 0x0D44) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\r\n\t\t0x0D4D == code || // Mn MALAYALAM SIGN VIRAMA\r\n\t\t0x0D57 == code || // Mc MALAYALAM AU LENGTH MARK\r\n\t\t(0x0D62 <= code && code <= 0x0D63) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\r\n\t\t0x0DCA == code || // Mn SINHALA SIGN AL-LAKUNA\r\n\t\t0x0DCF == code || // Mc SINHALA VOWEL SIGN AELA-PILLA\r\n\t\t(0x0DD2 <= code && code <= 0x0DD4) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\r\n\t\t0x0DD6 == code || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\r\n\t\t0x0DDF == code || // Mc SINHALA VOWEL SIGN GAYANUKITTA\r\n\t\t0x0E31 == code || // Mn THAI CHARACTER MAI HAN-AKAT\r\n\t\t(0x0E34 <= code && code <= 0x0E3A) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\r\n\t\t(0x0E47 <= code && code <= 0x0E4E) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\r\n\t\t0x0EB1 == code || // Mn LAO VOWEL SIGN MAI KAN\r\n\t\t(0x0EB4 <= code && code <= 0x0EB9) || // Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU\r\n\t\t(0x0EBB <= code && code <= 0x0EBC) || // Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO\r\n\t\t(0x0EC8 <= code && code <= 0x0ECD) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\r\n\t\t(0x0F18 <= code && code <= 0x0F19) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\r\n\t\t0x0F35 == code || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\r\n\t\t0x0F37 == code || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\r\n\t\t0x0F39 == code || // Mn TIBETAN MARK TSA -PHRU\r\n\t\t(0x0F71 <= code && code <= 0x0F7E) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\r\n\t\t(0x0F80 <= code && code <= 0x0F84) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\r\n\t\t(0x0F86 <= code && code <= 0x0F87) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\r\n\t\t(0x0F8D <= code && code <= 0x0F97) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\r\n\t\t(0x0F99 <= code && code <= 0x0FBC) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\r\n\t\t0x0FC6 == code || // Mn TIBETAN SYMBOL PADMA GDAN\r\n\t\t(0x102D <= code && code <= 0x1030) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\r\n\t\t(0x1032 <= code && code <= 0x1037) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\r\n\t\t(0x1039 <= code && code <= 0x103A) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\r\n\t\t(0x103D <= code && code <= 0x103E) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\r\n\t\t(0x1058 <= code && code <= 0x1059) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\r\n\t\t(0x105E <= code && code <= 0x1060) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\r\n\t\t(0x1071 <= code && code <= 0x1074) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\r\n\t\t0x1082 == code || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\r\n\t\t(0x1085 <= code && code <= 0x1086) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\r\n\t\t0x108D == code || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\r\n\t\t0x109D == code || // Mn MYANMAR VOWEL SIGN AITON AI\r\n\t\t(0x135D <= code && code <= 0x135F) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\r\n\t\t(0x1712 <= code && code <= 0x1714) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\r\n\t\t(0x1732 <= code && code <= 0x1734) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\r\n\t\t(0x1752 <= code && code <= 0x1753) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\r\n\t\t(0x1772 <= code && code <= 0x1773) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\r\n\t\t(0x17B4 <= code && code <= 0x17B5) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\r\n\t\t(0x17B7 <= code && code <= 0x17BD) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\r\n\t\t0x17C6 == code || // Mn KHMER SIGN NIKAHIT\r\n\t\t(0x17C9 <= code && code <= 0x17D3) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\r\n\t\t0x17DD == code || // Mn KHMER SIGN ATTHACAN\r\n\t\t(0x180B <= code && code <= 0x180D) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\r\n\t\t(0x1885 <= code && code <= 0x1886) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\r\n\t\t0x18A9 == code || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\r\n\t\t(0x1920 <= code && code <= 0x1922) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\r\n\t\t(0x1927 <= code && code <= 0x1928) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\r\n\t\t0x1932 == code || // Mn LIMBU SMALL LETTER ANUSVARA\r\n\t\t(0x1939 <= code && code <= 0x193B) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\r\n\t\t(0x1A17 <= code && code <= 0x1A18) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\r\n\t\t0x1A1B == code || // Mn BUGINESE VOWEL SIGN AE\r\n\t\t0x1A56 == code || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\r\n\t\t(0x1A58 <= code && code <= 0x1A5E) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\r\n\t\t0x1A60 == code || // Mn TAI THAM SIGN SAKOT\r\n\t\t0x1A62 == code || // Mn TAI THAM VOWEL SIGN MAI SAT\r\n\t\t(0x1A65 <= code && code <= 0x1A6C) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\r\n\t\t(0x1A73 <= code && code <= 0x1A7C) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\r\n\t\t0x1A7F == code || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\r\n\t\t(0x1AB0 <= code && code <= 0x1ABD) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\r\n\t\t0x1ABE == code || // Me COMBINING PARENTHESES OVERLAY\r\n\t\t(0x1B00 <= code && code <= 0x1B03) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\r\n\t\t0x1B34 == code || // Mn BALINESE SIGN REREKAN\r\n\t\t(0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\r\n\t\t0x1B3C == code || // Mn BALINESE VOWEL SIGN LA LENGA\r\n\t\t0x1B42 == code || // Mn BALINESE VOWEL SIGN PEPET\r\n\t\t(0x1B6B <= code && code <= 0x1B73) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\r\n\t\t(0x1B80 <= code && code <= 0x1B81) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\r\n\t\t(0x1BA2 <= code && code <= 0x1BA5) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\r\n\t\t(0x1BA8 <= code && code <= 0x1BA9) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\r\n\t\t(0x1BAB <= code && code <= 0x1BAD) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\r\n\t\t0x1BE6 == code || // Mn BATAK SIGN TOMPI\r\n\t\t(0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\r\n\t\t0x1BED == code || // Mn BATAK VOWEL SIGN KARO O\r\n\t\t(0x1BEF <= code && code <= 0x1BF1) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\r\n\t\t(0x1C2C <= code && code <= 0x1C33) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\r\n\t\t(0x1C36 <= code && code <= 0x1C37) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\r\n\t\t(0x1CD0 <= code && code <= 0x1CD2) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\r\n\t\t(0x1CD4 <= code && code <= 0x1CE0) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\r\n\t\t(0x1CE2 <= code && code <= 0x1CE8) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\r\n\t\t0x1CED == code || // Mn VEDIC SIGN TIRYAK\r\n\t\t0x1CF4 == code || // Mn VEDIC TONE CANDRA ABOVE\r\n\t\t(0x1CF8 <= code && code <= 0x1CF9) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\r\n\t\t(0x1DC0 <= code && code <= 0x1DF9) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\r\n\t\t(0x1DFB <= code && code <= 0x1DFF) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\r\n\t\t0x200C == code || // Cf ZERO WIDTH NON-JOINER\r\n\t\t(0x20D0 <= code && code <= 0x20DC) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\r\n\t\t(0x20DD <= code && code <= 0x20E0) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\r\n\t\t0x20E1 == code || // Mn COMBINING LEFT RIGHT ARROW ABOVE\r\n\t\t(0x20E2 <= code && code <= 0x20E4) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\r\n\t\t(0x20E5 <= code && code <= 0x20F0) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\r\n\t\t(0x2CEF <= code && code <= 0x2CF1) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\r\n\t\t0x2D7F == code || // Mn TIFINAGH CONSONANT JOINER\r\n\t\t(0x2DE0 <= code && code <= 0x2DFF) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\r\n\t\t(0x302A <= code && code <= 0x302D) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\r\n\t\t(0x302E <= code && code <= 0x302F) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\r\n\t\t(0x3099 <= code && code <= 0x309A) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\r\n\t\t0xA66F == code || // Mn COMBINING CYRILLIC VZMET\r\n\t\t(0xA670 <= code && code <= 0xA672) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\r\n\t\t(0xA674 <= code && code <= 0xA67D) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\r\n\t\t(0xA69E <= code && code <= 0xA69F) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\r\n\t\t(0xA6F0 <= code && code <= 0xA6F1) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\r\n\t\t0xA802 == code || // Mn SYLOTI NAGRI SIGN DVISVARA\r\n\t\t0xA806 == code || // Mn SYLOTI NAGRI SIGN HASANTA\r\n\t\t0xA80B == code || // Mn SYLOTI NAGRI SIGN ANUSVARA\r\n\t\t(0xA825 <= code && code <= 0xA826) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\r\n\t\t(0xA8C4 <= code && code <= 0xA8C5) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\r\n\t\t(0xA8E0 <= code && code <= 0xA8F1) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\r\n\t\t(0xA926 <= code && code <= 0xA92D) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\r\n\t\t(0xA947 <= code && code <= 0xA951) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\r\n\t\t(0xA980 <= code && code <= 0xA982) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\r\n\t\t0xA9B3 == code || // Mn JAVANESE SIGN CECAK TELU\r\n\t\t(0xA9B6 <= code && code <= 0xA9B9) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\r\n\t\t0xA9BC == code || // Mn JAVANESE VOWEL SIGN PEPET\r\n\t\t0xA9E5 == code || // Mn MYANMAR SIGN SHAN SAW\r\n\t\t(0xAA29 <= code && code <= 0xAA2E) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\r\n\t\t(0xAA31 <= code && code <= 0xAA32) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\r\n\t\t(0xAA35 <= code && code <= 0xAA36) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\r\n\t\t0xAA43 == code || // Mn CHAM CONSONANT SIGN FINAL NG\r\n\t\t0xAA4C == code || // Mn CHAM CONSONANT SIGN FINAL M\r\n\t\t0xAA7C == code || // Mn MYANMAR SIGN TAI LAING TONE-2\r\n\t\t0xAAB0 == code || // Mn TAI VIET MAI KANG\r\n\t\t(0xAAB2 <= code && code <= 0xAAB4) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\r\n\t\t(0xAAB7 <= code && code <= 0xAAB8) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\r\n\t\t(0xAABE <= code && code <= 0xAABF) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\r\n\t\t0xAAC1 == code || // Mn TAI VIET TONE MAI THO\r\n\t\t(0xAAEC <= code && code <= 0xAAED) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\r\n\t\t0xAAF6 == code || // Mn MEETEI MAYEK VIRAMA\r\n\t\t0xABE5 == code || // Mn MEETEI MAYEK VOWEL SIGN ANAP\r\n\t\t0xABE8 == code || // Mn MEETEI MAYEK VOWEL SIGN UNAP\r\n\t\t0xABED == code || // Mn MEETEI MAYEK APUN IYEK\r\n\t\t0xFB1E == code || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\r\n\t\t(0xFE00 <= code && code <= 0xFE0F) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\r\n\t\t(0xFE20 <= code && code <= 0xFE2F) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\r\n\t\t(0xFF9E <= code && code <= 0xFF9F) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\r\n\t\t0x101FD == code || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\r\n\t\t0x102E0 == code || // Mn COPTIC EPACT THOUSANDS MARK\r\n\t\t(0x10376 <= code && code <= 0x1037A) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\r\n\t\t(0x10A01 <= code && code <= 0x10A03) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\r\n\t\t(0x10A05 <= code && code <= 0x10A06) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\r\n\t\t(0x10A0C <= code && code <= 0x10A0F) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\r\n\t\t(0x10A38 <= code && code <= 0x10A3A) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\r\n\t\t0x10A3F == code || // Mn KHAROSHTHI VIRAMA\r\n\t\t(0x10AE5 <= code && code <= 0x10AE6) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\r\n\t\t0x11001 == code || // Mn BRAHMI SIGN ANUSVARA\r\n\t\t(0x11038 <= code && code <= 0x11046) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\r\n\t\t(0x1107F <= code && code <= 0x11081) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\r\n\t\t(0x110B3 <= code && code <= 0x110B6) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\r\n\t\t(0x110B9 <= code && code <= 0x110BA) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\r\n\t\t(0x11100 <= code && code <= 0x11102) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\r\n\t\t(0x11127 <= code && code <= 0x1112B) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\r\n\t\t(0x1112D <= code && code <= 0x11134) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\r\n\t\t0x11173 == code || // Mn MAHAJANI SIGN NUKTA\r\n\t\t(0x11180 <= code && code <= 0x11181) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\r\n\t\t(0x111B6 <= code && code <= 0x111BE) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\r\n\t\t(0x111CA <= code && code <= 0x111CC) || // Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK\r\n\t\t(0x1122F <= code && code <= 0x11231) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\r\n\t\t0x11234 == code || // Mn KHOJKI SIGN ANUSVARA\r\n\t\t(0x11236 <= code && code <= 0x11237) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\r\n\t\t0x1123E == code || // Mn KHOJKI SIGN SUKUN\r\n\t\t0x112DF == code || // Mn KHUDAWADI SIGN ANUSVARA\r\n\t\t(0x112E3 <= code && code <= 0x112EA) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\r\n\t\t(0x11300 <= code && code <= 0x11301) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\r\n\t\t0x1133C == code || // Mn GRANTHA SIGN NUKTA\r\n\t\t0x1133E == code || // Mc GRANTHA VOWEL SIGN AA\r\n\t\t0x11340 == code || // Mn GRANTHA VOWEL SIGN II\r\n\t\t0x11357 == code || // Mc GRANTHA AU LENGTH MARK\r\n\t\t(0x11366 <= code && code <= 0x1136C) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\r\n\t\t(0x11370 <= code && code <= 0x11374) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\r\n\t\t(0x11438 <= code && code <= 0x1143F) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\r\n\t\t(0x11442 <= code && code <= 0x11444) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\r\n\t\t0x11446 == code || // Mn NEWA SIGN NUKTA\r\n\t\t0x114B0 == code || // Mc TIRHUTA VOWEL SIGN AA\r\n\t\t(0x114B3 <= code && code <= 0x114B8) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\r\n\t\t0x114BA == code || // Mn TIRHUTA VOWEL SIGN SHORT E\r\n\t\t0x114BD == code || // Mc TIRHUTA VOWEL SIGN SHORT O\r\n\t\t(0x114BF <= code && code <= 0x114C0) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\r\n\t\t(0x114C2 <= code && code <= 0x114C3) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\r\n\t\t0x115AF == code || // Mc SIDDHAM VOWEL SIGN AA\r\n\t\t(0x115B2 <= code && code <= 0x115B5) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\r\n\t\t(0x115BC <= code && code <= 0x115BD) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\r\n\t\t(0x115BF <= code && code <= 0x115C0) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\r\n\t\t(0x115DC <= code && code <= 0x115DD) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\r\n\t\t(0x11633 <= code && code <= 0x1163A) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\r\n\t\t0x1163D == code || // Mn MODI SIGN ANUSVARA\r\n\t\t(0x1163F <= code && code <= 0x11640) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\r\n\t\t0x116AB == code || // Mn TAKRI SIGN ANUSVARA\r\n\t\t0x116AD == code || // Mn TAKRI VOWEL SIGN AA\r\n\t\t(0x116B0 <= code && code <= 0x116B5) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\r\n\t\t0x116B7 == code || // Mn TAKRI SIGN NUKTA\r\n\t\t(0x1171D <= code && code <= 0x1171F) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\r\n\t\t(0x11722 <= code && code <= 0x11725) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\r\n\t\t(0x11727 <= code && code <= 0x1172B) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\r\n\t\t(0x11A01 <= code && code <= 0x11A06) || // Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O\r\n\t\t(0x11A09 <= code && code <= 0x11A0A) || // Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK\r\n\t\t(0x11A33 <= code && code <= 0x11A38) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\r\n\t\t(0x11A3B <= code && code <= 0x11A3E) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\r\n\t\t0x11A47 == code || // Mn ZANABAZAR SQUARE SUBJOINER\r\n\t\t(0x11A51 <= code && code <= 0x11A56) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\r\n\t\t(0x11A59 <= code && code <= 0x11A5B) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\r\n\t\t(0x11A8A <= code && code <= 0x11A96) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\r\n\t\t(0x11A98 <= code && code <= 0x11A99) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\r\n\t\t(0x11C30 <= code && code <= 0x11C36) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\r\n\t\t(0x11C38 <= code && code <= 0x11C3D) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\r\n\t\t0x11C3F == code || // Mn BHAIKSUKI SIGN VIRAMA\r\n\t\t(0x11C92 <= code && code <= 0x11CA7) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\r\n\t\t(0x11CAA <= code && code <= 0x11CB0) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\r\n\t\t(0x11CB2 <= code && code <= 0x11CB3) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\r\n\t\t(0x11CB5 <= code && code <= 0x11CB6) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\r\n\t\t(0x11D31 <= code && code <= 0x11D36) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\r\n\t\t0x11D3A == code || // Mn MASARAM GONDI VOWEL SIGN E\r\n\t\t(0x11D3C <= code && code <= 0x11D3D) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\r\n\t\t(0x11D3F <= code && code <= 0x11D45) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\r\n\t\t0x11D47 == code || // Mn MASARAM GONDI RA-KARA\r\n\t\t(0x16AF0 <= code && code <= 0x16AF4) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\r\n\t\t(0x16B30 <= code && code <= 0x16B36) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\r\n\t\t(0x16F8F <= code && code <= 0x16F92) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\r\n\t\t(0x1BC9D <= code && code <= 0x1BC9E) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\r\n\t\t0x1D165 == code || // Mc MUSICAL SYMBOL COMBINING STEM\r\n\t\t(0x1D167 <= code && code <= 0x1D169) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\r\n\t\t(0x1D16E <= code && code <= 0x1D172) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\r\n\t\t(0x1D17B <= code && code <= 0x1D182) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\r\n\t\t(0x1D185 <= code && code <= 0x1D18B) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\r\n\t\t(0x1D1AA <= code && code <= 0x1D1AD) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\r\n\t\t(0x1D242 <= code && code <= 0x1D244) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\r\n\t\t(0x1DA00 <= code && code <= 0x1DA36) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\r\n\t\t(0x1DA3B <= code && code <= 0x1DA6C) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\r\n\t\t0x1DA75 == code || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\r\n\t\t0x1DA84 == code || // Mn SIGNWRITING LOCATION HEAD NECK\r\n\t\t(0x1DA9B <= code && code <= 0x1DA9F) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\r\n\t\t(0x1DAA1 <= code && code <= 0x1DAAF) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\r\n\t\t(0x1E000 <= code && code <= 0x1E006) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\r\n\t\t(0x1E008 <= code && code <= 0x1E018) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\r\n\t\t(0x1E01B <= code && code <= 0x1E021) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\r\n\t\t(0x1E023 <= code && code <= 0x1E024) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\r\n\t\t(0x1E026 <= code && code <= 0x1E02A) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\r\n\t\t(0x1E8D0 <= code && code <= 0x1E8D6) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\r\n\t\t(0x1E944 <= code && code <= 0x1E94A) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\r\n\t\t(0xE0020 <= code && code <= 0xE007F) || // Cf [96] TAG SPACE..CANCEL TAG\r\n\t\t(0xE0100 <= code && code <= 0xE01EF) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\r\n\t\t){\r\n\t\t\treturn Extend;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x1F1E6 <= code && code <= 0x1F1FF) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\r\n\t\t){\r\n\t\t\treturn Regional_Indicator;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x0903 == code || // Mc DEVANAGARI SIGN VISARGA\r\n\t\t0x093B == code || // Mc DEVANAGARI VOWEL SIGN OOE\r\n\t\t(0x093E <= code && code <= 0x0940) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\r\n\t\t(0x0949 <= code && code <= 0x094C) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\r\n\t\t(0x094E <= code && code <= 0x094F) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\r\n\t\t(0x0982 <= code && code <= 0x0983) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\r\n\t\t(0x09BF <= code && code <= 0x09C0) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\r\n\t\t(0x09C7 <= code && code <= 0x09C8) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\r\n\t\t(0x09CB <= code && code <= 0x09CC) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\r\n\t\t0x0A03 == code || // Mc GURMUKHI SIGN VISARGA\r\n\t\t(0x0A3E <= code && code <= 0x0A40) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\r\n\t\t0x0A83 == code || // Mc GUJARATI SIGN VISARGA\r\n\t\t(0x0ABE <= code && code <= 0x0AC0) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\r\n\t\t0x0AC9 == code || // Mc GUJARATI VOWEL SIGN CANDRA O\r\n\t\t(0x0ACB <= code && code <= 0x0ACC) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\r\n\t\t(0x0B02 <= code && code <= 0x0B03) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\r\n\t\t0x0B40 == code || // Mc ORIYA VOWEL SIGN II\r\n\t\t(0x0B47 <= code && code <= 0x0B48) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\r\n\t\t(0x0B4B <= code && code <= 0x0B4C) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\r\n\t\t0x0BBF == code || // Mc TAMIL VOWEL SIGN I\r\n\t\t(0x0BC1 <= code && code <= 0x0BC2) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\r\n\t\t(0x0BC6 <= code && code <= 0x0BC8) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\r\n\t\t(0x0BCA <= code && code <= 0x0BCC) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\r\n\t\t(0x0C01 <= code && code <= 0x0C03) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\r\n\t\t(0x0C41 <= code && code <= 0x0C44) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\r\n\t\t(0x0C82 <= code && code <= 0x0C83) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\r\n\t\t0x0CBE == code || // Mc KANNADA VOWEL SIGN AA\r\n\t\t(0x0CC0 <= code && code <= 0x0CC1) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\r\n\t\t(0x0CC3 <= code && code <= 0x0CC4) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\r\n\t\t(0x0CC7 <= code && code <= 0x0CC8) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\r\n\t\t(0x0CCA <= code && code <= 0x0CCB) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\r\n\t\t(0x0D02 <= code && code <= 0x0D03) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\r\n\t\t(0x0D3F <= code && code <= 0x0D40) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\r\n\t\t(0x0D46 <= code && code <= 0x0D48) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\r\n\t\t(0x0D4A <= code && code <= 0x0D4C) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\r\n\t\t(0x0D82 <= code && code <= 0x0D83) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\r\n\t\t(0x0DD0 <= code && code <= 0x0DD1) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\r\n\t\t(0x0DD8 <= code && code <= 0x0DDE) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\r\n\t\t(0x0DF2 <= code && code <= 0x0DF3) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\r\n\t\t0x0E33 == code || // Lo THAI CHARACTER SARA AM\r\n\t\t0x0EB3 == code || // Lo LAO VOWEL SIGN AM\r\n\t\t(0x0F3E <= code && code <= 0x0F3F) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\r\n\t\t0x0F7F == code || // Mc TIBETAN SIGN RNAM BCAD\r\n\t\t0x1031 == code || // Mc MYANMAR VOWEL SIGN E\r\n\t\t(0x103B <= code && code <= 0x103C) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\r\n\t\t(0x1056 <= code && code <= 0x1057) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\r\n\t\t0x1084 == code || // Mc MYANMAR VOWEL SIGN SHAN E\r\n\t\t0x17B6 == code || // Mc KHMER VOWEL SIGN AA\r\n\t\t(0x17BE <= code && code <= 0x17C5) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\r\n\t\t(0x17C7 <= code && code <= 0x17C8) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\r\n\t\t(0x1923 <= code && code <= 0x1926) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\r\n\t\t(0x1929 <= code && code <= 0x192B) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\r\n\t\t(0x1930 <= code && code <= 0x1931) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\r\n\t\t(0x1933 <= code && code <= 0x1938) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\r\n\t\t(0x1A19 <= code && code <= 0x1A1A) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\r\n\t\t0x1A55 == code || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\r\n\t\t0x1A57 == code || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\r\n\t\t(0x1A6D <= code && code <= 0x1A72) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\r\n\t\t0x1B04 == code || // Mc BALINESE SIGN BISAH\r\n\t\t0x1B35 == code || // Mc BALINESE VOWEL SIGN TEDUNG\r\n\t\t0x1B3B == code || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\r\n\t\t(0x1B3D <= code && code <= 0x1B41) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\r\n\t\t(0x1B43 <= code && code <= 0x1B44) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\r\n\t\t0x1B82 == code || // Mc SUNDANESE SIGN PANGWISAD\r\n\t\t0x1BA1 == code || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\r\n\t\t(0x1BA6 <= code && code <= 0x1BA7) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\r\n\t\t0x1BAA == code || // Mc SUNDANESE SIGN PAMAAEH\r\n\t\t0x1BE7 == code || // Mc BATAK VOWEL SIGN E\r\n\t\t(0x1BEA <= code && code <= 0x1BEC) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\r\n\t\t0x1BEE == code || // Mc BATAK VOWEL SIGN U\r\n\t\t(0x1BF2 <= code && code <= 0x1BF3) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\r\n\t\t(0x1C24 <= code && code <= 0x1C2B) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\r\n\t\t(0x1C34 <= code && code <= 0x1C35) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\r\n\t\t0x1CE1 == code || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\r\n\t\t(0x1CF2 <= code && code <= 0x1CF3) || // Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA\r\n\t\t0x1CF7 == code || // Mc VEDIC SIGN ATIKRAMA\r\n\t\t(0xA823 <= code && code <= 0xA824) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\r\n\t\t0xA827 == code || // Mc SYLOTI NAGRI VOWEL SIGN OO\r\n\t\t(0xA880 <= code && code <= 0xA881) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\r\n\t\t(0xA8B4 <= code && code <= 0xA8C3) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\r\n\t\t(0xA952 <= code && code <= 0xA953) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\r\n\t\t0xA983 == code || // Mc JAVANESE SIGN WIGNYAN\r\n\t\t(0xA9B4 <= code && code <= 0xA9B5) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\r\n\t\t(0xA9BA <= code && code <= 0xA9BB) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\r\n\t\t(0xA9BD <= code && code <= 0xA9C0) || // Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON\r\n\t\t(0xAA2F <= code && code <= 0xAA30) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\r\n\t\t(0xAA33 <= code && code <= 0xAA34) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\r\n\t\t0xAA4D == code || // Mc CHAM CONSONANT SIGN FINAL H\r\n\t\t0xAAEB == code || // Mc MEETEI MAYEK VOWEL SIGN II\r\n\t\t(0xAAEE <= code && code <= 0xAAEF) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\r\n\t\t0xAAF5 == code || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\r\n\t\t(0xABE3 <= code && code <= 0xABE4) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\r\n\t\t(0xABE6 <= code && code <= 0xABE7) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\r\n\t\t(0xABE9 <= code && code <= 0xABEA) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\r\n\t\t0xABEC == code || // Mc MEETEI MAYEK LUM IYEK\r\n\t\t0x11000 == code || // Mc BRAHMI SIGN CANDRABINDU\r\n\t\t0x11002 == code || // Mc BRAHMI SIGN VISARGA\r\n\t\t0x11082 == code || // Mc KAITHI SIGN VISARGA\r\n\t\t(0x110B0 <= code && code <= 0x110B2) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\r\n\t\t(0x110B7 <= code && code <= 0x110B8) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\r\n\t\t0x1112C == code || // Mc CHAKMA VOWEL SIGN E\r\n\t\t0x11182 == code || // Mc SHARADA SIGN VISARGA\r\n\t\t(0x111B3 <= code && code <= 0x111B5) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\r\n\t\t(0x111BF <= code && code <= 0x111C0) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\r\n\t\t(0x1122C <= code && code <= 0x1122E) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\r\n\t\t(0x11232 <= code && code <= 0x11233) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\r\n\t\t0x11235 == code || // Mc KHOJKI SIGN VIRAMA\r\n\t\t(0x112E0 <= code && code <= 0x112E2) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\r\n\t\t(0x11302 <= code && code <= 0x11303) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\r\n\t\t0x1133F == code || // Mc GRANTHA VOWEL SIGN I\r\n\t\t(0x11341 <= code && code <= 0x11344) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\r\n\t\t(0x11347 <= code && code <= 0x11348) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\r\n\t\t(0x1134B <= code && code <= 0x1134D) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\r\n\t\t(0x11362 <= code && code <= 0x11363) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\r\n\t\t(0x11435 <= code && code <= 0x11437) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\r\n\t\t(0x11440 <= code && code <= 0x11441) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\r\n\t\t0x11445 == code || // Mc NEWA SIGN VISARGA\r\n\t\t(0x114B1 <= code && code <= 0x114B2) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\r\n\t\t0x114B9 == code || // Mc TIRHUTA VOWEL SIGN E\r\n\t\t(0x114BB <= code && code <= 0x114BC) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\r\n\t\t0x114BE == code || // Mc TIRHUTA VOWEL SIGN AU\r\n\t\t0x114C1 == code || // Mc TIRHUTA SIGN VISARGA\r\n\t\t(0x115B0 <= code && code <= 0x115B1) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\r\n\t\t(0x115B8 <= code && code <= 0x115BB) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\r\n\t\t0x115BE == code || // Mc SIDDHAM SIGN VISARGA\r\n\t\t(0x11630 <= code && code <= 0x11632) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\r\n\t\t(0x1163B <= code && code <= 0x1163C) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\r\n\t\t0x1163E == code || // Mc MODI SIGN VISARGA\r\n\t\t0x116AC == code || // Mc TAKRI SIGN VISARGA\r\n\t\t(0x116AE <= code && code <= 0x116AF) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\r\n\t\t0x116B6 == code || // Mc TAKRI SIGN VIRAMA\r\n\t\t(0x11720 <= code && code <= 0x11721) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\r\n\t\t0x11726 == code || // Mc AHOM VOWEL SIGN E\r\n\t\t(0x11A07 <= code && code <= 0x11A08) || // Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU\r\n\t\t0x11A39 == code || // Mc ZANABAZAR SQUARE SIGN VISARGA\r\n\t\t(0x11A57 <= code && code <= 0x11A58) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\r\n\t\t0x11A97 == code || // Mc SOYOMBO SIGN VISARGA\r\n\t\t0x11C2F == code || // Mc BHAIKSUKI VOWEL SIGN AA\r\n\t\t0x11C3E == code || // Mc BHAIKSUKI SIGN VISARGA\r\n\t\t0x11CA9 == code || // Mc MARCHEN SUBJOINED LETTER YA\r\n\t\t0x11CB1 == code || // Mc MARCHEN VOWEL SIGN I\r\n\t\t0x11CB4 == code || // Mc MARCHEN VOWEL SIGN O\r\n\t\t(0x16F51 <= code && code <= 0x16F7E) || // Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG\r\n\t\t0x1D166 == code || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\r\n\t\t0x1D16D == code // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\r\n\t\t){\r\n\t\t\treturn SpacingMark;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x1100 <= code && code <= 0x115F) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\r\n\t\t(0xA960 <= code && code <= 0xA97C) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\r\n\t\t){\r\n\t\t\treturn L;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1160 <= code && code <= 0x11A7) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\r\n\t\t(0xD7B0 <= code && code <= 0xD7C6) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\r\n\t\t){\r\n\t\t\treturn V;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x11A8 <= code && code <= 0x11FF) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\r\n\t\t(0xD7CB <= code && code <= 0xD7FB) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\r\n\t\t){\r\n\t\t\treturn T;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0xAC00 == code || // Lo HANGUL SYLLABLE GA\r\n\t\t0xAC1C == code || // Lo HANGUL SYLLABLE GAE\r\n\t\t0xAC38 == code || // Lo HANGUL SYLLABLE GYA\r\n\t\t0xAC54 == code || // Lo HANGUL SYLLABLE GYAE\r\n\t\t0xAC70 == code || // Lo HANGUL SYLLABLE GEO\r\n\t\t0xAC8C == code || // Lo HANGUL SYLLABLE GE\r\n\t\t0xACA8 == code || // Lo HANGUL SYLLABLE GYEO\r\n\t\t0xACC4 == code || // Lo HANGUL SYLLABLE GYE\r\n\t\t0xACE0 == code || // Lo HANGUL SYLLABLE GO\r\n\t\t0xACFC == code || // Lo HANGUL SYLLABLE GWA\r\n\t\t0xAD18 == code || // Lo HANGUL SYLLABLE GWAE\r\n\t\t0xAD34 == code || // Lo HANGUL SYLLABLE GOE\r\n\t\t0xAD50 == code || // Lo HANGUL SYLLABLE GYO\r\n\t\t0xAD6C == code || // Lo HANGUL SYLLABLE GU\r\n\t\t0xAD88 == code || // Lo HANGUL SYLLABLE GWEO\r\n\t\t0xADA4 == code || // Lo HANGUL SYLLABLE GWE\r\n\t\t0xADC0 == code || // Lo HANGUL SYLLABLE GWI\r\n\t\t0xADDC == code || // Lo HANGUL SYLLABLE GYU\r\n\t\t0xADF8 == code || // Lo HANGUL SYLLABLE GEU\r\n\t\t0xAE14 == code || // Lo HANGUL SYLLABLE GYI\r\n\t\t0xAE30 == code || // Lo HANGUL SYLLABLE GI\r\n\t\t0xAE4C == code || // Lo HANGUL SYLLABLE GGA\r\n\t\t0xAE68 == code || // Lo HANGUL SYLLABLE GGAE\r\n\t\t0xAE84 == code || // Lo HANGUL SYLLABLE GGYA\r\n\t\t0xAEA0 == code || // Lo HANGUL SYLLABLE GGYAE\r\n\t\t0xAEBC == code || // Lo HANGUL SYLLABLE GGEO\r\n\t\t0xAED8 == code || // Lo HANGUL SYLLABLE GGE\r\n\t\t0xAEF4 == code || // Lo HANGUL SYLLABLE GGYEO\r\n\t\t0xAF10 == code || // Lo HANGUL SYLLABLE GGYE\r\n\t\t0xAF2C == code || // Lo HANGUL SYLLABLE GGO\r\n\t\t0xAF48 == code || // Lo HANGUL SYLLABLE GGWA\r\n\t\t0xAF64 == code || // Lo HANGUL SYLLABLE GGWAE\r\n\t\t0xAF80 == code || // Lo HANGUL SYLLABLE GGOE\r\n\t\t0xAF9C == code || // Lo HANGUL SYLLABLE GGYO\r\n\t\t0xAFB8 == code || // Lo HANGUL SYLLABLE GGU\r\n\t\t0xAFD4 == code || // Lo HANGUL SYLLABLE GGWEO\r\n\t\t0xAFF0 == code || // Lo HANGUL SYLLABLE GGWE\r\n\t\t0xB00C == code || // Lo HANGUL SYLLABLE GGWI\r\n\t\t0xB028 == code || // Lo HANGUL SYLLABLE GGYU\r\n\t\t0xB044 == code || // Lo HANGUL SYLLABLE GGEU\r\n\t\t0xB060 == code || // Lo HANGUL SYLLABLE GGYI\r\n\t\t0xB07C == code || // Lo HANGUL SYLLABLE GGI\r\n\t\t0xB098 == code || // Lo HANGUL SYLLABLE NA\r\n\t\t0xB0B4 == code || // Lo HANGUL SYLLABLE NAE\r\n\t\t0xB0D0 == code || // Lo HANGUL SYLLABLE NYA\r\n\t\t0xB0EC == code || // Lo HANGUL SYLLABLE NYAE\r\n\t\t0xB108 == code || // Lo HANGUL SYLLABLE NEO\r\n\t\t0xB124 == code || // Lo HANGUL SYLLABLE NE\r\n\t\t0xB140 == code || // Lo HANGUL SYLLABLE NYEO\r\n\t\t0xB15C == code || // Lo HANGUL SYLLABLE NYE\r\n\t\t0xB178 == code || // Lo HANGUL SYLLABLE NO\r\n\t\t0xB194 == code || // Lo HANGUL SYLLABLE NWA\r\n\t\t0xB1B0 == code || // Lo HANGUL SYLLABLE NWAE\r\n\t\t0xB1CC == code || // Lo HANGUL SYLLABLE NOE\r\n\t\t0xB1E8 == code || // Lo HANGUL SYLLABLE NYO\r\n\t\t0xB204 == code || // Lo HANGUL SYLLABLE NU\r\n\t\t0xB220 == code || // Lo HANGUL SYLLABLE NWEO\r\n\t\t0xB23C == code || // Lo HANGUL SYLLABLE NWE\r\n\t\t0xB258 == code || // Lo HANGUL SYLLABLE NWI\r\n\t\t0xB274 == code || // Lo HANGUL SYLLABLE NYU\r\n\t\t0xB290 == code || // Lo HANGUL SYLLABLE NEU\r\n\t\t0xB2AC == code || // Lo HANGUL SYLLABLE NYI\r\n\t\t0xB2C8 == code || // Lo HANGUL SYLLABLE NI\r\n\t\t0xB2E4 == code || // Lo HANGUL SYLLABLE DA\r\n\t\t0xB300 == code || // Lo HANGUL SYLLABLE DAE\r\n\t\t0xB31C == code || // Lo HANGUL SYLLABLE DYA\r\n\t\t0xB338 == code || // Lo HANGUL SYLLABLE DYAE\r\n\t\t0xB354 == code || // Lo HANGUL SYLLABLE DEO\r\n\t\t0xB370 == code || // Lo HANGUL SYLLABLE DE\r\n\t\t0xB38C == code || // Lo HANGUL SYLLABLE DYEO\r\n\t\t0xB3A8 == code || // Lo HANGUL SYLLABLE DYE\r\n\t\t0xB3C4 == code || // Lo HANGUL SYLLABLE DO\r\n\t\t0xB3E0 == code || // Lo HANGUL SYLLABLE DWA\r\n\t\t0xB3FC == code || // Lo HANGUL SYLLABLE DWAE\r\n\t\t0xB418 == code || // Lo HANGUL SYLLABLE DOE\r\n\t\t0xB434 == code || // Lo HANGUL SYLLABLE DYO\r\n\t\t0xB450 == code || // Lo HANGUL SYLLABLE DU\r\n\t\t0xB46C == code || // Lo HANGUL SYLLABLE DWEO\r\n\t\t0xB488 == code || // Lo HANGUL SYLLABLE DWE\r\n\t\t0xB4A4 == code || // Lo HANGUL SYLLABLE DWI\r\n\t\t0xB4C0 == code || // Lo HANGUL SYLLABLE DYU\r\n\t\t0xB4DC == code || // Lo HANGUL SYLLABLE DEU\r\n\t\t0xB4F8 == code || // Lo HANGUL SYLLABLE DYI\r\n\t\t0xB514 == code || // Lo HANGUL SYLLABLE DI\r\n\t\t0xB530 == code || // Lo HANGUL SYLLABLE DDA\r\n\t\t0xB54C == code || // Lo HANGUL SYLLABLE DDAE\r\n\t\t0xB568 == code || // Lo HANGUL SYLLABLE DDYA\r\n\t\t0xB584 == code || // Lo HANGUL SYLLABLE DDYAE\r\n\t\t0xB5A0 == code || // Lo HANGUL SYLLABLE DDEO\r\n\t\t0xB5BC == code || // Lo HANGUL SYLLABLE DDE\r\n\t\t0xB5D8 == code || // Lo HANGUL SYLLABLE DDYEO\r\n\t\t0xB5F4 == code || // Lo HANGUL SYLLABLE DDYE\r\n\t\t0xB610 == code || // Lo HANGUL SYLLABLE DDO\r\n\t\t0xB62C == code || // Lo HANGUL SYLLABLE DDWA\r\n\t\t0xB648 == code || // Lo HANGUL SYLLABLE DDWAE\r\n\t\t0xB664 == code || // Lo HANGUL SYLLABLE DDOE\r\n\t\t0xB680 == code || // Lo HANGUL SYLLABLE DDYO\r\n\t\t0xB69C == code || // Lo HANGUL SYLLABLE DDU\r\n\t\t0xB6B8 == code || // Lo HANGUL SYLLABLE DDWEO\r\n\t\t0xB6D4 == code || // Lo HANGUL SYLLABLE DDWE\r\n\t\t0xB6F0 == code || // Lo HANGUL SYLLABLE DDWI\r\n\t\t0xB70C == code || // Lo HANGUL SYLLABLE DDYU\r\n\t\t0xB728 == code || // Lo HANGUL SYLLABLE DDEU\r\n\t\t0xB744 == code || // Lo HANGUL SYLLABLE DDYI\r\n\t\t0xB760 == code || // Lo HANGUL SYLLABLE DDI\r\n\t\t0xB77C == code || // Lo HANGUL SYLLABLE RA\r\n\t\t0xB798 == code || // Lo HANGUL SYLLABLE RAE\r\n\t\t0xB7B4 == code || // Lo HANGUL SYLLABLE RYA\r\n\t\t0xB7D0 == code || // Lo HANGUL SYLLABLE RYAE\r\n\t\t0xB7EC == code || // Lo HANGUL SYLLABLE REO\r\n\t\t0xB808 == code || // Lo HANGUL SYLLABLE RE\r\n\t\t0xB824 == code || // Lo HANGUL SYLLABLE RYEO\r\n\t\t0xB840 == code || // Lo HANGUL SYLLABLE RYE\r\n\t\t0xB85C == code || // Lo HANGUL SYLLABLE RO\r\n\t\t0xB878 == code || // Lo HANGUL SYLLABLE RWA\r\n\t\t0xB894 == code || // Lo HANGUL SYLLABLE RWAE\r\n\t\t0xB8B0 == code || // Lo HANGUL SYLLABLE ROE\r\n\t\t0xB8CC == code || // Lo HANGUL SYLLABLE RYO\r\n\t\t0xB8E8 == code || // Lo HANGUL SYLLABLE RU\r\n\t\t0xB904 == code || // Lo HANGUL SYLLABLE RWEO\r\n\t\t0xB920 == code || // Lo HANGUL SYLLABLE RWE\r\n\t\t0xB93C == code || // Lo HANGUL SYLLABLE RWI\r\n\t\t0xB958 == code || // Lo HANGUL SYLLABLE RYU\r\n\t\t0xB974 == code || // Lo HANGUL SYLLABLE REU\r\n\t\t0xB990 == code || // Lo HANGUL SYLLABLE RYI\r\n\t\t0xB9AC == code || // Lo HANGUL SYLLABLE RI\r\n\t\t0xB9C8 == code || // Lo HANGUL SYLLABLE MA\r\n\t\t0xB9E4 == code || // Lo HANGUL SYLLABLE MAE\r\n\t\t0xBA00 == code || // Lo HANGUL SYLLABLE MYA\r\n\t\t0xBA1C == code || // Lo HANGUL SYLLABLE MYAE\r\n\t\t0xBA38 == code || // Lo HANGUL SYLLABLE MEO\r\n\t\t0xBA54 == code || // Lo HANGUL SYLLABLE ME\r\n\t\t0xBA70 == code || // Lo HANGUL SYLLABLE MYEO\r\n\t\t0xBA8C == code || // Lo HANGUL SYLLABLE MYE\r\n\t\t0xBAA8 == code || // Lo HANGUL SYLLABLE MO\r\n\t\t0xBAC4 == code || // Lo HANGUL SYLLABLE MWA\r\n\t\t0xBAE0 == code || // Lo HANGUL SYLLABLE MWAE\r\n\t\t0xBAFC == code || // Lo HANGUL SYLLABLE MOE\r\n\t\t0xBB18 == code || // Lo HANGUL SYLLABLE MYO\r\n\t\t0xBB34 == code || // Lo HANGUL SYLLABLE MU\r\n\t\t0xBB50 == code || // Lo HANGUL SYLLABLE MWEO\r\n\t\t0xBB6C == code || // Lo HANGUL SYLLABLE MWE\r\n\t\t0xBB88 == code || // Lo HANGUL SYLLABLE MWI\r\n\t\t0xBBA4 == code || // Lo HANGUL SYLLABLE MYU\r\n\t\t0xBBC0 == code || // Lo HANGUL SYLLABLE MEU\r\n\t\t0xBBDC == code || // Lo HANGUL SYLLABLE MYI\r\n\t\t0xBBF8 == code || // Lo HANGUL SYLLABLE MI\r\n\t\t0xBC14 == code || // Lo HANGUL SYLLABLE BA\r\n\t\t0xBC30 == code || // Lo HANGUL SYLLABLE BAE\r\n\t\t0xBC4C == code || // Lo HANGUL SYLLABLE BYA\r\n\t\t0xBC68 == code || // Lo HANGUL SYLLABLE BYAE\r\n\t\t0xBC84 == code || // Lo HANGUL SYLLABLE BEO\r\n\t\t0xBCA0 == code || // Lo HANGUL SYLLABLE BE\r\n\t\t0xBCBC == code || // Lo HANGUL SYLLABLE BYEO\r\n\t\t0xBCD8 == code || // Lo HANGUL SYLLABLE BYE\r\n\t\t0xBCF4 == code || // Lo HANGUL SYLLABLE BO\r\n\t\t0xBD10 == code || // Lo HANGUL SYLLABLE BWA\r\n\t\t0xBD2C == code || // Lo HANGUL SYLLABLE BWAE\r\n\t\t0xBD48 == code || // Lo HANGUL SYLLABLE BOE\r\n\t\t0xBD64 == code || // Lo HANGUL SYLLABLE BYO\r\n\t\t0xBD80 == code || // Lo HANGUL SYLLABLE BU\r\n\t\t0xBD9C == code || // Lo HANGUL SYLLABLE BWEO\r\n\t\t0xBDB8 == code || // Lo HANGUL SYLLABLE BWE\r\n\t\t0xBDD4 == code || // Lo HANGUL SYLLABLE BWI\r\n\t\t0xBDF0 == code || // Lo HANGUL SYLLABLE BYU\r\n\t\t0xBE0C == code || // Lo HANGUL SYLLABLE BEU\r\n\t\t0xBE28 == code || // Lo HANGUL SYLLABLE BYI\r\n\t\t0xBE44 == code || // Lo HANGUL SYLLABLE BI\r\n\t\t0xBE60 == code || // Lo HANGUL SYLLABLE BBA\r\n\t\t0xBE7C == code || // Lo HANGUL SYLLABLE BBAE\r\n\t\t0xBE98 == code || // Lo HANGUL SYLLABLE BBYA\r\n\t\t0xBEB4 == code || // Lo HANGUL SYLLABLE BBYAE\r\n\t\t0xBED0 == code || // Lo HANGUL SYLLABLE BBEO\r\n\t\t0xBEEC == code || // Lo HANGUL SYLLABLE BBE\r\n\t\t0xBF08 == code || // Lo HANGUL SYLLABLE BBYEO\r\n\t\t0xBF24 == code || // Lo HANGUL SYLLABLE BBYE\r\n\t\t0xBF40 == code || // Lo HANGUL SYLLABLE BBO\r\n\t\t0xBF5C == code || // Lo HANGUL SYLLABLE BBWA\r\n\t\t0xBF78 == code || // Lo HANGUL SYLLABLE BBWAE\r\n\t\t0xBF94 == code || // Lo HANGUL SYLLABLE BBOE\r\n\t\t0xBFB0 == code || // Lo HANGUL SYLLABLE BBYO\r\n\t\t0xBFCC == code || // Lo HANGUL SYLLABLE BBU\r\n\t\t0xBFE8 == code || // Lo HANGUL SYLLABLE BBWEO\r\n\t\t0xC004 == code || // Lo HANGUL SYLLABLE BBWE\r\n\t\t0xC020 == code || // Lo HANGUL SYLLABLE BBWI\r\n\t\t0xC03C == code || // Lo HANGUL SYLLABLE BBYU\r\n\t\t0xC058 == code || // Lo HANGUL SYLLABLE BBEU\r\n\t\t0xC074 == code || // Lo HANGUL SYLLABLE BBYI\r\n\t\t0xC090 == code || // Lo HANGUL SYLLABLE BBI\r\n\t\t0xC0AC == code || // Lo HANGUL SYLLABLE SA\r\n\t\t0xC0C8 == code || // Lo HANGUL SYLLABLE SAE\r\n\t\t0xC0E4 == code || // Lo HANGUL SYLLABLE SYA\r\n\t\t0xC100 == code || // Lo HANGUL SYLLABLE SYAE\r\n\t\t0xC11C == code || // Lo HANGUL SYLLABLE SEO\r\n\t\t0xC138 == code || // Lo HANGUL SYLLABLE SE\r\n\t\t0xC154 == code || // Lo HANGUL SYLLABLE SYEO\r\n\t\t0xC170 == code || // Lo HANGUL SYLLABLE SYE\r\n\t\t0xC18C == code || // Lo HANGUL SYLLABLE SO\r\n\t\t0xC1A8 == code || // Lo HANGUL SYLLABLE SWA\r\n\t\t0xC1C4 == code || // Lo HANGUL SYLLABLE SWAE\r\n\t\t0xC1E0 == code || // Lo HANGUL SYLLABLE SOE\r\n\t\t0xC1FC == code || // Lo HANGUL SYLLABLE SYO\r\n\t\t0xC218 == code || // Lo HANGUL SYLLABLE SU\r\n\t\t0xC234 == code || // Lo HANGUL SYLLABLE SWEO\r\n\t\t0xC250 == code || // Lo HANGUL SYLLABLE SWE\r\n\t\t0xC26C == code || // Lo HANGUL SYLLABLE SWI\r\n\t\t0xC288 == code || // Lo HANGUL SYLLABLE SYU\r\n\t\t0xC2A4 == code || // Lo HANGUL SYLLABLE SEU\r\n\t\t0xC2C0 == code || // Lo HANGUL SYLLABLE SYI\r\n\t\t0xC2DC == code || // Lo HANGUL SYLLABLE SI\r\n\t\t0xC2F8 == code || // Lo HANGUL SYLLABLE SSA\r\n\t\t0xC314 == code || // Lo HANGUL SYLLABLE SSAE\r\n\t\t0xC330 == code || // Lo HANGUL SYLLABLE SSYA\r\n\t\t0xC34C == code || // Lo HANGUL SYLLABLE SSYAE\r\n\t\t0xC368 == code || // Lo HANGUL SYLLABLE SSEO\r\n\t\t0xC384 == code || // Lo HANGUL SYLLABLE SSE\r\n\t\t0xC3A0 == code || // Lo HANGUL SYLLABLE SSYEO\r\n\t\t0xC3BC == code || // Lo HANGUL SYLLABLE SSYE\r\n\t\t0xC3D8 == code || // Lo HANGUL SYLLABLE SSO\r\n\t\t0xC3F4 == code || // Lo HANGUL SYLLABLE SSWA\r\n\t\t0xC410 == code || // Lo HANGUL SYLLABLE SSWAE\r\n\t\t0xC42C == code || // Lo HANGUL SYLLABLE SSOE\r\n\t\t0xC448 == code || // Lo HANGUL SYLLABLE SSYO\r\n\t\t0xC464 == code || // Lo HANGUL SYLLABLE SSU\r\n\t\t0xC480 == code || // Lo HANGUL SYLLABLE SSWEO\r\n\t\t0xC49C == code || // Lo HANGUL SYLLABLE SSWE\r\n\t\t0xC4B8 == code || // Lo HANGUL SYLLABLE SSWI\r\n\t\t0xC4D4 == code || // Lo HANGUL SYLLABLE SSYU\r\n\t\t0xC4F0 == code || // Lo HANGUL SYLLABLE SSEU\r\n\t\t0xC50C == code || // Lo HANGUL SYLLABLE SSYI\r\n\t\t0xC528 == code || // Lo HANGUL SYLLABLE SSI\r\n\t\t0xC544 == code || // Lo HANGUL SYLLABLE A\r\n\t\t0xC560 == code || // Lo HANGUL SYLLABLE AE\r\n\t\t0xC57C == code || // Lo HANGUL SYLLABLE YA\r\n\t\t0xC598 == code || // Lo HANGUL SYLLABLE YAE\r\n\t\t0xC5B4 == code || // Lo HANGUL SYLLABLE EO\r\n\t\t0xC5D0 == code || // Lo HANGUL SYLLABLE E\r\n\t\t0xC5EC == code || // Lo HANGUL SYLLABLE YEO\r\n\t\t0xC608 == code || // Lo HANGUL SYLLABLE YE\r\n\t\t0xC624 == code || // Lo HANGUL SYLLABLE O\r\n\t\t0xC640 == code || // Lo HANGUL SYLLABLE WA\r\n\t\t0xC65C == code || // Lo HANGUL SYLLABLE WAE\r\n\t\t0xC678 == code || // Lo HANGUL SYLLABLE OE\r\n\t\t0xC694 == code || // Lo HANGUL SYLLABLE YO\r\n\t\t0xC6B0 == code || // Lo HANGUL SYLLABLE U\r\n\t\t0xC6CC == code || // Lo HANGUL SYLLABLE WEO\r\n\t\t0xC6E8 == code || // Lo HANGUL SYLLABLE WE\r\n\t\t0xC704 == code || // Lo HANGUL SYLLABLE WI\r\n\t\t0xC720 == code || // Lo HANGUL SYLLABLE YU\r\n\t\t0xC73C == code || // Lo HANGUL SYLLABLE EU\r\n\t\t0xC758 == code || // Lo HANGUL SYLLABLE YI\r\n\t\t0xC774 == code || // Lo HANGUL SYLLABLE I\r\n\t\t0xC790 == code || // Lo HANGUL SYLLABLE JA\r\n\t\t0xC7AC == code || // Lo HANGUL SYLLABLE JAE\r\n\t\t0xC7C8 == code || // Lo HANGUL SYLLABLE JYA\r\n\t\t0xC7E4 == code || // Lo HANGUL SYLLABLE JYAE\r\n\t\t0xC800 == code || // Lo HANGUL SYLLABLE JEO\r\n\t\t0xC81C == code || // Lo HANGUL SYLLABLE JE\r\n\t\t0xC838 == code || // Lo HANGUL SYLLABLE JYEO\r\n\t\t0xC854 == code || // Lo HANGUL SYLLABLE JYE\r\n\t\t0xC870 == code || // Lo HANGUL SYLLABLE JO\r\n\t\t0xC88C == code || // Lo HANGUL SYLLABLE JWA\r\n\t\t0xC8A8 == code || // Lo HANGUL SYLLABLE JWAE\r\n\t\t0xC8C4 == code || // Lo HANGUL SYLLABLE JOE\r\n\t\t0xC8E0 == code || // Lo HANGUL SYLLABLE JYO\r\n\t\t0xC8FC == code || // Lo HANGUL SYLLABLE JU\r\n\t\t0xC918 == code || // Lo HANGUL SYLLABLE JWEO\r\n\t\t0xC934 == code || // Lo HANGUL SYLLABLE JWE\r\n\t\t0xC950 == code || // Lo HANGUL SYLLABLE JWI\r\n\t\t0xC96C == code || // Lo HANGUL SYLLABLE JYU\r\n\t\t0xC988 == code || // Lo HANGUL SYLLABLE JEU\r\n\t\t0xC9A4 == code || // Lo HANGUL SYLLABLE JYI\r\n\t\t0xC9C0 == code || // Lo HANGUL SYLLABLE JI\r\n\t\t0xC9DC == code || // Lo HANGUL SYLLABLE JJA\r\n\t\t0xC9F8 == code || // Lo HANGUL SYLLABLE JJAE\r\n\t\t0xCA14 == code || // Lo HANGUL SYLLABLE JJYA\r\n\t\t0xCA30 == code || // Lo HANGUL SYLLABLE JJYAE\r\n\t\t0xCA4C == code || // Lo HANGUL SYLLABLE JJEO\r\n\t\t0xCA68 == code || // Lo HANGUL SYLLABLE JJE\r\n\t\t0xCA84 == code || // Lo HANGUL SYLLABLE JJYEO\r\n\t\t0xCAA0 == code || // Lo HANGUL SYLLABLE JJYE\r\n\t\t0xCABC == code || // Lo HANGUL SYLLABLE JJO\r\n\t\t0xCAD8 == code || // Lo HANGUL SYLLABLE JJWA\r\n\t\t0xCAF4 == code || // Lo HANGUL SYLLABLE JJWAE\r\n\t\t0xCB10 == code || // Lo HANGUL SYLLABLE JJOE\r\n\t\t0xCB2C == code || // Lo HANGUL SYLLABLE JJYO\r\n\t\t0xCB48 == code || // Lo HANGUL SYLLABLE JJU\r\n\t\t0xCB64 == code || // Lo HANGUL SYLLABLE JJWEO\r\n\t\t0xCB80 == code || // Lo HANGUL SYLLABLE JJWE\r\n\t\t0xCB9C == code || // Lo HANGUL SYLLABLE JJWI\r\n\t\t0xCBB8 == code || // Lo HANGUL SYLLABLE JJYU\r\n\t\t0xCBD4 == code || // Lo HANGUL SYLLABLE JJEU\r\n\t\t0xCBF0 == code || // Lo HANGUL SYLLABLE JJYI\r\n\t\t0xCC0C == code || // Lo HANGUL SYLLABLE JJI\r\n\t\t0xCC28 == code || // Lo HANGUL SYLLABLE CA\r\n\t\t0xCC44 == code || // Lo HANGUL SYLLABLE CAE\r\n\t\t0xCC60 == code || // Lo HANGUL SYLLABLE CYA\r\n\t\t0xCC7C == code || // Lo HANGUL SYLLABLE CYAE\r\n\t\t0xCC98 == code || // Lo HANGUL SYLLABLE CEO\r\n\t\t0xCCB4 == code || // Lo HANGUL SYLLABLE CE\r\n\t\t0xCCD0 == code || // Lo HANGUL SYLLABLE CYEO\r\n\t\t0xCCEC == code || // Lo HANGUL SYLLABLE CYE\r\n\t\t0xCD08 == code || // Lo HANGUL SYLLABLE CO\r\n\t\t0xCD24 == code || // Lo HANGUL SYLLABLE CWA\r\n\t\t0xCD40 == code || // Lo HANGUL SYLLABLE CWAE\r\n\t\t0xCD5C == code || // Lo HANGUL SYLLABLE COE\r\n\t\t0xCD78 == code || // Lo HANGUL SYLLABLE CYO\r\n\t\t0xCD94 == code || // Lo HANGUL SYLLABLE CU\r\n\t\t0xCDB0 == code || // Lo HANGUL SYLLABLE CWEO\r\n\t\t0xCDCC == code || // Lo HANGUL SYLLABLE CWE\r\n\t\t0xCDE8 == code || // Lo HANGUL SYLLABLE CWI\r\n\t\t0xCE04 == code || // Lo HANGUL SYLLABLE CYU\r\n\t\t0xCE20 == code || // Lo HANGUL SYLLABLE CEU\r\n\t\t0xCE3C == code || // Lo HANGUL SYLLABLE CYI\r\n\t\t0xCE58 == code || // Lo HANGUL SYLLABLE CI\r\n\t\t0xCE74 == code || // Lo HANGUL SYLLABLE KA\r\n\t\t0xCE90 == code || // Lo HANGUL SYLLABLE KAE\r\n\t\t0xCEAC == code || // Lo HANGUL SYLLABLE KYA\r\n\t\t0xCEC8 == code || // Lo HANGUL SYLLABLE KYAE\r\n\t\t0xCEE4 == code || // Lo HANGUL SYLLABLE KEO\r\n\t\t0xCF00 == code || // Lo HANGUL SYLLABLE KE\r\n\t\t0xCF1C == code || // Lo HANGUL SYLLABLE KYEO\r\n\t\t0xCF38 == code || // Lo HANGUL SYLLABLE KYE\r\n\t\t0xCF54 == code || // Lo HANGUL SYLLABLE KO\r\n\t\t0xCF70 == code || // Lo HANGUL SYLLABLE KWA\r\n\t\t0xCF8C == code || // Lo HANGUL SYLLABLE KWAE\r\n\t\t0xCFA8 == code || // Lo HANGUL SYLLABLE KOE\r\n\t\t0xCFC4 == code || // Lo HANGUL SYLLABLE KYO\r\n\t\t0xCFE0 == code || // Lo HANGUL SYLLABLE KU\r\n\t\t0xCFFC == code || // Lo HANGUL SYLLABLE KWEO\r\n\t\t0xD018 == code || // Lo HANGUL SYLLABLE KWE\r\n\t\t0xD034 == code || // Lo HANGUL SYLLABLE KWI\r\n\t\t0xD050 == code || // Lo HANGUL SYLLABLE KYU\r\n\t\t0xD06C == code || // Lo HANGUL SYLLABLE KEU\r\n\t\t0xD088 == code || // Lo HANGUL SYLLABLE KYI\r\n\t\t0xD0A4 == code || // Lo HANGUL SYLLABLE KI\r\n\t\t0xD0C0 == code || // Lo HANGUL SYLLABLE TA\r\n\t\t0xD0DC == code || // Lo HANGUL SYLLABLE TAE\r\n\t\t0xD0F8 == code || // Lo HANGUL SYLLABLE TYA\r\n\t\t0xD114 == code || // Lo HANGUL SYLLABLE TYAE\r\n\t\t0xD130 == code || // Lo HANGUL SYLLABLE TEO\r\n\t\t0xD14C == code || // Lo HANGUL SYLLABLE TE\r\n\t\t0xD168 == code || // Lo HANGUL SYLLABLE TYEO\r\n\t\t0xD184 == code || // Lo HANGUL SYLLABLE TYE\r\n\t\t0xD1A0 == code || // Lo HANGUL SYLLABLE TO\r\n\t\t0xD1BC == code || // Lo HANGUL SYLLABLE TWA\r\n\t\t0xD1D8 == code || // Lo HANGUL SYLLABLE TWAE\r\n\t\t0xD1F4 == code || // Lo HANGUL SYLLABLE TOE\r\n\t\t0xD210 == code || // Lo HANGUL SYLLABLE TYO\r\n\t\t0xD22C == code || // Lo HANGUL SYLLABLE TU\r\n\t\t0xD248 == code || // Lo HANGUL SYLLABLE TWEO\r\n\t\t0xD264 == code || // Lo HANGUL SYLLABLE TWE\r\n\t\t0xD280 == code || // Lo HANGUL SYLLABLE TWI\r\n\t\t0xD29C == code || // Lo HANGUL SYLLABLE TYU\r\n\t\t0xD2B8 == code || // Lo HANGUL SYLLABLE TEU\r\n\t\t0xD2D4 == code || // Lo HANGUL SYLLABLE TYI\r\n\t\t0xD2F0 == code || // Lo HANGUL SYLLABLE TI\r\n\t\t0xD30C == code || // Lo HANGUL SYLLABLE PA\r\n\t\t0xD328 == code || // Lo HANGUL SYLLABLE PAE\r\n\t\t0xD344 == code || // Lo HANGUL SYLLABLE PYA\r\n\t\t0xD360 == code || // Lo HANGUL SYLLABLE PYAE\r\n\t\t0xD37C == code || // Lo HANGUL SYLLABLE PEO\r\n\t\t0xD398 == code || // Lo HANGUL SYLLABLE PE\r\n\t\t0xD3B4 == code || // Lo HANGUL SYLLABLE PYEO\r\n\t\t0xD3D0 == code || // Lo HANGUL SYLLABLE PYE\r\n\t\t0xD3EC == code || // Lo HANGUL SYLLABLE PO\r\n\t\t0xD408 == code || // Lo HANGUL SYLLABLE PWA\r\n\t\t0xD424 == code || // Lo HANGUL SYLLABLE PWAE\r\n\t\t0xD440 == code || // Lo HANGUL SYLLABLE POE\r\n\t\t0xD45C == code || // Lo HANGUL SYLLABLE PYO\r\n\t\t0xD478 == code || // Lo HANGUL SYLLABLE PU\r\n\t\t0xD494 == code || // Lo HANGUL SYLLABLE PWEO\r\n\t\t0xD4B0 == code || // Lo HANGUL SYLLABLE PWE\r\n\t\t0xD4CC == code || // Lo HANGUL SYLLABLE PWI\r\n\t\t0xD4E8 == code || // Lo HANGUL SYLLABLE PYU\r\n\t\t0xD504 == code || // Lo HANGUL SYLLABLE PEU\r\n\t\t0xD520 == code || // Lo HANGUL SYLLABLE PYI\r\n\t\t0xD53C == code || // Lo HANGUL SYLLABLE PI\r\n\t\t0xD558 == code || // Lo HANGUL SYLLABLE HA\r\n\t\t0xD574 == code || // Lo HANGUL SYLLABLE HAE\r\n\t\t0xD590 == code || // Lo HANGUL SYLLABLE HYA\r\n\t\t0xD5AC == code || // Lo HANGUL SYLLABLE HYAE\r\n\t\t0xD5C8 == code || // Lo HANGUL SYLLABLE HEO\r\n\t\t0xD5E4 == code || // Lo HANGUL SYLLABLE HE\r\n\t\t0xD600 == code || // Lo HANGUL SYLLABLE HYEO\r\n\t\t0xD61C == code || // Lo HANGUL SYLLABLE HYE\r\n\t\t0xD638 == code || // Lo HANGUL SYLLABLE HO\r\n\t\t0xD654 == code || // Lo HANGUL SYLLABLE HWA\r\n\t\t0xD670 == code || // Lo HANGUL SYLLABLE HWAE\r\n\t\t0xD68C == code || // Lo HANGUL SYLLABLE HOE\r\n\t\t0xD6A8 == code || // Lo HANGUL SYLLABLE HYO\r\n\t\t0xD6C4 == code || // Lo HANGUL SYLLABLE HU\r\n\t\t0xD6E0 == code || // Lo HANGUL SYLLABLE HWEO\r\n\t\t0xD6FC == code || // Lo HANGUL SYLLABLE HWE\r\n\t\t0xD718 == code || // Lo HANGUL SYLLABLE HWI\r\n\t\t0xD734 == code || // Lo HANGUL SYLLABLE HYU\r\n\t\t0xD750 == code || // Lo HANGUL SYLLABLE HEU\r\n\t\t0xD76C == code || // Lo HANGUL SYLLABLE HYI\r\n\t\t0xD788 == code // Lo HANGUL SYLLABLE HI\r\n\t\t){\r\n\t\t\treturn LV;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0xAC01 <= code && code <= 0xAC1B) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\r\n\t\t(0xAC1D <= code && code <= 0xAC37) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\r\n\t\t(0xAC39 <= code && code <= 0xAC53) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\r\n\t\t(0xAC55 <= code && code <= 0xAC6F) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\r\n\t\t(0xAC71 <= code && code <= 0xAC8B) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\r\n\t\t(0xAC8D <= code && code <= 0xACA7) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\r\n\t\t(0xACA9 <= code && code <= 0xACC3) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\r\n\t\t(0xACC5 <= code && code <= 0xACDF) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\r\n\t\t(0xACE1 <= code && code <= 0xACFB) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\r\n\t\t(0xACFD <= code && code <= 0xAD17) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\r\n\t\t(0xAD19 <= code && code <= 0xAD33) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\r\n\t\t(0xAD35 <= code && code <= 0xAD4F) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\r\n\t\t(0xAD51 <= code && code <= 0xAD6B) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\r\n\t\t(0xAD6D <= code && code <= 0xAD87) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\r\n\t\t(0xAD89 <= code && code <= 0xADA3) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\r\n\t\t(0xADA5 <= code && code <= 0xADBF) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\r\n\t\t(0xADC1 <= code && code <= 0xADDB) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\r\n\t\t(0xADDD <= code && code <= 0xADF7) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\r\n\t\t(0xADF9 <= code && code <= 0xAE13) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\r\n\t\t(0xAE15 <= code && code <= 0xAE2F) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\r\n\t\t(0xAE31 <= code && code <= 0xAE4B) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\r\n\t\t(0xAE4D <= code && code <= 0xAE67) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\r\n\t\t(0xAE69 <= code && code <= 0xAE83) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\r\n\t\t(0xAE85 <= code && code <= 0xAE9F) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\r\n\t\t(0xAEA1 <= code && code <= 0xAEBB) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\r\n\t\t(0xAEBD <= code && code <= 0xAED7) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\r\n\t\t(0xAED9 <= code && code <= 0xAEF3) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\r\n\t\t(0xAEF5 <= code && code <= 0xAF0F) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\r\n\t\t(0xAF11 <= code && code <= 0xAF2B) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\r\n\t\t(0xAF2D <= code && code <= 0xAF47) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\r\n\t\t(0xAF49 <= code && code <= 0xAF63) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\r\n\t\t(0xAF65 <= code && code <= 0xAF7F) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\r\n\t\t(0xAF81 <= code && code <= 0xAF9B) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\r\n\t\t(0xAF9D <= code && code <= 0xAFB7) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\r\n\t\t(0xAFB9 <= code && code <= 0xAFD3) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\r\n\t\t(0xAFD5 <= code && code <= 0xAFEF) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\r\n\t\t(0xAFF1 <= code && code <= 0xB00B) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\r\n\t\t(0xB00D <= code && code <= 0xB027) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\r\n\t\t(0xB029 <= code && code <= 0xB043) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\r\n\t\t(0xB045 <= code && code <= 0xB05F) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\r\n\t\t(0xB061 <= code && code <= 0xB07B) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\r\n\t\t(0xB07D <= code && code <= 0xB097) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\r\n\t\t(0xB099 <= code && code <= 0xB0B3) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\r\n\t\t(0xB0B5 <= code && code <= 0xB0CF) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\r\n\t\t(0xB0D1 <= code && code <= 0xB0EB) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\r\n\t\t(0xB0ED <= code && code <= 0xB107) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\r\n\t\t(0xB109 <= code && code <= 0xB123) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\r\n\t\t(0xB125 <= code && code <= 0xB13F) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\r\n\t\t(0xB141 <= code && code <= 0xB15B) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\r\n\t\t(0xB15D <= code && code <= 0xB177) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\r\n\t\t(0xB179 <= code && code <= 0xB193) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\r\n\t\t(0xB195 <= code && code <= 0xB1AF) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\r\n\t\t(0xB1B1 <= code && code <= 0xB1CB) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\r\n\t\t(0xB1CD <= code && code <= 0xB1E7) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\r\n\t\t(0xB1E9 <= code && code <= 0xB203) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\r\n\t\t(0xB205 <= code && code <= 0xB21F) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\r\n\t\t(0xB221 <= code && code <= 0xB23B) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\r\n\t\t(0xB23D <= code && code <= 0xB257) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\r\n\t\t(0xB259 <= code && code <= 0xB273) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\r\n\t\t(0xB275 <= code && code <= 0xB28F) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\r\n\t\t(0xB291 <= code && code <= 0xB2AB) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\r\n\t\t(0xB2AD <= code && code <= 0xB2C7) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\r\n\t\t(0xB2C9 <= code && code <= 0xB2E3) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\r\n\t\t(0xB2E5 <= code && code <= 0xB2FF) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\r\n\t\t(0xB301 <= code && code <= 0xB31B) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\r\n\t\t(0xB31D <= code && code <= 0xB337) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\r\n\t\t(0xB339 <= code && code <= 0xB353) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\r\n\t\t(0xB355 <= code && code <= 0xB36F) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\r\n\t\t(0xB371 <= code && code <= 0xB38B) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\r\n\t\t(0xB38D <= code && code <= 0xB3A7) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\r\n\t\t(0xB3A9 <= code && code <= 0xB3C3) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\r\n\t\t(0xB3C5 <= code && code <= 0xB3DF) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\r\n\t\t(0xB3E1 <= code && code <= 0xB3FB) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\r\n\t\t(0xB3FD <= code && code <= 0xB417) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\r\n\t\t(0xB419 <= code && code <= 0xB433) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\r\n\t\t(0xB435 <= code && code <= 0xB44F) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\r\n\t\t(0xB451 <= code && code <= 0xB46B) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\r\n\t\t(0xB46D <= code && code <= 0xB487) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\r\n\t\t(0xB489 <= code && code <= 0xB4A3) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\r\n\t\t(0xB4A5 <= code && code <= 0xB4BF) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\r\n\t\t(0xB4C1 <= code && code <= 0xB4DB) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\r\n\t\t(0xB4DD <= code && code <= 0xB4F7) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\r\n\t\t(0xB4F9 <= code && code <= 0xB513) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\r\n\t\t(0xB515 <= code && code <= 0xB52F) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\r\n\t\t(0xB531 <= code && code <= 0xB54B) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\r\n\t\t(0xB54D <= code && code <= 0xB567) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\r\n\t\t(0xB569 <= code && code <= 0xB583) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\r\n\t\t(0xB585 <= code && code <= 0xB59F) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\r\n\t\t(0xB5A1 <= code && code <= 0xB5BB) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\r\n\t\t(0xB5BD <= code && code <= 0xB5D7) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\r\n\t\t(0xB5D9 <= code && code <= 0xB5F3) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\r\n\t\t(0xB5F5 <= code && code <= 0xB60F) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\r\n\t\t(0xB611 <= code && code <= 0xB62B) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\r\n\t\t(0xB62D <= code && code <= 0xB647) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\r\n\t\t(0xB649 <= code && code <= 0xB663) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\r\n\t\t(0xB665 <= code && code <= 0xB67F) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\r\n\t\t(0xB681 <= code && code <= 0xB69B) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\r\n\t\t(0xB69D <= code && code <= 0xB6B7) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\r\n\t\t(0xB6B9 <= code && code <= 0xB6D3) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\r\n\t\t(0xB6D5 <= code && code <= 0xB6EF) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\r\n\t\t(0xB6F1 <= code && code <= 0xB70B) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\r\n\t\t(0xB70D <= code && code <= 0xB727) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\r\n\t\t(0xB729 <= code && code <= 0xB743) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\r\n\t\t(0xB745 <= code && code <= 0xB75F) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\r\n\t\t(0xB761 <= code && code <= 0xB77B) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\r\n\t\t(0xB77D <= code && code <= 0xB797) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\r\n\t\t(0xB799 <= code && code <= 0xB7B3) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\r\n\t\t(0xB7B5 <= code && code <= 0xB7CF) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\r\n\t\t(0xB7D1 <= code && code <= 0xB7EB) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\r\n\t\t(0xB7ED <= code && code <= 0xB807) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\r\n\t\t(0xB809 <= code && code <= 0xB823) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\r\n\t\t(0xB825 <= code && code <= 0xB83F) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\r\n\t\t(0xB841 <= code && code <= 0xB85B) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\r\n\t\t(0xB85D <= code && code <= 0xB877) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\r\n\t\t(0xB879 <= code && code <= 0xB893) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\r\n\t\t(0xB895 <= code && code <= 0xB8AF) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\r\n\t\t(0xB8B1 <= code && code <= 0xB8CB) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\r\n\t\t(0xB8CD <= code && code <= 0xB8E7) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\r\n\t\t(0xB8E9 <= code && code <= 0xB903) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\r\n\t\t(0xB905 <= code && code <= 0xB91F) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\r\n\t\t(0xB921 <= code && code <= 0xB93B) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\r\n\t\t(0xB93D <= code && code <= 0xB957) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\r\n\t\t(0xB959 <= code && code <= 0xB973) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\r\n\t\t(0xB975 <= code && code <= 0xB98F) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\r\n\t\t(0xB991 <= code && code <= 0xB9AB) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\r\n\t\t(0xB9AD <= code && code <= 0xB9C7) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\r\n\t\t(0xB9C9 <= code && code <= 0xB9E3) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\r\n\t\t(0xB9E5 <= code && code <= 0xB9FF) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\r\n\t\t(0xBA01 <= code && code <= 0xBA1B) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\r\n\t\t(0xBA1D <= code && code <= 0xBA37) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\r\n\t\t(0xBA39 <= code && code <= 0xBA53) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\r\n\t\t(0xBA55 <= code && code <= 0xBA6F) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\r\n\t\t(0xBA71 <= code && code <= 0xBA8B) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\r\n\t\t(0xBA8D <= code && code <= 0xBAA7) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\r\n\t\t(0xBAA9 <= code && code <= 0xBAC3) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\r\n\t\t(0xBAC5 <= code && code <= 0xBADF) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\r\n\t\t(0xBAE1 <= code && code <= 0xBAFB) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\r\n\t\t(0xBAFD <= code && code <= 0xBB17) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\r\n\t\t(0xBB19 <= code && code <= 0xBB33) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\r\n\t\t(0xBB35 <= code && code <= 0xBB4F) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\r\n\t\t(0xBB51 <= code && code <= 0xBB6B) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\r\n\t\t(0xBB6D <= code && code <= 0xBB87) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\r\n\t\t(0xBB89 <= code && code <= 0xBBA3) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\r\n\t\t(0xBBA5 <= code && code <= 0xBBBF) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\r\n\t\t(0xBBC1 <= code && code <= 0xBBDB) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\r\n\t\t(0xBBDD <= code && code <= 0xBBF7) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\r\n\t\t(0xBBF9 <= code && code <= 0xBC13) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\r\n\t\t(0xBC15 <= code && code <= 0xBC2F) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\r\n\t\t(0xBC31 <= code && code <= 0xBC4B) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\r\n\t\t(0xBC4D <= code && code <= 0xBC67) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\r\n\t\t(0xBC69 <= code && code <= 0xBC83) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\r\n\t\t(0xBC85 <= code && code <= 0xBC9F) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\r\n\t\t(0xBCA1 <= code && code <= 0xBCBB) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\r\n\t\t(0xBCBD <= code && code <= 0xBCD7) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\r\n\t\t(0xBCD9 <= code && code <= 0xBCF3) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\r\n\t\t(0xBCF5 <= code && code <= 0xBD0F) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\r\n\t\t(0xBD11 <= code && code <= 0xBD2B) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\r\n\t\t(0xBD2D <= code && code <= 0xBD47) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\r\n\t\t(0xBD49 <= code && code <= 0xBD63) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\r\n\t\t(0xBD65 <= code && code <= 0xBD7F) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\r\n\t\t(0xBD81 <= code && code <= 0xBD9B) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\r\n\t\t(0xBD9D <= code && code <= 0xBDB7) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\r\n\t\t(0xBDB9 <= code && code <= 0xBDD3) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\r\n\t\t(0xBDD5 <= code && code <= 0xBDEF) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\r\n\t\t(0xBDF1 <= code && code <= 0xBE0B) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\r\n\t\t(0xBE0D <= code && code <= 0xBE27) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\r\n\t\t(0xBE29 <= code && code <= 0xBE43) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\r\n\t\t(0xBE45 <= code && code <= 0xBE5F) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\r\n\t\t(0xBE61 <= code && code <= 0xBE7B) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\r\n\t\t(0xBE7D <= code && code <= 0xBE97) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\r\n\t\t(0xBE99 <= code && code <= 0xBEB3) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\r\n\t\t(0xBEB5 <= code && code <= 0xBECF) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\r\n\t\t(0xBED1 <= code && code <= 0xBEEB) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\r\n\t\t(0xBEED <= code && code <= 0xBF07) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\r\n\t\t(0xBF09 <= code && code <= 0xBF23) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\r\n\t\t(0xBF25 <= code && code <= 0xBF3F) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\r\n\t\t(0xBF41 <= code && code <= 0xBF5B) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\r\n\t\t(0xBF5D <= code && code <= 0xBF77) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\r\n\t\t(0xBF79 <= code && code <= 0xBF93) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\r\n\t\t(0xBF95 <= code && code <= 0xBFAF) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\r\n\t\t(0xBFB1 <= code && code <= 0xBFCB) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\r\n\t\t(0xBFCD <= code && code <= 0xBFE7) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\r\n\t\t(0xBFE9 <= code && code <= 0xC003) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\r\n\t\t(0xC005 <= code && code <= 0xC01F) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\r\n\t\t(0xC021 <= code && code <= 0xC03B) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\r\n\t\t(0xC03D <= code && code <= 0xC057) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\r\n\t\t(0xC059 <= code && code <= 0xC073) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\r\n\t\t(0xC075 <= code && code <= 0xC08F) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\r\n\t\t(0xC091 <= code && code <= 0xC0AB) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\r\n\t\t(0xC0AD <= code && code <= 0xC0C7) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\r\n\t\t(0xC0C9 <= code && code <= 0xC0E3) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\r\n\t\t(0xC0E5 <= code && code <= 0xC0FF) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\r\n\t\t(0xC101 <= code && code <= 0xC11B) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\r\n\t\t(0xC11D <= code && code <= 0xC137) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\r\n\t\t(0xC139 <= code && code <= 0xC153) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\r\n\t\t(0xC155 <= code && code <= 0xC16F) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\r\n\t\t(0xC171 <= code && code <= 0xC18B) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\r\n\t\t(0xC18D <= code && code <= 0xC1A7) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\r\n\t\t(0xC1A9 <= code && code <= 0xC1C3) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\r\n\t\t(0xC1C5 <= code && code <= 0xC1DF) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\r\n\t\t(0xC1E1 <= code && code <= 0xC1FB) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\r\n\t\t(0xC1FD <= code && code <= 0xC217) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\r\n\t\t(0xC219 <= code && code <= 0xC233) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\r\n\t\t(0xC235 <= code && code <= 0xC24F) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\r\n\t\t(0xC251 <= code && code <= 0xC26B) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\r\n\t\t(0xC26D <= code && code <= 0xC287) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\r\n\t\t(0xC289 <= code && code <= 0xC2A3) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\r\n\t\t(0xC2A5 <= code && code <= 0xC2BF) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\r\n\t\t(0xC2C1 <= code && code <= 0xC2DB) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\r\n\t\t(0xC2DD <= code && code <= 0xC2F7) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\r\n\t\t(0xC2F9 <= code && code <= 0xC313) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\r\n\t\t(0xC315 <= code && code <= 0xC32F) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\r\n\t\t(0xC331 <= code && code <= 0xC34B) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\r\n\t\t(0xC34D <= code && code <= 0xC367) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\r\n\t\t(0xC369 <= code && code <= 0xC383) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\r\n\t\t(0xC385 <= code && code <= 0xC39F) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\r\n\t\t(0xC3A1 <= code && code <= 0xC3BB) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\r\n\t\t(0xC3BD <= code && code <= 0xC3D7) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\r\n\t\t(0xC3D9 <= code && code <= 0xC3F3) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\r\n\t\t(0xC3F5 <= code && code <= 0xC40F) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\r\n\t\t(0xC411 <= code && code <= 0xC42B) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\r\n\t\t(0xC42D <= code && code <= 0xC447) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\r\n\t\t(0xC449 <= code && code <= 0xC463) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\r\n\t\t(0xC465 <= code && code <= 0xC47F) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\r\n\t\t(0xC481 <= code && code <= 0xC49B) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\r\n\t\t(0xC49D <= code && code <= 0xC4B7) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\r\n\t\t(0xC4B9 <= code && code <= 0xC4D3) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\r\n\t\t(0xC4D5 <= code && code <= 0xC4EF) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\r\n\t\t(0xC4F1 <= code && code <= 0xC50B) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\r\n\t\t(0xC50D <= code && code <= 0xC527) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\r\n\t\t(0xC529 <= code && code <= 0xC543) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\r\n\t\t(0xC545 <= code && code <= 0xC55F) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\r\n\t\t(0xC561 <= code && code <= 0xC57B) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\r\n\t\t(0xC57D <= code && code <= 0xC597) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\r\n\t\t(0xC599 <= code && code <= 0xC5B3) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\r\n\t\t(0xC5B5 <= code && code <= 0xC5CF) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\r\n\t\t(0xC5D1 <= code && code <= 0xC5EB) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\r\n\t\t(0xC5ED <= code && code <= 0xC607) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\r\n\t\t(0xC609 <= code && code <= 0xC623) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\r\n\t\t(0xC625 <= code && code <= 0xC63F) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\r\n\t\t(0xC641 <= code && code <= 0xC65B) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\r\n\t\t(0xC65D <= code && code <= 0xC677) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\r\n\t\t(0xC679 <= code && code <= 0xC693) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\r\n\t\t(0xC695 <= code && code <= 0xC6AF) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\r\n\t\t(0xC6B1 <= code && code <= 0xC6CB) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\r\n\t\t(0xC6CD <= code && code <= 0xC6E7) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\r\n\t\t(0xC6E9 <= code && code <= 0xC703) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\r\n\t\t(0xC705 <= code && code <= 0xC71F) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\r\n\t\t(0xC721 <= code && code <= 0xC73B) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\r\n\t\t(0xC73D <= code && code <= 0xC757) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\r\n\t\t(0xC759 <= code && code <= 0xC773) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\r\n\t\t(0xC775 <= code && code <= 0xC78F) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\r\n\t\t(0xC791 <= code && code <= 0xC7AB) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\r\n\t\t(0xC7AD <= code && code <= 0xC7C7) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\r\n\t\t(0xC7C9 <= code && code <= 0xC7E3) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\r\n\t\t(0xC7E5 <= code && code <= 0xC7FF) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\r\n\t\t(0xC801 <= code && code <= 0xC81B) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\r\n\t\t(0xC81D <= code && code <= 0xC837) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\r\n\t\t(0xC839 <= code && code <= 0xC853) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\r\n\t\t(0xC855 <= code && code <= 0xC86F) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\r\n\t\t(0xC871 <= code && code <= 0xC88B) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\r\n\t\t(0xC88D <= code && code <= 0xC8A7) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\r\n\t\t(0xC8A9 <= code && code <= 0xC8C3) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\r\n\t\t(0xC8C5 <= code && code <= 0xC8DF) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\r\n\t\t(0xC8E1 <= code && code <= 0xC8FB) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\r\n\t\t(0xC8FD <= code && code <= 0xC917) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\r\n\t\t(0xC919 <= code && code <= 0xC933) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\r\n\t\t(0xC935 <= code && code <= 0xC94F) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\r\n\t\t(0xC951 <= code && code <= 0xC96B) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\r\n\t\t(0xC96D <= code && code <= 0xC987) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\r\n\t\t(0xC989 <= code && code <= 0xC9A3) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\r\n\t\t(0xC9A5 <= code && code <= 0xC9BF) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\r\n\t\t(0xC9C1 <= code && code <= 0xC9DB) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\r\n\t\t(0xC9DD <= code && code <= 0xC9F7) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\r\n\t\t(0xC9F9 <= code && code <= 0xCA13) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\r\n\t\t(0xCA15 <= code && code <= 0xCA2F) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\r\n\t\t(0xCA31 <= code && code <= 0xCA4B) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\r\n\t\t(0xCA4D <= code && code <= 0xCA67) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\r\n\t\t(0xCA69 <= code && code <= 0xCA83) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\r\n\t\t(0xCA85 <= code && code <= 0xCA9F) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\r\n\t\t(0xCAA1 <= code && code <= 0xCABB) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\r\n\t\t(0xCABD <= code && code <= 0xCAD7) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\r\n\t\t(0xCAD9 <= code && code <= 0xCAF3) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\r\n\t\t(0xCAF5 <= code && code <= 0xCB0F) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\r\n\t\t(0xCB11 <= code && code <= 0xCB2B) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\r\n\t\t(0xCB2D <= code && code <= 0xCB47) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\r\n\t\t(0xCB49 <= code && code <= 0xCB63) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\r\n\t\t(0xCB65 <= code && code <= 0xCB7F) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\r\n\t\t(0xCB81 <= code && code <= 0xCB9B) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\r\n\t\t(0xCB9D <= code && code <= 0xCBB7) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\r\n\t\t(0xCBB9 <= code && code <= 0xCBD3) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\r\n\t\t(0xCBD5 <= code && code <= 0xCBEF) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\r\n\t\t(0xCBF1 <= code && code <= 0xCC0B) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\r\n\t\t(0xCC0D <= code && code <= 0xCC27) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\r\n\t\t(0xCC29 <= code && code <= 0xCC43) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\r\n\t\t(0xCC45 <= code && code <= 0xCC5F) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\r\n\t\t(0xCC61 <= code && code <= 0xCC7B) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\r\n\t\t(0xCC7D <= code && code <= 0xCC97) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\r\n\t\t(0xCC99 <= code && code <= 0xCCB3) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\r\n\t\t(0xCCB5 <= code && code <= 0xCCCF) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\r\n\t\t(0xCCD1 <= code && code <= 0xCCEB) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\r\n\t\t(0xCCED <= code && code <= 0xCD07) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\r\n\t\t(0xCD09 <= code && code <= 0xCD23) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\r\n\t\t(0xCD25 <= code && code <= 0xCD3F) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\r\n\t\t(0xCD41 <= code && code <= 0xCD5B) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\r\n\t\t(0xCD5D <= code && code <= 0xCD77) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\r\n\t\t(0xCD79 <= code && code <= 0xCD93) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\r\n\t\t(0xCD95 <= code && code <= 0xCDAF) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\r\n\t\t(0xCDB1 <= code && code <= 0xCDCB) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\r\n\t\t(0xCDCD <= code && code <= 0xCDE7) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\r\n\t\t(0xCDE9 <= code && code <= 0xCE03) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\r\n\t\t(0xCE05 <= code && code <= 0xCE1F) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\r\n\t\t(0xCE21 <= code && code <= 0xCE3B) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\r\n\t\t(0xCE3D <= code && code <= 0xCE57) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\r\n\t\t(0xCE59 <= code && code <= 0xCE73) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\r\n\t\t(0xCE75 <= code && code <= 0xCE8F) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\r\n\t\t(0xCE91 <= code && code <= 0xCEAB) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\r\n\t\t(0xCEAD <= code && code <= 0xCEC7) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\r\n\t\t(0xCEC9 <= code && code <= 0xCEE3) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\r\n\t\t(0xCEE5 <= code && code <= 0xCEFF) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\r\n\t\t(0xCF01 <= code && code <= 0xCF1B) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\r\n\t\t(0xCF1D <= code && code <= 0xCF37) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\r\n\t\t(0xCF39 <= code && code <= 0xCF53) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\r\n\t\t(0xCF55 <= code && code <= 0xCF6F) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\r\n\t\t(0xCF71 <= code && code <= 0xCF8B) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\r\n\t\t(0xCF8D <= code && code <= 0xCFA7) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\r\n\t\t(0xCFA9 <= code && code <= 0xCFC3) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\r\n\t\t(0xCFC5 <= code && code <= 0xCFDF) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\r\n\t\t(0xCFE1 <= code && code <= 0xCFFB) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\r\n\t\t(0xCFFD <= code && code <= 0xD017) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\r\n\t\t(0xD019 <= code && code <= 0xD033) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\r\n\t\t(0xD035 <= code && code <= 0xD04F) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\r\n\t\t(0xD051 <= code && code <= 0xD06B) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\r\n\t\t(0xD06D <= code && code <= 0xD087) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\r\n\t\t(0xD089 <= code && code <= 0xD0A3) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\r\n\t\t(0xD0A5 <= code && code <= 0xD0BF) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\r\n\t\t(0xD0C1 <= code && code <= 0xD0DB) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\r\n\t\t(0xD0DD <= code && code <= 0xD0F7) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\r\n\t\t(0xD0F9 <= code && code <= 0xD113) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\r\n\t\t(0xD115 <= code && code <= 0xD12F) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\r\n\t\t(0xD131 <= code && code <= 0xD14B) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\r\n\t\t(0xD14D <= code && code <= 0xD167) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\r\n\t\t(0xD169 <= code && code <= 0xD183) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\r\n\t\t(0xD185 <= code && code <= 0xD19F) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\r\n\t\t(0xD1A1 <= code && code <= 0xD1BB) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\r\n\t\t(0xD1BD <= code && code <= 0xD1D7) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\r\n\t\t(0xD1D9 <= code && code <= 0xD1F3) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\r\n\t\t(0xD1F5 <= code && code <= 0xD20F) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\r\n\t\t(0xD211 <= code && code <= 0xD22B) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\r\n\t\t(0xD22D <= code && code <= 0xD247) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\r\n\t\t(0xD249 <= code && code <= 0xD263) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\r\n\t\t(0xD265 <= code && code <= 0xD27F) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\r\n\t\t(0xD281 <= code && code <= 0xD29B) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\r\n\t\t(0xD29D <= code && code <= 0xD2B7) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\r\n\t\t(0xD2B9 <= code && code <= 0xD2D3) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\r\n\t\t(0xD2D5 <= code && code <= 0xD2EF) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\r\n\t\t(0xD2F1 <= code && code <= 0xD30B) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\r\n\t\t(0xD30D <= code && code <= 0xD327) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\r\n\t\t(0xD329 <= code && code <= 0xD343) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\r\n\t\t(0xD345 <= code && code <= 0xD35F) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\r\n\t\t(0xD361 <= code && code <= 0xD37B) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\r\n\t\t(0xD37D <= code && code <= 0xD397) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\r\n\t\t(0xD399 <= code && code <= 0xD3B3) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\r\n\t\t(0xD3B5 <= code && code <= 0xD3CF) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\r\n\t\t(0xD3D1 <= code && code <= 0xD3EB) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\r\n\t\t(0xD3ED <= code && code <= 0xD407) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\r\n\t\t(0xD409 <= code && code <= 0xD423) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\r\n\t\t(0xD425 <= code && code <= 0xD43F) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\r\n\t\t(0xD441 <= code && code <= 0xD45B) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\r\n\t\t(0xD45D <= code && code <= 0xD477) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\r\n\t\t(0xD479 <= code && code <= 0xD493) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\r\n\t\t(0xD495 <= code && code <= 0xD4AF) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\r\n\t\t(0xD4B1 <= code && code <= 0xD4CB) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\r\n\t\t(0xD4CD <= code && code <= 0xD4E7) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\r\n\t\t(0xD4E9 <= code && code <= 0xD503) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\r\n\t\t(0xD505 <= code && code <= 0xD51F) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\r\n\t\t(0xD521 <= code && code <= 0xD53B) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\r\n\t\t(0xD53D <= code && code <= 0xD557) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\r\n\t\t(0xD559 <= code && code <= 0xD573) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\r\n\t\t(0xD575 <= code && code <= 0xD58F) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\r\n\t\t(0xD591 <= code && code <= 0xD5AB) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\r\n\t\t(0xD5AD <= code && code <= 0xD5C7) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\r\n\t\t(0xD5C9 <= code && code <= 0xD5E3) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\r\n\t\t(0xD5E5 <= code && code <= 0xD5FF) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\r\n\t\t(0xD601 <= code && code <= 0xD61B) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\r\n\t\t(0xD61D <= code && code <= 0xD637) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\r\n\t\t(0xD639 <= code && code <= 0xD653) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\r\n\t\t(0xD655 <= code && code <= 0xD66F) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\r\n\t\t(0xD671 <= code && code <= 0xD68B) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\r\n\t\t(0xD68D <= code && code <= 0xD6A7) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\r\n\t\t(0xD6A9 <= code && code <= 0xD6C3) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\r\n\t\t(0xD6C5 <= code && code <= 0xD6DF) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\r\n\t\t(0xD6E1 <= code && code <= 0xD6FB) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\r\n\t\t(0xD6FD <= code && code <= 0xD717) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\r\n\t\t(0xD719 <= code && code <= 0xD733) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\r\n\t\t(0xD735 <= code && code <= 0xD74F) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\r\n\t\t(0xD751 <= code && code <= 0xD76B) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\r\n\t\t(0xD76D <= code && code <= 0xD787) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\r\n\t\t(0xD789 <= code && code <= 0xD7A3) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\r\n\t\t){\r\n\t\t\treturn LVT;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x261D == code || // So WHITE UP POINTING INDEX\r\n\t\t0x26F9 == code || // So PERSON WITH BALL\r\n\t\t(0x270A <= code && code <= 0x270D) || // So [4] RAISED FIST..WRITING HAND\r\n\t\t0x1F385 == code || // So FATHER CHRISTMAS\r\n\t\t(0x1F3C2 <= code && code <= 0x1F3C4) || // So [3] SNOWBOARDER..SURFER\r\n\t\t0x1F3C7 == code || // So HORSE RACING\r\n\t\t(0x1F3CA <= code && code <= 0x1F3CC) || // So [3] SWIMMER..GOLFER\r\n\t\t(0x1F442 <= code && code <= 0x1F443) || // So [2] EAR..NOSE\r\n\t\t(0x1F446 <= code && code <= 0x1F450) || // So [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN\r\n\t\t0x1F46E == code || // So POLICE OFFICER\r\n\t\t(0x1F470 <= code && code <= 0x1F478) || // So [9] BRIDE WITH VEIL..PRINCESS\r\n\t\t0x1F47C == code || // So BABY ANGEL\r\n\t\t(0x1F481 <= code && code <= 0x1F483) || // So [3] INFORMATION DESK PERSON..DANCER\r\n\t\t(0x1F485 <= code && code <= 0x1F487) || // So [3] NAIL POLISH..HAIRCUT\r\n\t\t0x1F4AA == code || // So FLEXED BICEPS\r\n\t\t(0x1F574 <= code && code <= 0x1F575) || // So [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY\r\n\t\t0x1F57A == code || // So MAN DANCING\r\n\t\t0x1F590 == code || // So RAISED HAND WITH FINGERS SPLAYED\r\n\t\t(0x1F595 <= code && code <= 0x1F596) || // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS\r\n\t\t(0x1F645 <= code && code <= 0x1F647) || // So [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY\r\n\t\t(0x1F64B <= code && code <= 0x1F64F) || // So [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS\r\n\t\t0x1F6A3 == code || // So ROWBOAT\r\n\t\t(0x1F6B4 <= code && code <= 0x1F6B6) || // So [3] BICYCLIST..PEDESTRIAN\r\n\t\t0x1F6C0 == code || // So BATH\r\n\t\t0x1F6CC == code || // So SLEEPING ACCOMMODATION\r\n\t\t(0x1F918 <= code && code <= 0x1F91C) || // So [5] SIGN OF THE HORNS..RIGHT-FACING FIST\r\n\t\t(0x1F91E <= code && code <= 0x1F91F) || // So [2] HAND WITH INDEX AND MIDDLE FINGERS CROSSED..I LOVE YOU HAND SIGN\r\n\t\t0x1F926 == code || // So FACE PALM\r\n\t\t(0x1F930 <= code && code <= 0x1F939) || // So [10] PREGNANT WOMAN..JUGGLING\r\n\t\t(0x1F93D <= code && code <= 0x1F93E) || // So [2] WATER POLO..HANDBALL\r\n\t\t(0x1F9D1 <= code && code <= 0x1F9DD) // So [13] ADULT..ELF\r\n\t\t){\r\n\t\t\treturn E_Base;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F3FB <= code && code <= 0x1F3FF) // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\r\n\t\t){\r\n\t\t\treturn E_Modifier;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x200D == code // Cf ZERO WIDTH JOINER\r\n\t\t){\r\n\t\t\treturn ZWJ;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x2640 == code || // So FEMALE SIGN\r\n\t\t0x2642 == code || // So MALE SIGN\r\n\t\t(0x2695 <= code && code <= 0x2696) || // So [2] STAFF OF AESCULAPIUS..SCALES\r\n\t\t0x2708 == code || // So AIRPLANE\r\n\t\t0x2764 == code || // So HEAVY BLACK HEART\r\n\t\t0x1F308 == code || // So RAINBOW\r\n\t\t0x1F33E == code || // So EAR OF RICE\r\n\t\t0x1F373 == code || // So COOKING\r\n\t\t0x1F393 == code || // So GRADUATION CAP\r\n\t\t0x1F3A4 == code || // So MICROPHONE\r\n\t\t0x1F3A8 == code || // So ARTIST PALETTE\r\n\t\t0x1F3EB == code || // So SCHOOL\r\n\t\t0x1F3ED == code || // So FACTORY\r\n\t\t0x1F48B == code || // So KISS MARK\r\n\t\t(0x1F4BB <= code && code <= 0x1F4BC) || // So [2] PERSONAL COMPUTER..BRIEFCASE\r\n\t\t0x1F527 == code || // So WRENCH\r\n\t\t0x1F52C == code || // So MICROSCOPE\r\n\t\t0x1F5E8 == code || // So LEFT SPEECH BUBBLE\r\n\t\t0x1F680 == code || // So ROCKET\r\n\t\t0x1F692 == code // So FIRE ENGINE\r\n\t\t){\r\n\t\t\treturn Glue_After_Zwj;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F466 <= code && code <= 0x1F469) // So [4] BOY..WOMAN\r\n\t\t){\r\n\t\t\treturn E_Base_GAZ;\r\n\t\t}\r\n\r\n\r\n\t\t//all unlisted characters have a grapheme break property of \"Other\"\r\n\t\treturn Other;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\nexport default GraphemeSplitter;\r\n","import { isNullish, isString } from 'remeda';\nimport { BuildInNumberAdapter, DecimalJsAdapter, } from './number-adapter/index.js';\nimport { BuildInIntlSegmenterAdapter, BuildInStringAdapter, GraphemeSplitterAdapter, } from './string-adapter/index.js';\nexport class CounterAdapter {\n static setNumberAdapter(adapterOrType, config) {\n let adapter = BuildInNumberAdapter();\n if (isString(adapterOrType)) {\n if (adapterOrType === 'number')\n adapter = BuildInNumberAdapter();\n else if (['decimal.js', 'decimaljs'].includes(adapterOrType))\n adapter = DecimalJsAdapter(config);\n }\n else {\n adapter = adapterOrType;\n }\n CounterAdapter.NUMBER_ADAPTER = adapter;\n }\n static setStringAdapter(adapterOrType) {\n let adapter = BuildInStringAdapter();\n if (isString(adapterOrType)) {\n if (adapterOrType === 'string')\n adapter = BuildInStringAdapter();\n else if (adapterOrType === 'intl-segmenter')\n adapter = BuildInIntlSegmenterAdapter();\n else if (adapterOrType === 'grapheme-splitter')\n adapter = GraphemeSplitterAdapter();\n }\n else {\n adapter = adapterOrType;\n }\n CounterAdapter.STRING_ADAPTER = adapter;\n }\n}\n/**\n * 数字适配器, 有以下两种:\n * 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.\n * 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.\n *\n * 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.\n *\n * @default BuildInNumberAdapter\n */\nCounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();\n/**\n * 字符串适配器, 有以下两种:\n * 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.\n * 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.\n * 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.\n *\n * 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.\n *\n * @default BuildInStringAdapter\n */\nCounterAdapter.STRING_ADAPTER = BuildInStringAdapter();\n/**\n * 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.\n *\n * @see https://lit.dev/docs/components/properties/#attributes\n * @protected\n */\nCounterAdapter.VALUE_CONVERTER = {\n fromAttribute(value) {\n return value;\n },\n toAttribute(value) {\n return isNullish(value)\n ? value\n : CounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n};\n//# sourceMappingURL=counter-adapter.js.map","/**\n * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.\n *\n * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).\n *\n * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.\n */\nconst BuildInIntlSegmenterAdapter = (locales) => {\n const segmenter = new Intl.Segmenter(locales, { granularity: \"grapheme\" });\n return {\n stringToChars(value) {\n const segments = Array.from(segmenter.segment(value));\n return segments.map((s) => s.segment);\n },\n };\n};\nexport { BuildInIntlSegmenterAdapter };\n//# sourceMappingURL=build-in-intl-segmenter.js.map","import GraphemeSplitter from 'grapheme-splitter';\n/**\n * 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.\n *\n * 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.\n */\nconst GraphemeSplitterAdapter = () => {\n const splitter = new GraphemeSplitter();\n return {\n stringToChars(value) {\n return splitter.splitGraphemes(value);\n },\n };\n};\nexport { GraphemeSplitterAdapter };\n//# sourceMappingURL=grapheme-splitter.js.map","import { __decorate } from \"tslib\";\nimport { property, state } from 'lit/decorators.js';\nimport { isNonNullish, isNullish, isString } from 'remeda';\nimport { CounterAdapter } from '../counter-adapter.js';\nexport const CounterBaseMixin = (superClass) => {\n class CounterBaseMixinClass extends superClass {\n get value() {\n return this.numberAdapter.create(this.__value);\n }\n set value(value) {\n value = CounterAdapter.NUMBER_ADAPTER.create(isNullish(value) || (isString(value) && value.trim() === '')\n ? 0\n : value);\n const old = this.__value;\n this.__value = value;\n if (!this.numberAdapter.eq(this.__value, old)) {\n this.requestUpdate('value', old);\n }\n }\n /**\n * 用于记录上一次的值.\n *\n * 初始化时({@link connectedCallback}), oldValue 将被设置为 `initialValue` 或 `value` 的值.\n */\n get oldValue() {\n return this.numberAdapter.create(this.__oldValue);\n }\n set oldValue(value) {\n const old = this.__oldValue;\n this.__oldValue = value;\n this.requestUpdate('oldValue', old);\n }\n /**\n * 如果初始值被设置, {@link oldValue} 的初始值, 会使用该值而不是 `value`.\n *\n * 这对于初始化完成后启动动画效果非常有用.\n */\n get initialValue() {\n return isNullish(this.__initialValue)\n ? this.__initialValue\n : this.numberAdapter.create(this.__initialValue);\n }\n set initialValue(value) {\n const old = this.__initialValue;\n this.__initialValue = value;\n this.requestUpdate('initialValue', old);\n }\n /**\n * 自定义本地化配置, 否则从浏览器环境中获取.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n *\n * @default \"en-US\"\n */\n get locale() {\n return this.__locale;\n }\n set locale(value) {\n const old = this.__locale;\n this.__locale = value;\n this.requestUpdate('locale', old);\n this.localeInstance = isString(this.__locale)\n ? new Intl.Locale(this.__locale)\n : new Intl.Locale(...this.__locale);\n }\n constructor(...args) {\n super(...args);\n this.__value = CounterAdapter.NUMBER_ADAPTER.create(0);\n // value: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__oldValue = CounterAdapter.NUMBER_ADAPTER.create(0);\n // oldValue: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__initialValue = null;\n this.__locale = 'en-US';\n this.localeInstance = isString(this.locale)\n ? new Intl.Locale(this.locale)\n : new Intl.Locale(...this.locale);\n this.direction = 'up';\n this.oldDirection = this.direction;\n // @ts-ignore\n this.numberAdapter = CounterAdapter.NUMBER_ADAPTER;\n // @ts-ignore\n this.stringAdapter = CounterAdapter.STRING_ADAPTER;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value') &&\n !changedProperties.has('oldValue')) {\n // oldValue 未被手动设置时, 使用默认策略更新 oldValue.\n this.oldValue = changedProperties.get('value') ?? this.value;\n }\n this.oldDirection = this.direction;\n if (!this.numberAdapter.eq(this.value, this.oldValue)) {\n this.direction = this.numberAdapter.gt(this.value, this.oldValue)\n ? 'down'\n : 'up';\n }\n }\n /**\n * oldValue 的默认初始值应当来自 initialValue 或 value.\n * 以保证 oldValue 始终有值.\n */\n connectedCallback() {\n super.connectedCallback();\n this.oldValue = isNonNullish(this.initialValue)\n ? this.initialValue\n : this.value;\n }\n }\n __decorate([\n property({\n attribute: 'value',\n reflect: true,\n converter: {\n toAttribute: CounterAdapter.VALUE_CONVERTER.toAttribute,\n },\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"value\", null);\n __decorate([\n property({\n attribute: 'old-value',\n reflect: true,\n converter: CounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"oldValue\", null);\n __decorate([\n property({\n attribute: 'initial-value',\n reflect: true,\n converter: CounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"initialValue\", null);\n __decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return value;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n },\n reflect: true,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"locale\", null);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"direction\", void 0);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"oldDirection\", void 0);\n return CounterBaseMixinClass;\n};\n//# sourceMappingURL=counter-base.js.map","function l(n){return n!=null}export{l as a};\n","import { css } from 'lit';\nexport const timeredCounterStyles = css `\n :host {\n position: relative;\n white-space: nowrap;\n\n display: inline-block;\n }\n\n //.timered-counter {\n // position: relative;\n // display: inline-flex;\n // overflow: hidden;\n //\n // /**\n // inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n // @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n // @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n // */\n // vertical-align: bottom;\n //}\n\n .timered-counter.debug {\n overflow: visible;\n }\n\n //.timered-counter-datetime-duration .duration-unit {\n // font-size: 0.4em;\n // line-height: 1;\n //}\n`;\n//# sourceMappingURL=timered-counter-styles.js.map","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitOption, mergePartDigitOption, } from '../utils/extract-group-option.js';\nexport const CounterAnimationMixin = (superClass) => {\n class CounterAnimationMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 传递给 Web Animations API 的选项.\n */\n this.animationOptions = {};\n this.cachedAnimationOptions = [];\n /**\n * 传递给 Web Animations API 的关键帧配置.\n */\n this.keyframes = {};\n this.cachedKeyframes = [];\n }\n extractAnimationOptions() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.animationOptions ?? {}, getterOptions), extractPartDigitOption(this.animationOptionsDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedAnimationOptions, result)) {\n this.cachedAnimationOptions = result;\n }\n return this.cachedAnimationOptions;\n }\n extractKeyframes() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.keyframes ?? {}, getterOptions), extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedKeyframes, result)) {\n this.cachedKeyframes = result;\n }\n return this.cachedKeyframes;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'animation-options', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"animationOptions\", void 0);\n __decorate([\n property({ type: Object, attribute: 'keyframes', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"keyframes\", void 0);\n return CounterAnimationMixinClass;\n};\n//# sourceMappingURL=counter-animation.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { css } from 'lit';\nexport const rollerStyles = css `\n :host {\n display: inline-flex;\n overflow: hidden;\n\n /**\n inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n */\n vertical-align: bottom;\n }\n\n .counter-parts {\n display: inline-flex;\n flex: 1 1 auto;\n }\n\n .roller-part {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .roller__prefix,\n .roller__suffix {\n flex: none;\n }\n\n .roller-part .roller-part__wrapper {\n display: inline-block;\n }\n\n .roller-part .roller-part__suffix {\n display: inline-block;\n }\n`;\nexport const rollerDigitStyles = css `\n .roller-part-digit {\n position: relative;\n display: inline-block;\n }\n\n .placeholder {\n visibility: hidden;\n display: inline-block;\n }\n\n .roll-list {\n position: absolute;\n left: 0;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n }\n\n .roll-list.roll-list__up {\n top: 0;\n }\n\n .roll-list.roll-list__down {\n bottom: 0;\n }\n\n .roll-list__shadow {\n visibility: hidden;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -10;\n display: inline-flex;\n flex-direction: column;\n white-space: nowrap;\n }\n\n .roll-item {\n display: inline-block;\n width: 100%;\n }\n\n .roll-item.roll-item__head {\n position: absolute;\n top: 100%;\n }\n\n .roll-item.roll-item__tail {\n position: absolute;\n bottom: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","/**\n * @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts\n */\nexport const noop = (any) => any;\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nexport function cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n//# sourceMappingURL=cubic-bezier.js.map","import { cubicBezier } from './cubic-bezier.js';\n/**\n * @see https://easings.net\n */\nexport const easeInSine = cubicBezier(0.12, 0, 0.39, 0);\nexport const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);\nexport const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);\nexport const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);\nexport const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);\nexport const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);\nexport const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);\nexport const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);\nexport const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);\nexport const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);\nexport const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);\nexport const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);\nexport const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);\nexport const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);\nexport const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);\nexport const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);\nexport const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);\nexport const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);\nexport const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);\nexport const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);\nexport const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);\nexport const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);\nexport const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);\nexport const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);\nexport function easeInElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);\n}\nexport function easeOutElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n}\nexport function easeInOutElastic(x) {\n const c5 = (2 * Math.PI) / 4.5;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n if (x < 0.5) {\n return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;\n }\n return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n}\nexport function easeOutBounce(x) {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (x < 1 / d1) {\n return n1 * x * x;\n }\n if (x < 2 / d1) {\n x -= 1.5 / d1;\n return n1 * x * x + 0.75;\n }\n if (x < 2.5 / d1) {\n x -= 2.25 / d1;\n return n1 * x * x + 0.9375;\n }\n x -= 2.625 / d1;\n return n1 * x * x + 0.984375;\n}\nexport function easeInBounce(x) {\n return 1 - easeOutBounce(1 - x);\n}\nexport function easeInOutBounce(x) {\n if (x < 0.5) {\n return (1 - easeOutBounce(1 - 2 * x)) / 2;\n }\n return (1 + easeOutBounce(2 * x - 1)) / 2;\n}\n//# sourceMappingURL=penner-easing-functions.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { intersection, isEmpty, isNullish, isString, merge, omit, range, } from 'remeda';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { rollerDigitStyles } from './styles.js';\nimport * as EasingFunctions from '../../easing/penner-easing-functions.js';\nclass RollerDigitAnimationEvent extends Event {\n}\nlet TimeredCounterRollerDigit = class TimeredCounterRollerDigit extends LitElement {\n constructor() {\n super();\n this.digit = { data: [], place: 0 };\n this.preprocessData = {\n animate: true,\n cancelPrevAnimation: false,\n earlyReturn: '',\n index: 0,\n partIndex: 0,\n digitIndex: 0,\n };\n this.direction = 'up';\n this.textStyle = {};\n this.cellStyle = [];\n this.animationOptions = {};\n this.keyframes = {};\n this.digitWidth = 0;\n this.resizeObserver = new ResizeObserver(() => {\n this.digitWidth = (this.clonedRollDigitList\n ? this.clonedRollDigitList.getBoundingClientRect()\n : new DOMRect()).width;\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.clonedRollDigitList) {\n this.resizeObserver.observe(this.clonedRollDigitList);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n updated(_changedProperties) {\n super.updated(_changedProperties);\n /**\n * 仅当影响滚动列表 dom 结构的属性发生变化时才会触发动画.\n */\n if (intersection(Array.from(_changedProperties.keys()), [\n 'digit',\n 'preprocessData',\n 'direction',\n 'animationOptions',\n 'keyframes',\n ]).length > 0) {\n if (this.shouldAnimate()) {\n this.startAnimation().then();\n }\n }\n }\n render() {\n const shadowCellStyle = this.cellStyle.map(style => omit(style, ['position']));\n return html `<span class=\"roller-part-digit\">\n <!-- 占位 -->\n <span\n class=\"placeholder\"\n style=${styleMap({ width: `${Math.round(this.digitWidth)}px` })}\n >0</span\n >\n <!-- 一个不可见的滚动列表的复制, 用于计算该列表的最大宽度. -->\n <span class=\"roll-list__shadow\">\n ${repeat(this.digit.data, (_, index) => index, (digit, index) => html `<span style=${styleMap(shadowCellStyle[index])}\n >${digit}</span\n >`)}\n </span>\n <span\n class=${classMap({\n /**\n * 向上(up)滚动时, 使滚动列表顶部对齐以便于应用 `translationY(-100%)` 实现向上滚动效果\n * 向下同理\n */\n 'roll-list__up': this.direction === 'up',\n 'roll-list__down': this.direction === 'down',\n 'roll-list': true,\n })}\n >\n ${this.digit.data.length > 1\n ? repeat(this.digit.data, (_, index) => index, (digit, index) => {\n if (this.direction === 'up' &&\n index === this.digit.data.length - 1) {\n return html `<span\n part=\"cell\"\n class=\"roll-item roll-item__head\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n }\n if (this.direction === 'down' && index === 0) {\n return html `\n <span\n part=\"cell\"\n class=\"roll-item roll-item__tail\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >\n `;\n }\n return html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n })\n : html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[0])}\n ><span style=${styleMap(this.textStyle)}\n >${this.digit.data[0]}</span\n ></span\n >`}</span\n ></span\n > `;\n }\n shouldAnimate() {\n const { cancelPrevAnimation, animate } = this.preprocessData;\n if (cancelPrevAnimation) {\n if (this.animation) {\n this.animation.cancel();\n }\n if (this.rollList && this.rollList.style && this.rollList.style.cssText) {\n this.rollList.style.cssText = '';\n }\n }\n if (!animate)\n return false;\n return true;\n }\n async startAnimation() {\n if (isNullish(this.rollList))\n return;\n this.__emitAnimationStart();\n const anmOptions = merge({ duration: 1000, iterations: 1, easing: 'ease-out', fill: 'forwards' }, this.animationOptions);\n const keyframes = isEmpty(this.keyframes)\n ? {\n up: { transform: ['translateY(0)', 'translateY(-100%)'] },\n down: { transform: ['translateY(0)', 'translateY(100%)'] },\n }[this.direction]\n : this.keyframes;\n /**\n * 尝试从 `PennerEasingFunctions` 中获取对应的 easing 函数\n */\n // {\n if (isString(anmOptions.easing) &&\n EasingFunctions[anmOptions.easing]) {\n const func = EasingFunctions[anmOptions.easing];\n anmOptions.easing = `linear(${range(0, 64)\n .map((_, i) => func(i / 63))\n .join(',')})`;\n }\n // }\n try {\n this.clearAnimation();\n this.animation = this.rollList.animate(keyframes, anmOptions);\n this.animation.addEventListener('finish', () => this.__emitAnimationEnd(), {\n once: true,\n });\n // /**\n // * 动画播放完成或被其他动画中断都会使得 `finished` resolve.\n // * 只有当动画顺利播放完成的情况下, 才能调用 `cancel` 取消动画. 在其他情况下调用, 会抛出异常[1].\n // *\n // * 因此, 提前检查 `playState` 的值. 当 `playState` 不是 `finished` 时, 说明动画被其他 `Animation` 实例中断.\n // * 因为已经有其他 `Animation` 实例的存在, 我们可以直接丢弃这个 `Animation` 实例, 而不用担心无动画可用.\n // *\n // * [1]: https://developer.mozilla.org/en-US/docs/Web/API/Animation/cancel#exceptions\n // */\n // await this.animation.finished;\n // if (\n // this.animation.playState === 'finished' &&\n // this.rollList.checkVisibility()\n // ) {\n // // this.animation.commitStyles();\n // // this.animation.cancel();\n // }\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n clearAnimation() {\n this.animation?.removeEventListener('finish', this.__emitAnimationEnd);\n this.animation?.cancel();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-end'));\n }\n};\nTimeredCounterRollerDigit.styles = [rollerDigitStyles];\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"digit\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"preprocessData\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRollerDigit.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"textStyle\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRollerDigit.prototype, \"cellStyle\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"keyframes\", void 0);\n__decorate([\n query('.roll-list__shadow')\n], TimeredCounterRollerDigit.prototype, \"clonedRollDigitList\", void 0);\n__decorate([\n query('.roll-list')\n], TimeredCounterRollerDigit.prototype, \"rollList\", void 0);\n__decorate([\n state()\n], TimeredCounterRollerDigit.prototype, \"digitWidth\", void 0);\nTimeredCounterRollerDigit = __decorate([\n customElement('timered-counter-roller-digit')\n], TimeredCounterRollerDigit);\nexport { TimeredCounterRollerDigit };\n//# sourceMappingURL=roller-digit.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { isNumber, values } from 'remeda';\nimport './roller-digit.js';\nimport { rollerStyles } from './styles.js';\nclass RollerAnimationEvent extends Event {\n}\nlet TimeredCounterRoller = class TimeredCounterRoller extends LitElement {\n constructor() {\n super(...arguments);\n this.color = '';\n this.direction = 'up';\n this.parts = [];\n this.partPreprocessDataList = [];\n this.animationOptions = [];\n this.keyframes = [];\n this.cellStyles = [];\n this.digitStyles = [];\n this.partStyles = [];\n this.parentContainerRect = {};\n this.__partDigitsColorStyles = [];\n /**\n * 记录一次更新中, 启动动画并结束的 <timered-counter-roller-digit> 元素个数.\n *\n * 在每次更新前重置为 0.\n *\n * @see {@link __handleDigitAnimationEnd}\n * @private\n */\n this.digitAnimateEndCount = 0;\n /**\n * 记录一次更新中, 需要启动动画的 <timered-counter-roller-digit> 元素总数.\n *\n * 在每次更新前重新计算.\n * @private\n */\n this.digitAnimatedCount = 0;\n }\n render() {\n return html `<span\n class=\"roller__prefix\"\n data-part-id=\"-1\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-1]?.[0] ?? {}))}\n >\n <slot part=\"prefix\" name=\"prefix\"></slot>\n </span>\n <span class=\"counter-parts\">\n ${repeat(this.parts, (_, index) => index, (part, partIndex) => html `<span\n part=\"part\"\n class=\"roller-part\"\n style=${styleMap((this.partStyles?.[partIndex] ?? {}))}\n >${repeat(part.digits, (_, index) => `${part.digits.length - index}`, (digitInfo, digitIndex) => html `<timered-counter-roller-digit\n exportparts=\"digit, cell\"\n part=\"digit\"\n class=\"roller-part__wrapper\"\n style=${styleMap((this.digitStyles?.[partIndex]?.[digitIndex] ??\n {}))}\n data-part-id=\"${partIndex}\"\n data-digit-id=\"${digitIndex}\"\n .digit=${digitInfo}\n .preprocessData=${this.partPreprocessDataList[partIndex][digitIndex]}\n .direction=${this.direction}\n .textStyle=${this.__partDigitsColorStyles?.[partIndex]?.[digitIndex] ?? {}}\n .cellStyle=${this.cellStyles[partIndex][digitIndex]}\n .animationOptions=${this.animationOptions[partIndex][digitIndex]}\n .keyframes=${this.keyframes[partIndex][digitIndex]}\n @roller-digit-animation-end=${this\n .__handleDigitAnimationEnd}\n ></timered-counter-roller-digit>`)}${html `<span\n class=\"roller-part__suffix\"\n data-part-id=\"${partIndex}\"\n data-digit-id=\"-1\"\n style=${styleMap((this.__partDigitsColorStyles?.[partIndex]?.[-1] ??\n {}))}\n ><slot\n part=\"part-suffix\"\n name=${`part-suffix-${partIndex}`}\n ></slot\n ></span>`}</span\n > `)}</span\n ><span\n class=\"roller__suffix\"\n data-part-id=\"-2\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-2]?.[0] ?? {}))}\n ><slot part=\"suffix\" name=\"suffix\"></slot\n ></span>`;\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('direction') ||\n _changedProperties.has('parts')) {\n this.digitAnimateEndCount = 0;\n this.digitAnimatedCount = this.partPreprocessDataList\n .flat()\n .filter(({ animate }) => animate).length;\n if (this.digitAnimatedCount > 0) {\n this.__emitAnimationStart();\n }\n }\n this.__partDigitsColorStyles = this.__generatePartDigitsColorStyles();\n }\n __handleDigitAnimationEnd() {\n this.digitAnimateEndCount++;\n if (this.digitAnimateEndCount < this.digitAnimatedCount)\n return;\n this.__emitAnimationEnd();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-end'));\n }\n __generatePartDigitsColorStyles() {\n const result = [];\n const containerRect = this.parentContainerRect;\n const { \n // parts,\n // oldParts,\n prefixContainer, suffixContainer, color, } = this;\n const partDigitElements = Array.from(this.shadowRoot?.querySelectorAll('[data-part-id]').values() ?? []);\n /**\n * 当某次更新**将**会导致 DOM 宽高发生变化时(如: 滚动数字的位数增加/减少会导致宽度变化),\n * 需要跳过这次更新然后等待 DOM 宽高变化完成才能更新(宽高变化后将通过 {@link containerRect} 触发).\n */\n if (!containerRect) {\n return result;\n }\n /**\n * 比较 {@link data} 前后不同判断是否导致 DOM 宽度会发生变化.\n */\n // if (parts.length !== oldParts.length) {\n // this.requestUpdate();\n // return result;\n // }\n // for (let i = 0; i < parts.length; i++) {\n // if (parts[i].digits.length !== oldParts[i].digits.length) {\n // this.requestUpdate();\n // return result;\n // }\n // }\n if (prefixContainer)\n partDigitElements[-1] = prefixContainer;\n if (suffixContainer)\n partDigitElements[-2] = suffixContainer;\n for (const el of values(partDigitElements)) {\n const partId = Number.parseInt(el.dataset.partId ?? '-1', 10);\n const digitId = Number.parseInt(el.dataset.digitId ?? '-1', 10);\n if (!isNumber(partId) || !isNumber(digitId)) {\n throw new Error('The data-part-id and data-digit-id attributes are required.');\n }\n if (!result[partId])\n result[partId] = [];\n if (CSS.supports('color', color)) {\n result[partId][digitId] = { color };\n }\n else if (CSS.supports('background-image', color)) {\n result[partId][digitId] = {\n backgroundImage: color,\n backgroundClip: 'text',\n backgroundSize: `${containerRect.width}px ${containerRect.height}px`,\n backgroundPositionX: `${-el.offsetLeft}px`,\n backgroundPositionY: `${-el.offsetTop}px`,\n backgroundRepeat: 'no-repeat',\n color: 'transparent',\n // @ts-ignore\n '-webkit-text-fill-color': 'transparent',\n };\n }\n else {\n result[partId][digitId] = {};\n // todo error event\n // eslint-disable-next-line no-console\n console.warn(new Error('The color property is not supported.'));\n }\n }\n return result;\n }\n};\nTimeredCounterRoller.styles = [rollerStyles];\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"parts\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partPreprocessDataList\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"keyframes\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"cellStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"digitStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partStyles\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRoller.prototype, \"parentContainerRect\", void 0);\n__decorate([\n query('.roller__prefix')\n], TimeredCounterRoller.prototype, \"prefixContainer\", void 0);\n__decorate([\n query('.roller__suffix')\n], TimeredCounterRoller.prototype, \"suffixContainer\", void 0);\nTimeredCounterRoller = __decorate([\n customElement('timered-counter-roller')\n], TimeredCounterRoller);\nexport { TimeredCounterRoller };\n//# sourceMappingURL=roller.js.map","import{a as e}from\"./chunk-RAAYCPUM.js\";function r(...t){return e(Object.values,t)}export{r as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nexport const CounterAiraMixin = (superClass) => {\n class CounterAiraMixinClass extends superClass {\n constructor() {\n super(...arguments);\n this.ariaLabel = '';\n this.ariaLive = 'polite';\n // updated(changedProperties: PropertyValues<this>) {\n // if (changedProperties.has('value')) {\n // this.ariaLabel = this.generateAriaLabel();\n // }\n // }\n }\n /**\n * 生成 aria-label 属性值. 在每次更新完成后调用.\n */\n generateAriaLabel() {\n let label = '';\n const { direction } = this;\n for (const part of this.parts) {\n for (const digit of part.digits) {\n label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;\n }\n }\n return label;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n this.ariaLabel = this.generateAriaLabel();\n }\n }\n __decorate([\n property({ attribute: 'aria-label', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLabel\", void 0);\n __decorate([\n property({ attribute: 'aira-live', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLive\", void 0);\n return CounterAiraMixinClass;\n};\n//# sourceMappingURL=counter-aira.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { CounterStylesMixin } from './mixins/counter-styles.js';\nimport { CounterPartsMixin } from './mixins/counter-parts.js';\nimport { CounterBaseMixin } from './mixins/counter-base.js';\nimport { timeredCounterStyles } from './styles/timered-counter-styles.js';\nimport { CounterAnimationMixin } from './mixins/counter-animation.js';\nimport './transitions/roller/index.js';\nimport { CounterAiraMixin } from './mixins/counter-aira.js';\nclass TimeredCounterAnimationEvent extends Event {\n}\nlet TimeredCounter = class TimeredCounter extends CounterAiraMixin(CounterAnimationMixin(CounterStylesMixin(CounterPartsMixin(CounterBaseMixin(LitElement))))) {\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n this.partsContainerRect = this.partsContainer\n ? this.partsContainer.getBoundingClientRect()\n : new DOMRect();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.partsContainer) {\n this.resizeObserver.observe(this.partsContainer);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n class=\"timered-counter\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n dispatchTimeredCounterAnimationStart() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-start'));\n }\n dispatchTimeredCounterAnimationEnd() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-end'));\n }\n};\nTimeredCounter.styles = [timeredCounterStyles];\n__decorate([\n state()\n], TimeredCounter.prototype, \"partsContainerRect\", void 0);\n__decorate([\n query('timered-counter-roller')\n], TimeredCounter.prototype, \"partsContainer\", void 0);\nTimeredCounter = __decorate([\n customElement('timered-counter')\n], TimeredCounter);\nexport { TimeredCounter };\n//# sourceMappingURL=timered-counter.js.map","import { css } from 'lit';\nexport const timeredCounterNumberStyles = css ``;\n//# sourceMappingURL=timered-counter-number-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isBoolean, isNullish } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterNumberStyles } from './styles/timered-counter-number-styles.js';\nlet TimeredCounterNumber = class TimeredCounterNumber extends TimeredCounter {\n constructor() {\n super(...arguments);\n /**\n * 本地化数字格式化配置. 传入 `true` 时使用浏览器的默认配置.\n *\n * 详细配置参数请参考 [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)\n *\n * @default false\n */\n this.localeNumber = false;\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置中的小数点分隔符. 根据不同的地区可能是 `.` 或 `,`.\n * @see https://en.wikipedia.org/wiki/Decimal_separator\n */\n this.localDecimalSeparator = '';\n /**\n * 本地化数字格式化配置中的分组分隔符.\n * @see https://en.wikipedia.org/wiki/Decimal_separator#Digit_grouping\n */\n this.localeGroupingSeparator = '';\n }\n sampleToString(value) {\n return this.localeNumber\n ? // todo Intl.NumberFormat 最大支持 21 位数.\n this.localeNumberInstance.format(this.numberAdapter.toNumber(value))\n : this.numberAdapter.toString(value);\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n willUpdate(_changedProperties) {\n if (_changedProperties.has('localeNumber') ||\n _changedProperties.has('locale')) {\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置变化时, 更新 `partsOptions` 中的 `decimalSeparator`.\n */\n {\n const numberParts = this.localeNumberInstance.formatToParts(123456.789);\n const decimalSeparator = numberParts.find(part => part.type === 'decimal')?.value || '.';\n const groupingSeparator = numberParts.find(part => part.type === 'group')?.value || '';\n if (this.localDecimalSeparator !== decimalSeparator ||\n this.localeGroupingSeparator !== groupingSeparator) {\n this.localDecimalSeparator = decimalSeparator;\n const oldPartsOptions = this.partsOptions;\n this.partsOptions = {\n ...oldPartsOptions,\n decimalSeparator: this.localDecimalSeparator,\n };\n _changedProperties.set('partsOptions', oldPartsOptions);\n }\n }\n }\n super.willUpdate(_changedProperties);\n }\n};\nTimeredCounterNumber.styles = [...TimeredCounter.styles, timeredCounterNumberStyles];\n__decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return false;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return true;\n }\n },\n reflect: true,\n attribute: 'locale-number',\n })\n], TimeredCounterNumber.prototype, \"localeNumber\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localDecimalSeparator\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localeGroupingSeparator\", void 0);\nTimeredCounterNumber = __decorate([\n customElement('timered-counter-number')\n], TimeredCounterNumber);\nexport { TimeredCounterNumber };\n//# sourceMappingURL=timered-counter-number.js.map","import { css } from 'lit';\nexport const timeredCounterStringStyles = css ``;\n//# sourceMappingURL=timered-counter-string-styles.js.map","/**\n * @license https://github.com/HarasimowiczKamil/any-base\n */\nimport { isDeepEqual } from 'remeda';\nfunction isValid(number, alphabet) {\n for (const char of number) {\n if (alphabet.indexOf(char) === -1) {\n return false;\n }\n }\n return true;\n}\nfunction convert(srcAlphabet, dstAlphabet, number) {\n let i;\n let divide;\n let newLen;\n let { length } = number;\n const numberMap = {};\n const fromBase = srcAlphabet.length;\n const toBase = dstAlphabet.length;\n const result = [];\n if (!isValid(number, srcAlphabet)) {\n throw new Error(`Number \"${number}\" contains of non-alphabetic digits (${srcAlphabet})`);\n }\n if (isDeepEqual(srcAlphabet, dstAlphabet)) {\n return number.join('');\n }\n for (i = 0; i < length; i++) {\n numberMap[i] = srcAlphabet.indexOf(number[i]);\n }\n do {\n divide = 0;\n newLen = 0;\n for (i = 0; i < length; i++) {\n divide = divide * fromBase + numberMap[i];\n if (divide >= toBase) {\n numberMap[newLen++] = Math.floor(divide / toBase);\n divide %= toBase;\n }\n else if (newLen > 0) {\n numberMap[newLen++] = 0;\n }\n }\n length = newLen;\n result.push(dstAlphabet[divide]);\n } while (newLen !== 0);\n return result.reverse().join('');\n}\nexport function anyBase(sa, srcAlphabet, dstAlphabet) {\n return (number) => convert(sa.stringToChars(srcAlphabet), sa.stringToChars(dstAlphabet), sa.stringToChars(number));\n}\nexport const BIN = '01';\nexport const OCT = '01234567';\nexport const DEC = '0123456789';\nexport const HEX = '0123456789abcdef';\n//# sourceMappingURL=any-base.js.map","import { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { isEmpty, isString } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterStringStyles } from './styles/timered-counter-string-styles.js';\nimport { anyBase } from './utils/any-base.js';\n/**\n * 替换一些特定的字符.\n * 1. \" \": 空格字符在 HTML 中会被忽略导致无法计算字符宽度, 使用 \\xa0 替换.\n */\nconst REPLACED_CHARS = {\n ' ': '\\xa0', // &nbsp;\n};\nlet TimeredCounterString = class TimeredCounterString extends TimeredCounter {\n constructor() {\n super(...arguments);\n // /**\n // * 自定义字符集, 传入的 `value` 的字符串表示形式的每个字符都**必须**被包含在该字符集中.\n // *\n // * @default `value` 的去重字符集.\n // */\n // @property({\n // reflect: true,\n // })\n this.__alphabet = '';\n this.__initialValueString = '';\n this.__valueString = '';\n this.__oldValueString = '';\n this.__partsOptions = null;\n this.__decimalToAnyBase = anyBase(this.stringAdapter, '0123456789', this.__alphabet);\n this.__anyBaseToDecimal = anyBase(this.stringAdapter, this.__alphabet, '0123456789');\n }\n get initialValue() {\n return super.initialValue;\n }\n set initialValue(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n this.__initialValueString = value ?? '';\n if (isEmpty(this.__initialValueString)) {\n super.initialValue = this.numberAdapter.create(0);\n return;\n }\n /**\n * `initialValue` 在初始化时会被赋值给 `oldValue`, 因此, 同步更新逻辑与 `value` 的 setter 一致.\n */\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n super.initialValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__initialValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持任意字符串.\n */\n set value(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n else if (this.__valueString === value) {\n return;\n }\n this.__oldValueString = this.__valueString;\n this.__valueString = value ?? '';\n if (isEmpty(this.__valueString)) {\n super.value = this.numberAdapter.create(0);\n return;\n }\n /**\n * 传入的 value 通过 `__anyBaseToDecimal` 转换为十进制数值, `__anyBaseToDecimal` 则基于 `__alphabet` 计算.\n * 因此, 当 `__alphabet` 更新时, 需要重新计算 `value` 和 `oldValue` 的值.\n * 以确保 `value` 和 `oldValue` 能够通过 `__decimalToAnyBase` 转换为原始字符串.\n */\n this.__updateAlphabet(this.__valueString, this.__oldValueString);\n super.oldValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__oldValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n type: 'string',\n fillChar: REPLACED_CHARS[' '],\n ...this.__partsOptions,\n digitToChar: {\n ' ': REPLACED_CHARS[' '],\n ...this.__partsOptions.digitToChar,\n },\n };\n }\n /**\n * 根据 `value`, `initialValue`, `oldValue` 更新字符集.\n * @private\n */\n __updateAlphabet(value, oldValue) {\n const allChars = isEmpty(value) && isEmpty(oldValue)\n ? ''\n : `\\x00${oldValue ?? ''}${value ?? ''}`;\n const charSet = new Set(this.stringAdapter.stringToChars(allChars));\n // if (charSet.size < 10) {\n // for (let i = 0; i < 10; i++) {\n // charSet.add(i.toString());\n // if (charSet.size >= 10) break;\n // }\n // }\n this.__alphabet = Array.from(charSet).sort().join('');\n const sa = this.stringAdapter;\n const alphabet = this.__alphabet;\n this.__decimalToAnyBase = anyBase(sa, '0123456789', alphabet);\n this.__anyBaseToDecimal = anyBase(sa, alphabet, '0123456789');\n }\n sampleToString(value) {\n return this.__decimalToAnyBase(this.numberAdapter.toString(value));\n }\n connectedCallback() {\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n this.initialValue = this.__initialValueString;\n this.value = this.__valueString;\n /**\n * TimeredCounterString 有自定义的 `fillChar` 和 `digitToChar`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n super.connectedCallback();\n }\n};\nTimeredCounterString.styles = [...TimeredCounter.styles, timeredCounterStringStyles];\nTimeredCounterString = __decorate([\n customElement('timered-counter-string')\n], TimeredCounterString);\nexport { TimeredCounterString };\n//# sourceMappingURL=timered-counter-string.js.map","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\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 the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const 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 * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { toDate } from \"../toDate.js\";\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 */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.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](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 *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\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 *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const sign = compareLocalAsc(laterDate_, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarDays(laterDate_, earlierDate_),\n );\n\n laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n const isLastDayNotFull = Number(\n compareLocalAsc(laterDate_, earlierDate_) === -sign,\n );\n\n const result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n const diff =\n laterDate.getFullYear() - earlierDate.getFullYear() ||\n laterDate.getMonth() - earlierDate.getMonth() ||\n laterDate.getDate() - earlierDate.getDate() ||\n laterDate.getHours() - earlierDate.getHours() ||\n laterDate.getMinutes() - earlierDate.getMinutes() ||\n laterDate.getSeconds() - earlierDate.getSeconds() ||\n laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n if (diff < 0) return -1;\n if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\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 laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\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 * const 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 * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\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 laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { toDate } from \"./toDate.js\";\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 - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addHours } from \"./addHours.js\";\n\n/**\n * The {@link subHours} function options.\n */\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport function subHours(date, amount, options) {\n return addHours(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link subMilliseconds} function options.\n */\n\n/**\n * Subtract the specified number of milliseconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the milliseconds subtracted\n */\nexport function subMilliseconds(date, amount, options) {\n return addMilliseconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMilliseconds;\n","import { addMinutes } from \"./addMinutes.js\";\n\n/**\n * The {@link subMinutes} function options.\n */\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the minutes subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport function subMinutes(date, amount, options) {\n return addMinutes(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMinutes;\n","import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n const _date = toDate(date, options?.in);\n _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { addQuarters } from \"./addQuarters.js\";\n\n/**\n * The {@link subQuarters} function options.\n */\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport function subQuarters(date, amount, options) {\n return addQuarters(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addSeconds } from \"./addSeconds.js\";\n\n/**\n * The {@link subSeconds} function options.\n */\n\n/**\n * Subtract the specified number of seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport function subSeconds(date, amount, options) {\n return addSeconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subSeconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\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 weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","export var DurationPartType;\n(function (DurationPartType) {\n DurationPartType[\"Millisecond\"] = \"millisecond\";\n DurationPartType[\"Second\"] = \"second\";\n DurationPartType[\"Minute\"] = \"minute\";\n DurationPartType[\"Hour\"] = \"hour\";\n DurationPartType[\"Day\"] = \"day\";\n DurationPartType[\"Week\"] = \"weekOfYear\";\n DurationPartType[\"Month\"] = \"month\";\n DurationPartType[\"Quarter\"] = \"quarter\";\n DurationPartType[\"Year\"] = \"year\";\n})(DurationPartType || (DurationPartType = {}));\nexport const DurationPartMillisecond = {\n [DurationPartType.Millisecond]: 1,\n [DurationPartType.Second]: 1000,\n [DurationPartType.Minute]: 60000,\n [DurationPartType.Hour]: 3600000,\n [DurationPartType.Day]: 86400000,\n [DurationPartType.Week]: 604800000,\n [DurationPartType.Month]: 2629800000,\n [DurationPartType.Quarter]: 7889400000,\n [DurationPartType.Year]: 31557600000,\n};\nexport const DurationPartMillisecondToType = {\n 1: DurationPartType.Millisecond,\n 1000: DurationPartType.Second,\n 60000: DurationPartType.Minute,\n 3600000: DurationPartType.Hour,\n 86400000: DurationPartType.Day,\n 604800000: DurationPartType.Week,\n 2629800000: DurationPartType.Month,\n 7889400000: DurationPartType.Quarter,\n 31557600000: DurationPartType.Year,\n};\n//# sourceMappingURL=duration.js.map","export const DateTimeFields = [\n \"era\",\n \"year\",\n \"quarter\",\n \"month\",\n \"weekOfYear\",\n \"weekday\",\n \"day\",\n \"dayPeriod\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n];\nexport function getLocalizedDateTimeFields(locale) {\n const displayNames = new Intl.DisplayNames(locale, {\n type: \"dateTimeField\",\n });\n return DateTimeFields.reduce((acc, field) => {\n acc[field] = displayNames.of(field) ?? \"\";\n return acc;\n }, {});\n}\n//# sourceMappingURL=localized-date-time-fields.js.map","import { differenceInMilliseconds, differenceInDays, differenceInHours, differenceInMinutes, differenceInMonths, differenceInQuarters, differenceInSeconds, differenceInWeeks, differenceInYears, subDays, subHours, subMilliseconds, subMinutes, subMonths, subQuarters, subSeconds, subWeeks, subYears, } from 'date-fns';\nimport { DurationPartType } from '../types/duration.js';\n/**\n * 计算两个日期之间的时间间隔. 返回一个数组, 包含 {@link parts} 每个部分的值.\n *\n * @example duration(new Date(\"2022-01-01\"), new Date(\"2022-01-02\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 0, 0]\n * @example duration(new Date(\"2022-01-01 12:00:00\"), new Date(\"2022-01-02 12:30:00\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 30, 0]\n *\n * @param start\n * @param end\n * @param parts\n */\nexport function durationObject(start, end, parts) {\n let remain = end;\n const result = {};\n for (const part of parts) {\n let value = 0;\n switch (part) {\n case DurationPartType.Year:\n value = differenceInYears(remain, start);\n remain = subYears(remain, value);\n break;\n case DurationPartType.Quarter:\n value = differenceInQuarters(remain, start);\n remain = subQuarters(remain, value);\n break;\n case DurationPartType.Month:\n value = differenceInMonths(remain, start);\n remain = subMonths(remain, value);\n break;\n case DurationPartType.Week:\n value = differenceInWeeks(remain, start);\n remain = subWeeks(remain, value);\n break;\n case DurationPartType.Day:\n value = differenceInDays(remain, start);\n remain = subDays(remain, value);\n break;\n case DurationPartType.Hour:\n value = differenceInHours(remain, start);\n remain = subHours(remain, value);\n break;\n case DurationPartType.Minute:\n value = differenceInMinutes(remain, start);\n remain = subMinutes(remain, value);\n break;\n case DurationPartType.Second:\n value = differenceInSeconds(remain, start);\n remain = subSeconds(remain, value);\n break;\n case DurationPartType.Millisecond:\n value = differenceInMilliseconds(remain, start);\n remain = subMilliseconds(remain, value);\n break;\n default:\n throw new Error(`Unknown duration part: ${part}`);\n }\n result[part] = value;\n }\n return result;\n}\nexport function duration(start, end, parts) {\n const obj = durationObject(start, end, parts);\n return parts.map(part => obj[part]);\n}\n//# sourceMappingURL=duration.js.map","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { isNumber } from 'remeda';\nimport { DurationPartType } from '../types/duration.js';\nconst ISO8601DurationMarker = {\n [DurationPartType.Year]: 'Y',\n [DurationPartType.Month]: 'M',\n [DurationPartType.Week]: 'W',\n [DurationPartType.Day]: 'D',\n [DurationPartType.Hour]: 'H',\n [DurationPartType.Minute]: 'M',\n [DurationPartType.Second]: 'S',\n};\nconst DateParts = [\n DurationPartType.Year,\n DurationPartType.Month,\n DurationPartType.Week,\n DurationPartType.Day,\n];\nconst TimeParts = [\n DurationPartType.Hour,\n DurationPartType.Minute,\n DurationPartType.Second,\n];\nexport function iso8601Duration(duration) {\n const datePart = DateParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n const timePart = TimeParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n return `P${datePart.join('')}T${timePart.join('')}`;\n}\n//# sourceMappingURL=iso8601-duration.js.map","import { css } from 'lit';\nexport const timeredCounterDatetimeStyles = css `\n ::part(part-suffix) {\n font-size: 0.4em;\n line-height: 1;\n }\n`;\n//# sourceMappingURL=timered-counter-datetime-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isArray, isDate, isNullish, isString, map } from 'remeda';\nimport { isValid, toDate, isBefore } from 'date-fns';\nimport { TimeredCounter } from './timered-counter.js';\nimport { DurationPartMillisecond, DurationPartType } from './types/duration.js';\nimport { getLocalizedDateTimeFields } from './utils/localized-date-time-fields.js';\nimport { duration, durationObject } from './utils/duration.js';\nimport { iso8601Duration } from './utils/iso8601-duration.js';\nimport { timeredCounterDatetimeStyles } from './styles/timered-counter-datetime-styles.js';\nimport { parseJsonString } from './utils/parse-json-string.js';\n/**\n * 根据最小精度对 from 进行优化. 避免频繁更新.\n *\n * 1. from 先会被减小到 minPrecisionMs 的整数倍.\n * 2. 如果 from 和 to 的差值不是 minPrecisionMs 的整数倍, 则再加上/减去一个 minPrecisionMs 的值. 加上或减去取决于 from 和 to 的谁更大.\n * 这相当于将 from 中小于 minPrecisionMs 的值舍入到 minPrecisionMs 的整数倍.\n * 3. 加上 to 余 minPrecisionMs 的值, 保证 from 与 to 的差值是 minPrecisionMs 的整数倍.\n */\nfunction optimizeFrom(from, to, minPrecision) {\n const minPrecisionMs = DurationPartMillisecond[minPrecision];\n const fromTS = from.getTime();\n const toTS = to.getTime();\n const base = fromTS - (fromTS % minPrecisionMs);\n const offset = Math.abs(toTS - fromTS) % minPrecisionMs;\n return (base +\n (offset > 0 ? (fromTS < toTS ? -1 : 1) * minPrecisionMs : 0) +\n // 加上 deadlineDate 的余数, 消除精度误差.\n (toTS % minPrecisionMs));\n}\nfunction toDurationInMilliseconds(value, minPrecision) {\n if (isString(value))\n value = parseJsonString(value);\n if (!isArray(value))\n value = [value, value];\n const result = [\n isDate(value[0]) ? value[0] : toDate(value[0]),\n isDate(value[1]) ? value[1] : toDate(value[1]),\n ];\n if (!isValid(result[0]) || !isValid(result[1])) {\n throw new Error(`value ${value[0]} or ${value[1]} is not a valid date.`);\n }\n const durationInMilliseconds = Math.abs(result[1].getTime() - optimizeFrom(result[0], result[1], minPrecision));\n return {\n durationInMilliseconds,\n from: result[0],\n to: result[1],\n };\n}\nlet TimeredCounterDatetimeDuration = class TimeredCounterDatetimeDuration extends TimeredCounter {\n constructor() {\n super(...arguments);\n this.__precision = [DurationPartType.Second, DurationPartType.Day];\n this.__initialValuePlain = null;\n this.__partsOptions = null;\n this.__from = new Date();\n this.__to = new Date();\n this.__minPrecision = DurationPartType.Second;\n this.__maxPrecision = DurationPartType.Day;\n this.__availableDurationParts = [];\n this.__dateTimeFieldLabels = {};\n }\n /**\n * 计数器显示的精度.\n * 1. 当为单个值时, 表示最小精度.\n * 2. 当为数组时, 第一个值表示最小精度, 第二个值表示最大精度.\n *\n * @default [DurationPartType.Second, DurationPartType.Day]\n *\n * @example DurationPartType.Second 显示从年份到秒数的所有精度.\n * @example [DurationPartType.Second, DurationPartType.Day] 显示从天数到秒数的所有精度.\n * @example [DurationPartType.Millisecond, DurationPartType.Year] 显示从年份到毫秒的所有精度.\n */\n get precision() {\n return this.__precision;\n }\n set precision(value) {\n if (isString(value))\n value = parseJsonString(value);\n this.__precision = value;\n /**\n * `precision` 相关属性的更新需要立即更新, 以便于在 `value`, `initialValue` 等属性的 setter 中使用.\n */\n this.__minPrecision = isArray(this.__precision)\n ? this.__precision[0]\n : this.__precision;\n this.__maxPrecision = isArray(this.__precision)\n ? this.__precision[1]\n : this.__precision;\n this.__availableDurationParts = Object.values(DurationPartType)\n .reverse()\n .map(type => {\n const minPrecisionBreakpoint = DurationPartMillisecond[this.__minPrecision];\n const maxPrecisionBreakpoint = DurationPartMillisecond[this.__maxPrecision];\n const partMilliseconds = DurationPartMillisecond[type];\n return {\n type,\n available: partMilliseconds >= minPrecisionBreakpoint &&\n partMilliseconds <= maxPrecisionBreakpoint,\n };\n })\n .filter(part => part.available);\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持 Date 类型.\n */\n set value(value) {\n const { from, to, durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n this.__from = from;\n this.__to = to;\n super.value = durationInMilliseconds;\n }\n get initialValue() {\n return super.initialValue;\n }\n /**\n * 同 value\n */\n set initialValue(value) {\n this.__initialValuePlain = value;\n const { durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n super.initialValue = durationInMilliseconds;\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n minPlaces: [2, undefined],\n ...this.__partsOptions,\n };\n }\n sampleSplit(samples) {\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n const tempParts = availableDurationPartTypes.map(() => []);\n for (const n of samples) {\n const num = this.numberAdapter.toNumber(n);\n /**\n * 计算并保存每个在 {@link precision} 范围内的时间部分的值\n */\n const availablePartValues = duration(new Date(Math.min(num, 0)), new Date(Math.max(num, 0)), availableDurationPartTypes);\n availablePartValues.forEach((value, i) => tempParts[i].push(value));\n }\n return tempParts;\n }\n generateAriaLabel() {\n return iso8601Duration(durationObject(isBefore(this.__from, this.__to) ? this.__from : this.__to, isBefore(this.__from, this.__to) ? this.__to : this.__from, map(this.__availableDurationParts, part => part.type)));\n }\n connectedCallback() {\n this.role = 'timer';\n /**\n * TimeredCounterDatetimeDuration 将 `minPlaces` 默认设置为 `[2]`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n this.initialValue = this.__initialValuePlain;\n /**\n * 类似上方的 partsOptions, precision 也需要在初始化时手动触发 setter. 以此确保 __minPrecision, __maxPrecision, __availableDurationParts 有值.\n */\n this.precision = this.__precision;\n super.connectedCallback();\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('locale')) {\n this.__dateTimeFieldLabels = getLocalizedDateTimeFields(this.localeInstance);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n ><slot name=\"prefix\" slot=\"prefix\"></slot\n ><slot name=\"suffix\" slot=\"suffix\"></slot>${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<span slot=${`part-suffix-${partIndex}`} class=\"duration-unit\"\n >${this.__dateTimeFieldLabels[availableDurationPartTypes[partIndex]]}</span\n >`)}\n </timered-counter-roller>\n `;\n }\n};\nTimeredCounterDatetimeDuration.styles = [...TimeredCounter.styles, timeredCounterDatetimeStyles];\n__decorate([\n property({\n reflect: true,\n converter: value => {\n if (isNullish(value))\n return value;\n return parseJsonString(value);\n },\n })\n], TimeredCounterDatetimeDuration.prototype, \"precision\", null);\nTimeredCounterDatetimeDuration = __decorate([\n customElement('timered-counter-datetime-duration')\n], TimeredCounterDatetimeDuration);\nexport { TimeredCounterDatetimeDuration };\n//# sourceMappingURL=timered-counter-datetime-duration.js.map","// export {\n// easeIn,\n// easeOut,\n// easeInOut,\n// anticipate,\n// steps,\n// cubicBezier,\n// } from \"motion\";\nexport const linear = (x) => x;\n//# sourceMappingURL=easing-functions.js.map","import { TimeredCounter } from './timered-counter.js';\nimport { TimeredCounterNumber } from './timered-counter-number.js';\nimport { TimeredCounterString } from './timered-counter-string.js';\nimport { TimeredCounterDatetimeDuration } from './timered-counter-datetime-duration.js';\nimport { CounterAdapter } from './counter-adapter.js';\nexport function setNumberAdapter(adapterOrType, config) {\n CounterAdapter.setNumberAdapter(adapterOrType, config);\n}\nexport function setStringAdapter(adapterOrType) {\n CounterAdapter.setStringAdapter(adapterOrType);\n}\nexport { TimeredCounter, TimeredCounterDatetimeDuration, TimeredCounterNumber, TimeredCounterString, };\nexport * from './easing/index.js';\nexport * from './types/index.js';\n//# sourceMappingURL=index.js.map"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","value","get","SuppressedError","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$6","constructor","this","_$cssResult$","Error","cssText","styleSheet","replaceSync","set","toString","reduce","n","cssRules","is","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","x","_$litType$","strings","values","T","for","E","A","C","createTreeWalker","N","parts","lastIndex","exec","test","startsWith","V","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M$1","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","M","_$AP","remove","setConnected","k$1","element","fill","j","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","Z","litHtmlPolyfillSupport","litHtmlVersions","r$5","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","customElements","define","init","querySelector","i$2","_$Ct","_$Ci","_$AQ","dt","ut","w","done","hasNext","lazy","lazyArgs","assign","isSingle","single","items","B","at","entries","hasMany","next","isNaN","Date","splice","getTime","extractPartOption","option","getterOptions","groupOption","isFunction","extractGroupOption","result","extractPartDigitOption","extractedOption","digits","partOption","extractPartDigitCellOption","digitData","partDigitOption","mergeGroupOption","source","merge","mergePartOption","from","concat","parseInt","mergePartDigitOption","CounterStylesMixin","superClass","CounterStylesMixinClass","cellStyles","cachedCellStyles","digitStyles","cachedDigitStyles","partStyles","cachedPartStyles","color","extractCellStyles","preprocessData","partPreprocessDataList","direction","oldValue","mergePartDigitCellOption","cellStylesDynamic","isDeepEqual","extractDigitStyles","digitStylesDynamic","extractPartStyles","partStylesDynamic","property","zip","matrix","valueof","min","undefined","transpose","row","rollerPartTest","newDirection","oldDirection","newDigits","oldDigits","animate","cancelPrevAnimation","earlyReturn","parseJsonString","error","preprocessPartsOptions","digitToChar","char","fromCodePoint","isObjectType","CounterPartsMixin","_a","_CounterPartsMixinClass___partsOptions","CounterPartsMixinClass","DEFAULT_PARTS_OPTIONS","oldParts","partsOptions","old","__classPrivateFieldSet","sampling","to","na","count","_count","interpolateFunc","isInteger","round","mul","sub","create","interpolateRound","interpolateNumber","eq","percent","div","max","transitionDigit","numberAdapter","sampleCount","sampleSplit","samples","sampleToString","changedProperties","processPartData","newData","oldData","results","globalIndex","newPart","oldPart","partDataResults","newDigit","oldDigit","find","place","partIndex","digitIndex","preprocessPartData","decimalSeparator","minPlaces","fillChar","_sampleToString","tempParts","directionValue","gt","partData","tailNumber","minIntegerPlaces","minDecimalPlaces","numberParts","integerPlaces","stringAdapter","stringToChars","decimalPlaces","integer","decimal","integerChars","decimalChars","filledIntegerPlaces","filledDecimalPlaces","filledChars","digitList","array","filter","digit","digitArray","BuildInNumberAdapter","num","isFinite","compare","gte","lt","lte","isNegative","isPositive","isZero","abs","ceil","floor","toNumber","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","mathpow","pow","isBinary","isHex","isOctal","isDecimal","BASE","LN10_PRECISION","PI_PRECISION","toStringTag","digitsToString","ws","indexOfLastWord","str","getZeroString","checkInt32","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","arrL","arr","strL","charAt","absoluteValue","finalise","clampedTo","clamp","Ctor","NaN","cmp","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","cos","pr","sd","len","tinyPow","taylorSeries","times","cos2x","minus","plus","toLessThanHalfPi","neg","cubeRoot","cbrt","rep","t3","t3plusx","toExponential","divide","dp","dividedBy","dividedToIntegerBy","divToInt","equals","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh","one","cosh2_x","d8","hyperbolicSine","sinh","sqrt","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","acos","halfPi","isNeg","getPi","asin","inverseHyperbolicCosine","acosh","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","atan","inverseTangent","px","x2","isInt","isPos","lessThan","lessThanOrEqualTo","logarithm","log","base","isBase10","denominator","inf","arg","naturalLogarithm","getLn10","xe","xLTy","pop","shift","getBase10Exponent","mod","q","naturalExponential","exp","negated","carry","getPrecision","sine","sin","sin2_x","squareRoot","tangent","tan","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","trunc","valueOf","toJSON","multiplyInteger","temp","aL","bL","subtract","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","ltgt","guard","sum","c0","numerator","x1","parseDecimal","replace","search","substring","charCodeAt","parseOther","divisor","isFloat","Decimal","isHyperbolic","pi","atan2","config","obj","useDefaults","defaults","ps","getRandomValues","randomBytes","hypot","isDecimalInstance","log2","log10","Uint32Array","copy","clone","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","numberRegex","BuildInStringAdapter","GraphemeSplitter","Extend","Regional_Indicator","Prepend","E_Base","Glue_After_Zwj","E_Base_GAZ","codePointAt","idx","code","hi","low","shouldBreak","start","mid","end","all","previous","eModifierIndex","lastIndexOf","every","rIIndex","previousNonExtendIndex","getGraphemeBreakProperty","nextBreak","string","pos","prev","splitGraphemes","brk","res","iterateGraphemes","bind","countGraphemes","CounterAdapter","setNumberAdapter","adapterOrType","adapter","isString","includes","InnerDecimal","DecimalJsAdapter","NUMBER_ADAPTER","setStringAdapter","locales","segmenter","Intl","Segmenter","granularity","segment","BuildInIntlSegmenterAdapter","splitter","GraphemeSplitterAdapter","STRING_ADAPTER","VALUE_CONVERTER","isNullish","CounterBaseMixin","CounterBaseMixinClass","__value","trim","__oldValue","initialValue","__initialValue","locale","__locale","localeInstance","Locale","isNonNullish","timeredCounterStyles","css","CounterAnimationMixin","CounterAnimationMixinClass","animationOptions","cachedAnimationOptions","keyframes","cachedKeyframes","extractAnimationOptions","animationOptionsDynamic","extractKeyframes","keyframesDynamic","style","ft","removeProperty","setProperty","join","st","nt","classList","rollerStyles","rollerDigitStyles","noop","any","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","c4","easeOutElastic","easeInOutElastic","c5","easeOutBounce","easeInBounce","easeInOutBounce","RollerDigitAnimationEvent","Event","TimeredCounterRollerDigit","textStyle","cellStyle","digitWidth","resizeObserver","ResizeObserver","clonedRollDigitList","getBoundingClientRect","DOMRect","width","_changedProperties","observe","disconnect","intersection","shouldAnimate","startAnimation","then","shadowCellStyle","omit","html","styleMap","repeat","classMap","animation","cancel","rollList","__emitAnimationStart","anmOptions","duration","iterations","easing","isEmpty","up","transform","down","EasingFunctions","func","range","clearAnimation","__emitAnimationEnd","console","dispatchEvent","query","customElement","RollerAnimationEvent","TimeredCounterRoller","parentContainerRect","__partDigitsColorStyles","digitAnimateEndCount","digitAnimatedCount","part","digitInfo","__handleDigitAnimationEnd","__generatePartDigitsColorStyles","containerRect","prefixContainer","suffixContainer","partDigitElements","querySelectorAll","partId","dataset","digitId","isNumber","CSS","supports","backgroundImage","backgroundClip","backgroundSize","height","backgroundPositionX","offsetLeft","backgroundPositionY","offsetTop","backgroundRepeat","warn","CounterAiraMixin","CounterAiraMixinClass","ariaLabel","ariaLive","generateAriaLabel","label","TimeredCounterAnimationEvent","exports","TimeredCounter","partsContainerRect","partsContainer","dispatchTimeredCounterAnimationStart","dispatchTimeredCounterAnimationEnd","timeredCounterNumberStyles","TimeredCounterNumber","localeNumber","localeNumberInstance","NumberFormat","isBoolean","localDecimalSeparator","localeGroupingSeparator","format","formatToParts","groupingSeparator","oldPartsOptions","timeredCounterStringStyles","anyBase","sa","srcAlphabet","dstAlphabet","number","newLen","numberMap","fromBase","toBase","alphabet","isValid","convert","REPLACED_CHARS","TimeredCounterString","__alphabet","__initialValueString","__valueString","__oldValueString","__partsOptions","__decimalToAnyBase","__anyBaseToDecimal","__updateAlphabet","allChars","charSet","sort","millisecondsInHour","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","setDate","getDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getMonth","setFullYear","getFullYear","addMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","normalizeDates","dates","normalize","startOfDay","setHours","compareAsc","dateLeft","dateRight","diff","differenceInDays","laterDate","earlierDate","laterDate_","earlierDate_","compareLocalAsc","difference","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","differenceInCalendarDays","getRoundingMethod","method","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","isLastDayOfMonth","endOfDay","month","endOfMonth","differenceInMonths","workingLaterDate","differenceInCalendarMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","differenceInCalendarYears","isBefore","dateToCompare","subDays","subHours","addHours","subMilliseconds","subMinutes","setTime","addMinutes","subQuarters","addQuarters","subSeconds","addSeconds","subWeeks","addWeeks","subYears","addYears","DurationPartType","DurationPartMillisecond","Millisecond","Second","Minute","Hour","Day","Week","Month","Quarter","Year","DurationPartMillisecondToType","DateTimeFields","durationObject","remain","ISO8601DurationMarker","DateParts","TimeParts","timeredCounterDatetimeStyles","toDurationInMilliseconds","minPrecision","isDate","durationInMilliseconds","minPrecisionMs","fromTS","toTS","optimizeFrom","TimeredCounterDatetimeDuration","__precision","__initialValuePlain","__from","__to","__minPrecision","__maxPrecision","__availableDurationParts","__dateTimeFieldLabels","minPrecisionBreakpoint","maxPrecisionBreakpoint","partMilliseconds","available","availableDurationPartTypes","datePart","timePart","iso8601Duration","role","displayNames","DisplayNames","acc","field","of","getLocalizedDateTimeFields"],"mappings":"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AUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,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ACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,EAzsCL,EA+sCJ,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,G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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,37,41,44,47,52,55,56,62,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,116]}
1
+ {"version":3,"file":"timered-counter.global.js","sources":["../node_modules/tslib/tslib.es6.mjs","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/query.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/lit-html/directive.js","../node_modules/lit-html/directive-helpers.js","../node_modules/lit-html/directives/repeat.js","../node_modules/remeda/dist/chunk-ANXBDSUI.js","../node_modules/remeda/dist/chunk-7BKSRZNG.js","../node_modules/remeda/dist/chunk-RAAYCPUM.js","../node_modules/remeda/dist/chunk-K26VP6CL.js","../node_modules/remeda/dist/chunk-ENXBNJ36.js","../node_modules/remeda/dist/chunk-PJOV2RDB.js","../node_modules/remeda/dist/chunk-RLZQTLGN.js","../node_modules/remeda/dist/chunk-K5HTIQFL.js","../node_modules/remeda/dist/chunk-COZRMC32.js","../node_modules/remeda/dist/chunk-6GTAPB47.js","../node_modules/remeda/dist/chunk-SFZGYJFI.js","../node_modules/remeda/dist/chunk-VCYTMP4D.js","../node_modules/remeda/dist/chunk-JK3VNB42.js","../node_modules/remeda/dist/chunk-BO3LQZNF.js","../node_modules/remeda/dist/chunk-7QX4DO53.js","../node_modules/remeda/dist/chunk-VMV5GVZ5.js","../node_modules/remeda/dist/chunk-VFKB5IBK.js","../node_modules/remeda/dist/chunk-73TZMTEA.js","../node_modules/remeda/dist/chunk-IEE7G5JG.js","src/utils/extract-group-option.js","../node_modules/remeda/dist/chunk-ENOHV5LT.js","src/mixins/counter-styles.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-array/src/min.js","src/utils/preprocess-part-data.js","src/utils/parse-json-string.js","src/mixins/counter-parts.js","../node_modules/remeda/dist/chunk-NMC53JVB.js","src/utils/transition-digit.js","src/number-adapter/build-in-number.js","../node_modules/decimal.js/decimal.mjs","src/number-adapter/decimal-js.js","src/string-adapter/build-in-string.js","../node_modules/grapheme-splitter/index.js","src/counter-adapter.js","src/string-adapter/build-in-intl-segmenter.js","src/string-adapter/grapheme-splitter.js","src/mixins/counter-base.js","../node_modules/remeda/dist/chunk-GK5I7C4J.js","src/styles/timered-counter-styles.js","src/mixins/counter-animation.js","../node_modules/lit-html/directives/style-map.js","../node_modules/lit-html/directives/class-map.js","src/transitions/roller/styles.js","src/easing/cubic-bezier.js","src/easing/penner-easing-functions.js","src/transitions/roller/roller-digit.js","src/transitions/roller/roller.js","../node_modules/remeda/dist/chunk-IUVYQYF2.js","src/mixins/counter-aira.js","src/timered-counter.js","src/styles/timered-counter-number-styles.js","src/timered-counter-number.js","src/styles/timered-counter-string-styles.js","src/utils/any-base.js","src/timered-counter-string.js","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/differenceInDays.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/_lib/getRoundingMethod.js","../node_modules/date-fns/differenceInHours.js","../node_modules/date-fns/differenceInMilliseconds.js","../node_modules/date-fns/differenceInMinutes.js","../node_modules/date-fns/isLastDayOfMonth.js","../node_modules/date-fns/endOfDay.js","../node_modules/date-fns/endOfMonth.js","../node_modules/date-fns/differenceInMonths.js","../node_modules/date-fns/differenceInCalendarMonths.js","../node_modules/date-fns/differenceInQuarters.js","../node_modules/date-fns/differenceInSeconds.js","../node_modules/date-fns/differenceInWeeks.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/subHours.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/subMilliseconds.js","../node_modules/date-fns/subMinutes.js","../node_modules/date-fns/addMinutes.js","../node_modules/date-fns/subQuarters.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/subSeconds.js","../node_modules/date-fns/addSeconds.js","../node_modules/date-fns/subWeeks.js","../node_modules/date-fns/addWeeks.js","../node_modules/date-fns/subYears.js","../node_modules/date-fns/addYears.js","src/types/duration.js","src/utils/localized-date-time-fields.js","src/utils/duration.js","../node_modules/date-fns/subMonths.js","src/utils/iso8601-duration.js","src/styles/timered-counter-datetime-styles.js","src/timered-counter-datetime-duration.js","src/easing/easing-functions.js","src/index.js"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\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;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\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;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\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);\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); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t&&t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.2.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as s}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class r extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const s=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(s,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return s}}r._$litElement$=!0,r[\"finalized\"]=!0,globalThis.litElementHydrateSupport?.({LitElement:r});const i=globalThis.litElementPolyfillSupport;i?.({LitElement:r});const o={_$AK:(t,e,s)=>{t._$AK(e,s)},_$AL:t=>t._$AL};(globalThis.litElementVersions??=[]).push(\"4.1.1\");export{r as LitElement,o as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer((()=>{customElements.define(t,e)})):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{_$LH as o}from\"./lit-html.js\";\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{I:t}=o,i=o=>null===o||\"object\"!=typeof o&&\"function\"!=typeof o,n={HTML:1,SVG:2,MATHML:3},e=(o,t)=>void 0===t?void 0!==o?._$litType$:o?._$litType$===t,l=o=>null!=o?._$litType$?.h,c=o=>void 0!==o?._$litDirective$,d=o=>o?._$litDirective$,f=o=>void 0===o.strings,s=()=>document.createComment(\"\"),r=(o,i,n)=>{const e=o._$AA.parentNode,l=void 0===i?o._$AB:i._$AA;if(void 0===n){const i=e.insertBefore(s(),l),c=e.insertBefore(s(),l);n=new t(i,c,o,o.options)}else{const t=n._$AB.nextSibling,i=n._$AM,c=i!==o;if(c){let t;n._$AQ?.(o),n._$AM=o,void 0!==n._$AP&&(t=o._$AU)!==i._$AU&&n._$AP(t)}if(t!==l||c){let o=n._$AA;for(;o!==t;){const t=o.nextSibling;e.insertBefore(o,l),o=t}}}return n},v=(o,t,i=o)=>(o._$AI(t,i),o),u={},m=(o,t=u)=>o._$AH=t,p=o=>o._$AH,M=o=>{o._$AP?.(!1,!0);let t=o._$AA;const i=o._$AB.nextSibling;for(;t!==i;){const o=t.nextSibling;t.remove(),t=o}},h=o=>{o._$AR()};export{n as TemplateResultType,h as clearPart,p as getCommittedValue,d as getDirectiveClass,r as insertPart,l as isCompiledTemplateResult,c as isDirectiveResult,i as isPrimitive,f as isSingleExpression,e as isTemplateResult,M as removePart,v as setChildPartValue,m as setCommittedValue};\n//# sourceMappingURL=directive-helpers.js.map\n","import{noChange as e}from\"../lit-html.js\";import{directive as s,Directive as t,PartType as r}from\"../directive.js\";import{getCommittedValue as l,setChildPartValue as o,insertPart as i,removePart as n,setCommittedValue as f}from\"../directive-helpers.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst u=(e,s,t)=>{const r=new Map;for(let l=s;l<=t;l++)r.set(e[l],l);return r},c=s(class extends t{constructor(e){if(super(e),e.type!==r.CHILD)throw Error(\"repeat() can only be used in text expressions\")}dt(e,s,t){let r;void 0===t?t=s:void 0!==s&&(r=s);const l=[],o=[];let i=0;for(const s of e)l[i]=r?r(s,i):i,o[i]=t(s,i),i++;return{values:o,keys:l}}render(e,s,t){return this.dt(e,s,t).values}update(s,[t,r,c]){const d=l(s),{values:p,keys:a}=this.dt(t,r,c);if(!Array.isArray(d))return this.ut=a,p;const h=this.ut??=[],v=[];let m,y,x=0,j=d.length-1,k=0,w=p.length-1;for(;x<=j&&k<=w;)if(null===d[x])x++;else if(null===d[j])j--;else if(h[x]===a[k])v[k]=o(d[x],p[k]),x++,k++;else if(h[j]===a[w])v[w]=o(d[j],p[w]),j--,w--;else if(h[x]===a[w])v[w]=o(d[x],p[w]),i(s,v[w+1],d[x]),x++,w--;else if(h[j]===a[k])v[k]=o(d[j],p[k]),i(s,d[x],d[j]),j--,k++;else if(void 0===m&&(m=u(a,k,w),y=u(h,x,j)),m.has(h[x]))if(m.has(h[j])){const e=y.get(a[k]),t=void 0!==e?d[e]:null;if(null===t){const e=i(s,d[x]);o(e,p[k]),v[k]=e}else v[k]=o(t,p[k]),i(s,d[x],t),d[e]=null;k++}else n(d[j]),j--;else n(d[x]),x++;for(;k<=w;){const e=i(s,v[w+1]);o(e,p[k]),v[k++]=e}for(;x<=j;){const e=d[x++];null!==e&&n(e)}return this.ut=a,f(s,v),e}});export{c as repeat};\n//# sourceMappingURL=repeat.js.map\n","var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n","import{a as t}from\"./chunk-K26VP6CL.js\";function u(r,n,a){let o=r.length-n.length;if(o===0)return r(...n);if(o===1)return t(r,n,a);throw new Error(\"Wrong number of arguments\")}export{u as a};\n","function u(t,n,a){let o=r=>t(r,...n);return a===void 0?o:Object.assign(o,{lazy:a,lazyArgs:n})}export{u as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function i(...e){return n(r,e)}var r=(e,t)=>e.length>=t;export{i as a};\n","import{a as u}from\"./chunk-RAAYCPUM.js\";function a(...r){return u(o,r)}function o(r,t){let e=[];for(let n=r;n<t;n++)e.push(n);return e}export{a};\n","import{a as n}from\"./chunk-ENXBNJ36.js\";import{a as i}from\"./chunk-RAAYCPUM.js\";function y(...t){return i(f,t)}function f(t,e){if(!n(e,1))return{...t};if(!n(e,2)){let{[e[0]]:r,...m}=t;return m}let o={...t};for(let r of e)delete o[r];return o}export{y as a};\n","import{a as r}from\"./chunk-RAAYCPUM.js\";function t(...e){return r(u,e)}var u=(e,o)=>({...e,...o});export{t as a};\n","import{a as n}from\"./chunk-RAAYCPUM.js\";function m(...a){return n(o,a,p)}var o=(a,e)=>a.map(e),p=a=>(e,t,r)=>({done:!1,hasNext:!0,next:a(e,t,r)});export{m as a};\n","function e(r){return typeof r==\"number\"&&!Number.isNaN(r)}export{e as a};\n","function t(r){return typeof r==\"string\"}export{t as a};\n","function n(e){return e===void 0?!0:typeof e==\"string\"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}export{n as a};\n","function n(e){return e==null}export{n as a};\n","function o(r){return Array.isArray(r)}export{o as a};\n","function e(o){return typeof o==\"boolean\"}export{e as a};\n","function t(n){return n instanceof Date}export{t as a};\n","import{a as i}from\"./chunk-RAAYCPUM.js\";function k(...n){return i(u,n)}function u(n,e){if(n===e||Object.is(n,e))return!0;if(typeof n!=\"object\"||typeof e!=\"object\"||n===null||e===null||Object.getPrototypeOf(n)!==Object.getPrototypeOf(e))return!1;if(Array.isArray(n))return l(n,e);if(n instanceof Map)return a(n,e);if(n instanceof Set)return c(n,e);if(n instanceof Date)return n.getTime()===e.getTime();if(n instanceof RegExp)return n.toString()===e.toString();if(Object.keys(n).length!==Object.keys(e).length)return!1;for(let[r,t]of Object.entries(n))if(!(r in e)||!u(t,e[r]))return!1;return!0}function l(n,e){if(n.length!==e.length)return!1;for(let[r,t]of n.entries())if(!u(t,e[r]))return!1;return!0}function a(n,e){if(n.size!==e.size)return!1;for(let[r,t]of n.entries())if(!e.has(r)||!u(t,e.get(r)))return!1;return!0}function c(n,e){if(n.size!==e.size)return!1;let r=[...e];for(let t of n){let o=!1;for(let[s,f]of r.entries())if(u(t,f)){o=!0,r.splice(s,1);break}if(!o)return!1}return!0}export{k as a};\n","import{a as i}from\"./chunk-IEE7G5JG.js\";import{a as o,b as a}from\"./chunk-ANXBDSUI.js\";function f(...e){return i(y,e)}function y(e){if(e.length===0)return a;let n=new Map;for(let r of e)n.set(r,(n.get(r)??0)+1);return r=>{let t=n.get(r);return t===void 0||t===0?o:(t===1?n.delete(r):n.set(r,t-1),{hasNext:!0,next:r,done:n.size===0})}}export{f as a};\n","import{a}from\"./chunk-7BKSRZNG.js\";function f(t,i){let o=i.length-t.length;if(o===1){let[n,...r]=i;return a(n,{lazy:t,lazyArgs:r})}if(o===0){let n={lazy:t,lazyArgs:i};return Object.assign(e=>a(e,n),n)}throw new Error(\"Wrong number of arguments\")}export{f as a};\n","import { isArray, isFunction, merge } from 'remeda';\nexport function extractGroupOption(option, getterOptions) {\n return (isFunction(option)\n ? option(getterOptions)\n : option);\n}\nexport function extractPartOption(option, getterOptions) {\n const groupOption = extractGroupOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const value = isArray(groupOption) ? groupOption[i] : groupOption;\n result.push(value);\n }\n return result;\n}\nexport function extractPartDigitOption(option, getterOptions) {\n const extractedOption = extractPartOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const value = isArray(partOption) ? partOption[j] : partOption;\n result[i].push(value);\n }\n }\n return result;\n}\nexport function extractPartDigitCellOption(option, getterOptions) {\n const extractedOption = extractPartDigitOption(option, getterOptions);\n const { data } = getterOptions;\n const result = [];\n for (let i = 0; i < data.length; i += 1) {\n const { digits } = data[i];\n const partOption = extractedOption[i];\n result.push([]);\n for (let j = 0; j < digits.length; j += 1) {\n const { data: digitData } = digits[j];\n const partDigitOption = partOption[j];\n result[i].push([]);\n for (let k = 0; k < digitData.length; k += 1) {\n const value = isArray(partDigitOption)\n ? partDigitOption[k]\n : partDigitOption;\n result[i][j].push(value);\n }\n }\n }\n return result;\n}\nexport function mergeGroupOption(data, source) {\n return merge(data ?? {}, source ?? {});\n}\nexport function mergePartOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergeGroupOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartOption(data[index], source[index]);\n }\n return data;\n}\nexport function mergePartDigitCellOption(data = [], source = []) {\n const keys = Array.from(new Set(Object.keys(data).concat(Object.keys(source))));\n for (const key of keys) {\n const index = Number.parseInt(key, 10);\n data[index] = mergePartDigitOption(data[index], source[index]);\n }\n return data;\n}\n//# sourceMappingURL=extract-group-option.js.map","function t(n){return typeof n==\"function\"}export{t as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitCellOption, extractPartDigitOption, extractPartOption, mergePartDigitCellOption, mergePartDigitOption, mergePartOption, } from '../utils/extract-group-option.js';\nexport const CounterStylesMixin = (superClass) => {\n class CounterStylesMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 对 `cell` 部分的样式进行设置. 传入的对象将被直接应用到 `cell` 的 `style` 上.\n * 你还可以使用 `cellStylesDynamic` 来动态设置样式.\n */\n this.cellStyles = {};\n this.cachedCellStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `digit` 部分的样式进行设置.\n * 你还可以使用 `digitStylesDynamic` 来动态设置样式.\n */\n this.digitStyles = {};\n this.cachedDigitStyles = [];\n /**\n * 与 `cell` 类似, 但是是对 `part` 部分的样式进行设置.\n * 你还可以使用 `partStylesDynamic` 来动态设置样式.\n */\n this.partStyles = {};\n this.cachedPartStyles = [];\n /**\n * 文本颜色, 可使用 CSS 属性 `color` 和 `background-image` 的值.\n *\n * @default 继承自父元素.\n *\n * @example \"red\" 红色\n * @example \"transparent\" 透明\n * @example \"linear-gradient(90deg, red, blue)\" 红蓝渐变\n * @example \"url('https://example.com/image.png')\" 图片背景\n */\n this.color = 'inherit';\n }\n extractCellStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitCellOption(extractPartDigitCellOption(this.cellStyles ?? {}, getterOptions), extractPartDigitCellOption(this.cellStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedCellStyles, result)) {\n this.cachedCellStyles = result;\n }\n return this.cachedCellStyles;\n }\n extractDigitStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.digitStyles ?? {}, getterOptions), extractPartDigitOption(this.digitStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedDigitStyles, result)) {\n this.cachedDigitStyles = result;\n }\n return this.cachedDigitStyles;\n }\n extractPartStyles() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartOption(extractPartOption(this.partStyles ?? {}, getterOptions), extractPartOption(this.partStylesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedPartStyles, result)) {\n this.cachedPartStyles = result;\n }\n return this.cachedPartStyles;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'cell-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"cellStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'digit-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"digitStyles\", void 0);\n __decorate([\n property({ type: Object, attribute: 'part-styles', reflect: true })\n ], CounterStylesMixinClass.prototype, \"partStyles\", void 0);\n __decorate([\n property({ type: String, reflect: true })\n ], CounterStylesMixinClass.prototype, \"color\", void 0);\n return CounterStylesMixinClass;\n};\n//# sourceMappingURL=counter-styles.js.map","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n}\n\nfunction length(d) {\n return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n return transpose(arguments);\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import { isDeepEqual } from 'remeda';\n/**\n * 以下代码块用于判断是否需要启动滚动动画.\n * 下列情况将跳过滚动动画:\n * 1. 当新的滚动数据(即 digits)长度为 1 时.\n * 2. 当滚动方向未改变时:\n * 1. 当滚动数据头尾相同时.\n * 2. 当前滚动数据与上一次全等时.\n */\nfunction rollerPartTest(direction, digits) {\n const [newDirection, oldDirection] = direction;\n const [newDigits, oldDigits] = digits;\n const result = {\n animate: true,\n cancelPrevAnimation: false,\n };\n let earlyReturn = '';\n if (newDigits.data.length === 1) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'only one digit';\n }\n if (newDirection !== oldDirection)\n return result;\n if (newDigits.data[0] === newDigits.data[newDigits.data.length - 1]) {\n result.animate = false;\n result.cancelPrevAnimation = true;\n earlyReturn = 'same head and tail';\n }\n if (isDeepEqual(newDigits, oldDigits)) {\n result.animate = false;\n earlyReturn = 'same digits';\n }\n if (earlyReturn)\n result.earlyReturn = earlyReturn;\n return result;\n}\nexport function preprocessPartData(newDirection, newData, oldDirection, oldData) {\n const results = [];\n let globalIndex = 0;\n for (let i = 0; i < newData.length; i++) {\n const newPart = newData[i];\n const oldPart = oldData?.[i];\n const partDataResults = [];\n for (let j = 0; j < newPart.digits.length; j++) {\n const newDigit = newPart.digits[j];\n const oldDigit = oldPart?.digits.find(d => d.place === newDigit.place);\n partDataResults.push({\n ...rollerPartTest([newDirection, oldDirection], [newDigit, oldDigit]),\n index: globalIndex++,\n partIndex: i,\n digitIndex: j,\n });\n }\n results.push(partDataResults);\n }\n return results;\n}\n//# sourceMappingURL=preprocess-part-data.js.map","export function parseJsonString(value) {\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n}\n//# sourceMappingURL=parse-json-string.js.map","import { __classPrivateFieldGet, __classPrivateFieldSet, __decorate } from \"tslib\";\nimport { zip } from 'd3-array';\nimport { property } from 'lit/decorators.js';\nimport { isArray, isObjectType } from 'remeda';\nimport { transitionDigit } from '../utils/transition-digit.js';\nimport { preprocessPartData, } from '../utils/preprocess-part-data.js';\nimport { parseJsonString } from '../utils/parse-json-string.js';\nfunction toChar(value) {\n return String.fromCodePoint(value + 48);\n}\nfunction preprocessPartsOptions(options) {\n const digitToChar = {};\n if (isArray(options.digitToChar)) {\n options.digitToChar.forEach((char, index) => {\n digitToChar[toChar(index)] = char;\n });\n }\n else if (isObjectType(options.digitToChar)) {\n Object.entries(options.digitToChar).forEach(([key, value]) => {\n digitToChar[key] = value;\n });\n }\n return {\n ...options,\n digitToChar,\n };\n}\nexport const CounterPartsMixin = (superClass) => {\n var _a, _CounterPartsMixinClass___partsOptions;\n class CounterPartsMixinClass extends superClass {\n constructor() {\n super(...arguments);\n _CounterPartsMixinClass___partsOptions.set(this, {\n ..._a.DEFAULT_PARTS_OPTIONS,\n });\n // partsOptions: InnerPartsOptions =\n // CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS;\n this.parts = [];\n this.oldParts = [];\n this.partPreprocessDataList = [];\n }\n /**\n * 这是 `usePartData` 的配置项. `usePartData` 被用于从数值的变化中生成用于滚动的数据.\n * 这里不会有太多解释, 因为它是一个底层的配置项. 你可以查看 `CounterPartsMixinClass` 的源码了解更多信息.\n */\n get partsOptions() {\n return __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n }\n set partsOptions(value) {\n const old = __classPrivateFieldGet(this, _CounterPartsMixinClass___partsOptions, \"f\");\n __classPrivateFieldSet(this, _CounterPartsMixinClass___partsOptions, preprocessPartsOptions({\n ..._a.DEFAULT_PARTS_OPTIONS,\n ...value,\n }), \"f\");\n this.requestUpdate('partsOptions', old);\n }\n sampling(from, to) {\n return transitionDigit(this.numberAdapter, this.numberAdapter.max(from, to), this.numberAdapter.min(from, to), this.partsOptions.sampleCount);\n }\n // eslint-disable-next-line class-methods-use-this\n sampleSplit(samples) {\n return [samples.slice()];\n }\n sampleToString(value) {\n return this.numberAdapter.toString(value);\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value')) {\n this.oldParts = this.parts;\n }\n /**\n * {@link processPartData} 依赖 {@link partsOptions} 和 {@link value} 生成数据.\n * 当依赖项没有变化时, 不需要重新生成数据.\n */\n if (changedProperties.has('value') ||\n changedProperties.has('partsOptions')) {\n this.parts = this.processPartData();\n }\n if (changedProperties.has('value')) {\n this.partPreprocessDataList = preprocessPartData(this.direction, this.parts, this.oldDirection, this.oldParts);\n }\n /**\n * `value` 没变但 `direction` 变化时, 也要重新生成 `partPreprocessDataList`.\n */\n // todo test events 和 animationOptions 冲突\n // if (\n // changedProperties.has('value') ||\n // changedProperties.has('direction')\n // ) {\n // }\n }\n /**\n * process:\n * 1. 采样\n * 2. 转换\n * 3. 构造\n */\n processPartData() {\n const { decimalSeparator, digitToChar, minPlaces, fillChar, type } = this.partsOptions;\n const from = this.value;\n const to = this.oldValue;\n let _sampleToString = value => this.sampleToString(value).split(decimalSeparator);\n if (type === 'string') {\n _sampleToString = value => [this.sampleToString(value), ''];\n }\n const result = [];\n /**\n * 对 {@link from} 到 {@link to} 的范围采样.\n */\n const tempParts = this.sampleSplit(this.sampling(from, to));\n /**\n * 将时间部分的数字转换为用于滚动的字符串数组\n *\n * headNumber: 最先显示的数字. 向下滚动时, 为滚动列表的最后一个数字, 向上滚动时相反.\n * tailNumber: 最后显示的数字. 向下滚动时, 为滚动列表的第一个数字, 向上滚动时相反.\n */\n {\n const directionValue = this.numberAdapter.gt(from, to) ? 'down' : 'up';\n for (let i = 0; i < tempParts.length; i++) {\n const partData = tempParts[i];\n // const headNumber =\n // partData[directionValue === \"down\" ? partData.length - 1 : 0];\n const tailNumber = partData[directionValue === 'down' ? 0 : partData.length - 1];\n const [minIntegerPlaces = 1, minDecimalPlaces = 0] = minPlaces;\n const numberParts = _sampleToString(tailNumber);\n const integerPlaces = Math.max(\n // numberParts[0].length,\n this.stringAdapter.stringToChars(numberParts[0]).length, minIntegerPlaces);\n const decimalPlaces = Math.max(\n // numberParts[1]?.length ?? 0,\n this.stringAdapter.stringToChars(numberParts[1] ?? '').length, minDecimalPlaces);\n /**\n * 使用 zip 将二维矩阵, 旋转90度\n */\n const data = zip(...partData\n /**\n * 保证位数一致, 向前补零\n */\n .map(digitData => {\n const [integer = '', decimal = ''] = _sampleToString(digitData);\n const integerChars = this.stringAdapter.stringToChars(integer);\n const decimalChars = this.stringAdapter.stringToChars(decimal);\n const filledIntegerPlaces = Math.max(integerPlaces - integerChars.length, 0);\n const filledDecimalPlaces = Math.max(decimalPlaces - decimalChars.length, 0);\n let filledChars = [].concat(new Array(filledIntegerPlaces).fill(fillChar), integerChars);\n if (decimalPlaces > 0) {\n filledChars = filledChars.concat([decimalSeparator], decimalChars, new Array(filledDecimalPlaces).fill(fillChar));\n }\n return filledChars;\n }))\n /**\n * 删除连续的重复项\n */\n .map((digitList, index, array) => ({\n data: digitList\n .filter((digit, digitIndex, digitArray) => digitIndex === 0 || digit !== digitArray[digitIndex - 1])\n .map(digit => digitToChar[digit] ?? digit),\n place: array.length - index,\n }));\n result.push({\n digits: data,\n });\n }\n }\n return result;\n }\n }\n _a = CounterPartsMixinClass, _CounterPartsMixinClass___partsOptions = new WeakMap();\n CounterPartsMixinClass.DEFAULT_PARTS_OPTIONS = {\n sampleCount: 16,\n decimalSeparator: '.',\n fillChar: '0',\n minPlaces: [1, 0],\n digitToChar: {},\n type: 'number',\n };\n __decorate([\n property({\n type: Object,\n attribute: 'parts-options',\n converter: value => parseJsonString(value ?? '') ?? {},\n noAccessor: true,\n })\n ], CounterPartsMixinClass.prototype, \"partsOptions\", null);\n return CounterPartsMixinClass;\n};\n//# sourceMappingURL=counter-parts.js.map","function o(e){return typeof e==\"object\"&&e!==null}export{o as a};\n","/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/round.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateRound(na, a, b) {\n return function (t) {\n return na.round(na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t)));\n };\n}\n/**\n * @see https://github.com/d3/d3-interpolate/blob/main/src/number.js\n * @param na\n * @param a\n * @param b\n */\nfunction interpolateNumber(na, a, b) {\n return function (t) {\n return na.add(na.mul(a, na.sub(na.create(1), t)), na.mul(b, t));\n };\n}\nexport function transitionDigit(na, from, to, count) {\n let _count = count;\n const interpolateFunc = na.isInteger(from) && na.isInteger(to)\n ? interpolateRound(na, from, to)\n : interpolateNumber(na, from, to);\n /**\n * 将浮点数转换为整数进行插值计算, 提供与整数插值类似的效果.\n * 取最大的小数位数作为插值个数. 但不超过30.\n */\n // const maxDecimalPlaces = Number.isInteger(from - to)\n // ? 0\n // : Math.max(new Decimal(from).dp(), new Decimal(to).dp());\n // const multiplier = Math.pow(10, maxDecimalPlaces);\n // const count = Math.min(\n // Math.abs(Math.floor(from * multiplier) - Math.floor(to * multiplier)) + 1,\n // 30\n // );\n if (na.eq(from, to))\n _count = 1;\n // [0, 1/count, 2/count, ..., 1]\n // const percents = range(count).map((d) => d / Math.max(count - 1, 1));\n const result = [];\n for (let i = 0; i < _count; i++) {\n const percent = na.div(na.create(i), na.create(Math.max(_count - 1, 1)));\n result.push(interpolateFunc(percent));\n }\n return result;\n}\n//# sourceMappingURL=transition-digit.js.map","const BuildInNumberAdapter = () => ({\n create(value) {\n const num = Number(value);\n return Number.isFinite(num) ? num : 0;\n },\n add(a, b) {\n return a + b;\n },\n sub(a, b) {\n return a - b;\n },\n mul(a, b) {\n return a * b;\n },\n div(a, b) {\n return a / b;\n },\n compare(a, b) {\n if (a > b)\n return 1;\n if (a < b)\n return -1;\n return 0;\n },\n eq(a, b) {\n return a === b;\n },\n gt(a, b) {\n return a > b;\n },\n gte(a, b) {\n return a >= b;\n },\n lt(a, b) {\n return a < b;\n },\n lte(a, b) {\n return a <= b;\n },\n isInteger(a) {\n return Number.isInteger(a);\n },\n isNegative(a) {\n return a < 0;\n },\n isPositive(a) {\n return a > 0;\n },\n isZero(a) {\n return a === 0;\n },\n isNaN(a) {\n return Number.isNaN(a);\n },\n isFinite(a) {\n return Number.isFinite(a);\n },\n abs(a) {\n return Math.abs(a);\n },\n ceil(a) {\n return Math.ceil(a);\n },\n floor(a) {\n return Math.floor(a);\n },\n round(a) {\n return Math.round(a);\n },\n max(a, b) {\n return Math.max(a, b);\n },\n min(a, b) {\n return Math.min(a, b);\n },\n toNumber(a) {\n return Number(a);\n },\n toString(a) {\n return String(a);\n },\n});\nexport { BuildInNumberAdapter };\n//# sourceMappingURL=build-in-number.js.map","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","import { Decimal } from 'decimal.js';\nimport { isString } from 'remeda';\nconst numberRegex = /^-?\\d+(\\.\\d+)?$/;\nconst DecimalJsAdapter = (config = { precision: 1e3 }) => {\n const InnerDecimal = Decimal.clone(config);\n return {\n create(value) {\n if (isString(value) && !numberRegex.test(value))\n value = 0;\n return new InnerDecimal(value);\n },\n add(a, b) {\n return a.plus(b);\n },\n sub(a, b) {\n return a.minus(b);\n },\n mul(a, b) {\n return a.times(b);\n },\n div(a, b) {\n return a.div(b);\n },\n compare(a, b) {\n return a.cmp(b);\n },\n eq(a, b) {\n return a.eq(b);\n },\n gt(a, b) {\n return a.gt(b);\n },\n gte(a, b) {\n return a.gte(b);\n },\n lt(a, b) {\n return a.lt(b);\n },\n lte(a, b) {\n return a.lte(b);\n },\n isInteger(a) {\n return a.isInteger();\n },\n isNegative(a) {\n return a.isNegative();\n },\n isPositive(a) {\n return a.isPositive();\n },\n isZero(a) {\n return a.isZero();\n },\n isNaN(a) {\n return a.isNaN();\n },\n isFinite(a) {\n return a.isFinite();\n },\n abs(a) {\n return a.abs();\n },\n ceil(a) {\n return a.ceil();\n },\n floor(a) {\n return a.floor();\n },\n round(a) {\n return a.round();\n },\n max(a, b) {\n return InnerDecimal.max(a, b);\n },\n min(a, b) {\n return InnerDecimal.min(a, b);\n },\n toNumber(a) {\n return a.toNumber();\n },\n toString(a) {\n return a.toFixed();\n },\n };\n};\nexport { DecimalJsAdapter };\n//# sourceMappingURL=decimal-js.js.map","/**\n * 默认的字符串适配器. 该适配器使用内置的 `Array.from` 方法将字符串转换为字符数组.\n * 该方法可以正确处理包含单个的 emoji 字符的字符串[1]. 但对于由多个字符组合而成的 emoji 无能为力[2].\n *\n * 要支持组合的 emoji 查看 {@link BuildInIntlSegmenterAdapter}, {@link GraphemeSplitterAdapter}.\n *\n * [1]: https://dev.to/acanimal/how-to-slice-or-get-symbols-from-a-unicode-string-with-emojis-in-javascript-lets-learn-how-javascript-represent-strings-h3a\n * [2]: https://cestoliv.com/blog/how-to-count-emojis-with-javascript/\n */\nconst BuildInStringAdapter = () => ({\n stringToChars(value) {\n return Array.from(value);\n },\n});\nexport { BuildInStringAdapter };\n//# sourceMappingURL=build-in-string.js.map","/*\r\nBreaks a Javascript string into individual user-perceived \"characters\"\r\ncalled extended grapheme clusters by implementing the Unicode UAX-29 standard, version 10.0.0\r\n\r\nUsage:\r\nvar splitter = new GraphemeSplitter();\r\n//returns an array of strings, one string for each grapheme cluster\r\nvar graphemes = splitter.splitGraphemes(string);\r\n\r\n*/\r\nfunction GraphemeSplitter(){\r\n\tvar CR = 0,\r\n\t\tLF = 1,\r\n\t\tControl = 2,\r\n\t\tExtend = 3,\r\n\t\tRegional_Indicator = 4,\r\n\t\tSpacingMark = 5,\r\n\t\tL = 6,\r\n\t\tV = 7,\r\n\t\tT = 8,\r\n\t\tLV = 9,\r\n\t\tLVT = 10,\r\n\t\tOther = 11,\r\n\t\tPrepend = 12,\r\n\t\tE_Base = 13,\r\n\t\tE_Modifier = 14,\r\n\t\tZWJ = 15,\r\n\t\tGlue_After_Zwj = 16,\r\n\t\tE_Base_GAZ = 17;\r\n\r\n\t// BreakTypes\r\n\tvar NotBreak = 0,\r\n\t\tBreakStart = 1,\r\n\t\tBreak = 2,\r\n\t\tBreakLastRegional = 3,\r\n\t\tBreakPenultimateRegional = 4;\r\n\r\n\tfunction isSurrogate(str, pos) {\r\n\t\treturn 0xd800 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 0xdbff &&\r\n\t\t\t\t0xdc00 <= str.charCodeAt(pos + 1) && str.charCodeAt(pos + 1) <= 0xdfff;\r\n\t}\r\n\r\n\t// Private function, gets a Unicode code point from a JavaScript UTF-16 string\r\n\t// handling surrogate pairs appropriately\r\n\tfunction codePointAt(str, idx){\r\n\t\tif(idx === undefined){\r\n\t\t\tidx = 0;\r\n\t\t}\r\n\t\tvar code = str.charCodeAt(idx);\r\n\r\n\t\t// if a high surrogate\r\n\t\tif (0xD800 <= code && code <= 0xDBFF &&\r\n\t\t\tidx < str.length - 1){\r\n\t\t\tvar hi = code;\r\n\t\t\tvar low = str.charCodeAt(idx + 1);\r\n\t\t\tif (0xDC00 <= low && low <= 0xDFFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn hi;\r\n\t\t}\r\n\r\n\t\t// if a low surrogate\r\n\t\tif (0xDC00 <= code && code <= 0xDFFF &&\r\n\t\t\tidx >= 1){\r\n\t\t\tvar hi = str.charCodeAt(idx - 1);\r\n\t\t\tvar low = code;\r\n\t\t\tif (0xD800 <= hi && hi <= 0xDBFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn low;\r\n\t\t}\r\n\r\n\t\t//just return the char if an unmatched surrogate half or a\r\n\t\t//single-char codepoint\r\n\t\treturn code;\r\n\t}\r\n\r\n\t// Private function, returns whether a break is allowed between the\r\n\t// two given grapheme breaking classes\r\n\tfunction shouldBreak(start, mid, end){\r\n\t\tvar all = [start].concat(mid).concat([end]);\r\n\t\tvar previous = all[all.length - 2]\r\n\t\tvar next = end\r\n\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar eModifierIndex = all.lastIndexOf(E_Modifier)\r\n\t\tif(eModifierIndex > 1 &&\r\n\t\t\tall.slice(1, eModifierIndex).every(function(c){return c == Extend}) &&\r\n\t\t\t[Extend, E_Base, E_Base_GAZ].indexOf(start) == -1){\r\n\t\t\treturn Break\r\n\t\t}\r\n\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB12. ^ (RI RI)* RI\t?\tRI\r\n\t\t// GB13. [^RI] (RI RI)* RI\t?\tRI\r\n\t\tvar rIIndex = all.lastIndexOf(Regional_Indicator)\r\n\t\tif(rIIndex > 0 &&\r\n\t\t\tall.slice(1, rIIndex).every(function(c){return c == Regional_Indicator}) &&\r\n\t\t\t[Prepend, Regional_Indicator].indexOf(previous) == -1) {\r\n\t\t\tif(all.filter(function(c){return c == Regional_Indicator}).length % 2 == 1) {\r\n\t\t\t\treturn BreakLastRegional\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakPenultimateRegional\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// GB3. CR X LF\r\n\t\tif(previous == CR && next == LF){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB4. (Control|CR|LF) ÷\r\n\t\telse if(previous == Control || previous == CR || previous == LF){\r\n\t\t\tif(next == E_Modifier && mid.every(function(c){return c == Extend})){\r\n\t\t\t\treturn Break\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakStart\r\n\t\t\t}\r\n\t\t}\r\n\t\t// GB5. ÷ (Control|CR|LF)\r\n\t\telse if(next == Control || next == CR || next == LF){\r\n\t\t\treturn BreakStart;\r\n\t\t}\r\n\t\t// GB6. L X (L|V|LV|LVT)\r\n\t\telse if(previous == L &&\r\n\t\t\t(next == L || next == V || next == LV || next == LVT)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB7. (LV|V) X (V|T)\r\n\t\telse if((previous == LV || previous == V) &&\r\n\t\t\t(next == V || next == T)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB8. (LVT|T) X (T)\r\n\t\telse if((previous == LVT || previous == T) &&\r\n\t\t\tnext == T){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9. X (Extend|ZWJ)\r\n\t\telse if (next == Extend || next == ZWJ){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9a. X SpacingMark\r\n\t\telse if(next == SpacingMark){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9b. Prepend X\r\n\t\telse if (previous == Prepend){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar previousNonExtendIndex = all.indexOf(Extend) != -1 ? all.lastIndexOf(Extend) - 1 : all.length - 2;\r\n\t\tif([E_Base, E_Base_GAZ].indexOf(all[previousNonExtendIndex]) != -1 &&\r\n\t\t\tall.slice(previousNonExtendIndex + 1, -1).every(function(c){return c == Extend}) &&\r\n\t\t\tnext == E_Modifier){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB11. ZWJ ? (Glue_After_Zwj | EBG)\r\n\t\tif(previous == ZWJ && [Glue_After_Zwj, E_Base_GAZ].indexOf(next) != -1) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB12. ^ (RI RI)* RI ? RI\r\n\t\t// GB13. [^RI] (RI RI)* RI ? RI\r\n\t\tif(mid.indexOf(Regional_Indicator) != -1) {\r\n\t\t\treturn Break;\r\n\t\t}\r\n\t\tif(previous == Regional_Indicator && next == Regional_Indicator) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB999. Any ? Any\r\n\t\treturn BreakStart;\r\n\t}\r\n\r\n\t// Returns the next grapheme break in the string after the given index\r\n\tthis.nextBreak = function(string, index){\r\n\t\tif(index === undefined){\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\tif(index < 0){\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif(index >= string.length - 1){\r\n\t\t\treturn string.length;\r\n\t\t}\r\n\t\tvar prev = getGraphemeBreakProperty(codePointAt(string, index));\r\n\t\tvar mid = []\r\n\t\tfor (var i = index + 1; i < string.length; i++) {\r\n\t\t\t// check for already processed low surrogates\r\n\t\t\tif(isSurrogate(string, i - 1)){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tvar next = getGraphemeBreakProperty(codePointAt(string, i));\r\n\t\t\tif(shouldBreak(prev, mid, next)){\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\r\n\t\t\tmid.push(next);\r\n\t\t}\r\n\t\treturn string.length;\r\n\t};\r\n\r\n\t// Breaks the given string into an array of grapheme cluster strings\r\n\tthis.splitGraphemes = function(str){\r\n\t\tvar res = [];\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tres.push(str.slice(index, brk));\r\n\t\t\tindex = brk;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tres.push(str.slice(index));\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the iterator of grapheme clusters there are in the given string\r\n\tthis.iterateGraphemes = function(str) {\r\n\t\tvar index = 0;\r\n\t\tvar res = {\r\n\t\t\tnext: (function() {\r\n\t\t\t\tvar value;\r\n\t\t\t\tvar brk;\r\n\t\t\t\tif ((brk = this.nextBreak(str, index)) < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index, brk);\r\n\t\t\t\t\tindex = brk;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\tif (index < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index);\r\n\t\t\t\t\tindex = str.length;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\treturn { value: undefined, done: true };\r\n\t\t\t}).bind(this)\r\n\t\t};\r\n\t\t// ES2015 @@iterator method (iterable) for spread syntax and for...of statement\r\n\t\tif (typeof Symbol !== 'undefined' && Symbol.iterator) {\r\n\t\t\tres[Symbol.iterator] = function() {return res};\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the number of grapheme clusters there are in the given string\r\n\tthis.countGraphemes = function(str){\r\n\t\tvar count = 0;\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tindex = brk;\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\treturn count;\r\n\t};\r\n\r\n\t//given a Unicode code point, determines this symbol's grapheme break property\r\n\tfunction getGraphemeBreakProperty(code){\r\n\r\n\t\t//grapheme break property for Unicode 10.0.0,\r\n\t\t//taken from http://www.unicode.org/Public/10.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\r\n\t\t//and adapted to JavaScript rules\r\n\r\n\t\tif(\r\n\t\t(0x0600 <= code && code <= 0x0605) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\r\n\t\t0x06DD == code || // Cf ARABIC END OF AYAH\r\n\t\t0x070F == code || // Cf SYRIAC ABBREVIATION MARK\r\n\t\t0x08E2 == code || // Cf ARABIC DISPUTED END OF AYAH\r\n\t\t0x0D4E == code || // Lo MALAYALAM LETTER DOT REPH\r\n\t\t0x110BD == code || // Cf KAITHI NUMBER SIGN\r\n\t\t(0x111C2 <= code && code <= 0x111C3) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\r\n\t\t0x11A3A == code || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\r\n\t\t(0x11A86 <= code && code <= 0x11A89) || // Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA\r\n\t\t0x11D46 == code // Lo MASARAM GONDI REPHA\r\n\t\t){\r\n\t\t\treturn Prepend;\r\n\t\t}\r\n\t\tif(\r\n\t\t0x000D == code // Cc <control-000D>\r\n\t\t){\r\n\t\t\treturn CR;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x000A == code // Cc <control-000A>\r\n\t\t){\r\n\t\t\treturn LF;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x0000 <= code && code <= 0x0009) || // Cc [10] <control-0000>..<control-0009>\r\n\t\t(0x000B <= code && code <= 0x000C) || // Cc [2] <control-000B>..<control-000C>\r\n\t\t(0x000E <= code && code <= 0x001F) || // Cc [18] <control-000E>..<control-001F>\r\n\t\t(0x007F <= code && code <= 0x009F) || // Cc [33] <control-007F>..<control-009F>\r\n\t\t0x00AD == code || // Cf SOFT HYPHEN\r\n\t\t0x061C == code || // Cf ARABIC LETTER MARK\r\n\r\n\t\t0x180E == code || // Cf MONGOLIAN VOWEL SEPARATOR\r\n\t\t0x200B == code || // Cf ZERO WIDTH SPACE\r\n\t\t(0x200E <= code && code <= 0x200F) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\r\n\t\t0x2028 == code || // Zl LINE SEPARATOR\r\n\t\t0x2029 == code || // Zp PARAGRAPH SEPARATOR\r\n\t\t(0x202A <= code && code <= 0x202E) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\r\n\t\t(0x2060 <= code && code <= 0x2064) || // Cf [5] WORD JOINER..INVISIBLE PLUS\r\n\t\t0x2065 == code || // Cn <reserved-2065>\r\n\t\t(0x2066 <= code && code <= 0x206F) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\r\n\t\t(0xD800 <= code && code <= 0xDFFF) || // Cs [2048] <surrogate-D800>..<surrogate-DFFF>\r\n\t\t0xFEFF == code || // Cf ZERO WIDTH NO-BREAK SPACE\r\n\t\t(0xFFF0 <= code && code <= 0xFFF8) || // Cn [9] <reserved-FFF0>..<reserved-FFF8>\r\n\t\t(0xFFF9 <= code && code <= 0xFFFB) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\r\n\t\t(0x1BCA0 <= code && code <= 0x1BCA3) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\r\n\t\t(0x1D173 <= code && code <= 0x1D17A) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\r\n\t\t0xE0000 == code || // Cn <reserved-E0000>\r\n\t\t0xE0001 == code || // Cf LANGUAGE TAG\r\n\t\t(0xE0002 <= code && code <= 0xE001F) || // Cn [30] <reserved-E0002>..<reserved-E001F>\r\n\t\t(0xE0080 <= code && code <= 0xE00FF) || // Cn [128] <reserved-E0080>..<reserved-E00FF>\r\n\t\t(0xE01F0 <= code && code <= 0xE0FFF) // Cn [3600] <reserved-E01F0>..<reserved-E0FFF>\r\n\t\t){\r\n\t\t\treturn Control;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x0300 <= code && code <= 0x036F) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\r\n\t\t(0x0483 <= code && code <= 0x0487) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\r\n\t\t(0x0488 <= code && code <= 0x0489) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\r\n\t\t(0x0591 <= code && code <= 0x05BD) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\r\n\t\t0x05BF == code || // Mn HEBREW POINT RAFE\r\n\t\t(0x05C1 <= code && code <= 0x05C2) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\r\n\t\t(0x05C4 <= code && code <= 0x05C5) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\r\n\t\t0x05C7 == code || // Mn HEBREW POINT QAMATS QATAN\r\n\t\t(0x0610 <= code && code <= 0x061A) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\r\n\t\t(0x064B <= code && code <= 0x065F) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\r\n\t\t0x0670 == code || // Mn ARABIC LETTER SUPERSCRIPT ALEF\r\n\t\t(0x06D6 <= code && code <= 0x06DC) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\r\n\t\t(0x06DF <= code && code <= 0x06E4) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\r\n\t\t(0x06E7 <= code && code <= 0x06E8) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\r\n\t\t(0x06EA <= code && code <= 0x06ED) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\r\n\t\t0x0711 == code || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\r\n\t\t(0x0730 <= code && code <= 0x074A) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\r\n\t\t(0x07A6 <= code && code <= 0x07B0) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\r\n\t\t(0x07EB <= code && code <= 0x07F3) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\r\n\t\t(0x0816 <= code && code <= 0x0819) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\r\n\t\t(0x081B <= code && code <= 0x0823) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\r\n\t\t(0x0825 <= code && code <= 0x0827) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\r\n\t\t(0x0829 <= code && code <= 0x082D) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\r\n\t\t(0x0859 <= code && code <= 0x085B) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\r\n\t\t(0x08D4 <= code && code <= 0x08E1) || // Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA\r\n\t\t(0x08E3 <= code && code <= 0x0902) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\r\n\t\t0x093A == code || // Mn DEVANAGARI VOWEL SIGN OE\r\n\t\t0x093C == code || // Mn DEVANAGARI SIGN NUKTA\r\n\t\t(0x0941 <= code && code <= 0x0948) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\r\n\t\t0x094D == code || // Mn DEVANAGARI SIGN VIRAMA\r\n\t\t(0x0951 <= code && code <= 0x0957) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\r\n\t\t(0x0962 <= code && code <= 0x0963) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\r\n\t\t0x0981 == code || // Mn BENGALI SIGN CANDRABINDU\r\n\t\t0x09BC == code || // Mn BENGALI SIGN NUKTA\r\n\t\t0x09BE == code || // Mc BENGALI VOWEL SIGN AA\r\n\t\t(0x09C1 <= code && code <= 0x09C4) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\r\n\t\t0x09CD == code || // Mn BENGALI SIGN VIRAMA\r\n\t\t0x09D7 == code || // Mc BENGALI AU LENGTH MARK\r\n\t\t(0x09E2 <= code && code <= 0x09E3) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0A01 <= code && code <= 0x0A02) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\r\n\t\t0x0A3C == code || // Mn GURMUKHI SIGN NUKTA\r\n\t\t(0x0A41 <= code && code <= 0x0A42) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\r\n\t\t(0x0A47 <= code && code <= 0x0A48) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\r\n\t\t(0x0A4B <= code && code <= 0x0A4D) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\r\n\t\t0x0A51 == code || // Mn GURMUKHI SIGN UDAAT\r\n\t\t(0x0A70 <= code && code <= 0x0A71) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\r\n\t\t0x0A75 == code || // Mn GURMUKHI SIGN YAKASH\r\n\t\t(0x0A81 <= code && code <= 0x0A82) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\r\n\t\t0x0ABC == code || // Mn GUJARATI SIGN NUKTA\r\n\t\t(0x0AC1 <= code && code <= 0x0AC5) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\r\n\t\t(0x0AC7 <= code && code <= 0x0AC8) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\r\n\t\t0x0ACD == code || // Mn GUJARATI SIGN VIRAMA\r\n\t\t(0x0AE2 <= code && code <= 0x0AE3) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0AFA <= code && code <= 0x0AFF) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\r\n\t\t0x0B01 == code || // Mn ORIYA SIGN CANDRABINDU\r\n\t\t0x0B3C == code || // Mn ORIYA SIGN NUKTA\r\n\t\t0x0B3E == code || // Mc ORIYA VOWEL SIGN AA\r\n\t\t0x0B3F == code || // Mn ORIYA VOWEL SIGN I\r\n\t\t(0x0B41 <= code && code <= 0x0B44) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\r\n\t\t0x0B4D == code || // Mn ORIYA SIGN VIRAMA\r\n\t\t0x0B56 == code || // Mn ORIYA AI LENGTH MARK\r\n\t\t0x0B57 == code || // Mc ORIYA AU LENGTH MARK\r\n\t\t(0x0B62 <= code && code <= 0x0B63) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\r\n\t\t0x0B82 == code || // Mn TAMIL SIGN ANUSVARA\r\n\t\t0x0BBE == code || // Mc TAMIL VOWEL SIGN AA\r\n\t\t0x0BC0 == code || // Mn TAMIL VOWEL SIGN II\r\n\t\t0x0BCD == code || // Mn TAMIL SIGN VIRAMA\r\n\t\t0x0BD7 == code || // Mc TAMIL AU LENGTH MARK\r\n\t\t0x0C00 == code || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\r\n\t\t(0x0C3E <= code && code <= 0x0C40) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\r\n\t\t(0x0C46 <= code && code <= 0x0C48) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\r\n\t\t(0x0C4A <= code && code <= 0x0C4D) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\r\n\t\t(0x0C55 <= code && code <= 0x0C56) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\r\n\t\t(0x0C62 <= code && code <= 0x0C63) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\r\n\t\t0x0C81 == code || // Mn KANNADA SIGN CANDRABINDU\r\n\t\t0x0CBC == code || // Mn KANNADA SIGN NUKTA\r\n\t\t0x0CBF == code || // Mn KANNADA VOWEL SIGN I\r\n\t\t0x0CC2 == code || // Mc KANNADA VOWEL SIGN UU\r\n\t\t0x0CC6 == code || // Mn KANNADA VOWEL SIGN E\r\n\t\t(0x0CCC <= code && code <= 0x0CCD) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\r\n\t\t(0x0CD5 <= code && code <= 0x0CD6) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\r\n\t\t(0x0CE2 <= code && code <= 0x0CE3) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\r\n\t\t(0x0D00 <= code && code <= 0x0D01) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\r\n\t\t(0x0D3B <= code && code <= 0x0D3C) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\r\n\t\t0x0D3E == code || // Mc MALAYALAM VOWEL SIGN AA\r\n\t\t(0x0D41 <= code && code <= 0x0D44) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\r\n\t\t0x0D4D == code || // Mn MALAYALAM SIGN VIRAMA\r\n\t\t0x0D57 == code || // Mc MALAYALAM AU LENGTH MARK\r\n\t\t(0x0D62 <= code && code <= 0x0D63) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\r\n\t\t0x0DCA == code || // Mn SINHALA SIGN AL-LAKUNA\r\n\t\t0x0DCF == code || // Mc SINHALA VOWEL SIGN AELA-PILLA\r\n\t\t(0x0DD2 <= code && code <= 0x0DD4) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\r\n\t\t0x0DD6 == code || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\r\n\t\t0x0DDF == code || // Mc SINHALA VOWEL SIGN GAYANUKITTA\r\n\t\t0x0E31 == code || // Mn THAI CHARACTER MAI HAN-AKAT\r\n\t\t(0x0E34 <= code && code <= 0x0E3A) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\r\n\t\t(0x0E47 <= code && code <= 0x0E4E) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\r\n\t\t0x0EB1 == code || // Mn LAO VOWEL SIGN MAI KAN\r\n\t\t(0x0EB4 <= code && code <= 0x0EB9) || // Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU\r\n\t\t(0x0EBB <= code && code <= 0x0EBC) || // Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO\r\n\t\t(0x0EC8 <= code && code <= 0x0ECD) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\r\n\t\t(0x0F18 <= code && code <= 0x0F19) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\r\n\t\t0x0F35 == code || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\r\n\t\t0x0F37 == code || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\r\n\t\t0x0F39 == code || // Mn TIBETAN MARK TSA -PHRU\r\n\t\t(0x0F71 <= code && code <= 0x0F7E) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\r\n\t\t(0x0F80 <= code && code <= 0x0F84) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\r\n\t\t(0x0F86 <= code && code <= 0x0F87) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\r\n\t\t(0x0F8D <= code && code <= 0x0F97) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\r\n\t\t(0x0F99 <= code && code <= 0x0FBC) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\r\n\t\t0x0FC6 == code || // Mn TIBETAN SYMBOL PADMA GDAN\r\n\t\t(0x102D <= code && code <= 0x1030) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\r\n\t\t(0x1032 <= code && code <= 0x1037) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\r\n\t\t(0x1039 <= code && code <= 0x103A) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\r\n\t\t(0x103D <= code && code <= 0x103E) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\r\n\t\t(0x1058 <= code && code <= 0x1059) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\r\n\t\t(0x105E <= code && code <= 0x1060) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\r\n\t\t(0x1071 <= code && code <= 0x1074) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\r\n\t\t0x1082 == code || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\r\n\t\t(0x1085 <= code && code <= 0x1086) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\r\n\t\t0x108D == code || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\r\n\t\t0x109D == code || // Mn MYANMAR VOWEL SIGN AITON AI\r\n\t\t(0x135D <= code && code <= 0x135F) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\r\n\t\t(0x1712 <= code && code <= 0x1714) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\r\n\t\t(0x1732 <= code && code <= 0x1734) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\r\n\t\t(0x1752 <= code && code <= 0x1753) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\r\n\t\t(0x1772 <= code && code <= 0x1773) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\r\n\t\t(0x17B4 <= code && code <= 0x17B5) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\r\n\t\t(0x17B7 <= code && code <= 0x17BD) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\r\n\t\t0x17C6 == code || // Mn KHMER SIGN NIKAHIT\r\n\t\t(0x17C9 <= code && code <= 0x17D3) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\r\n\t\t0x17DD == code || // Mn KHMER SIGN ATTHACAN\r\n\t\t(0x180B <= code && code <= 0x180D) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\r\n\t\t(0x1885 <= code && code <= 0x1886) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\r\n\t\t0x18A9 == code || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\r\n\t\t(0x1920 <= code && code <= 0x1922) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\r\n\t\t(0x1927 <= code && code <= 0x1928) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\r\n\t\t0x1932 == code || // Mn LIMBU SMALL LETTER ANUSVARA\r\n\t\t(0x1939 <= code && code <= 0x193B) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\r\n\t\t(0x1A17 <= code && code <= 0x1A18) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\r\n\t\t0x1A1B == code || // Mn BUGINESE VOWEL SIGN AE\r\n\t\t0x1A56 == code || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\r\n\t\t(0x1A58 <= code && code <= 0x1A5E) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\r\n\t\t0x1A60 == code || // Mn TAI THAM SIGN SAKOT\r\n\t\t0x1A62 == code || // Mn TAI THAM VOWEL SIGN MAI SAT\r\n\t\t(0x1A65 <= code && code <= 0x1A6C) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\r\n\t\t(0x1A73 <= code && code <= 0x1A7C) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\r\n\t\t0x1A7F == code || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\r\n\t\t(0x1AB0 <= code && code <= 0x1ABD) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\r\n\t\t0x1ABE == code || // Me COMBINING PARENTHESES OVERLAY\r\n\t\t(0x1B00 <= code && code <= 0x1B03) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\r\n\t\t0x1B34 == code || // Mn BALINESE SIGN REREKAN\r\n\t\t(0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\r\n\t\t0x1B3C == code || // Mn BALINESE VOWEL SIGN LA LENGA\r\n\t\t0x1B42 == code || // Mn BALINESE VOWEL SIGN PEPET\r\n\t\t(0x1B6B <= code && code <= 0x1B73) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\r\n\t\t(0x1B80 <= code && code <= 0x1B81) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\r\n\t\t(0x1BA2 <= code && code <= 0x1BA5) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\r\n\t\t(0x1BA8 <= code && code <= 0x1BA9) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\r\n\t\t(0x1BAB <= code && code <= 0x1BAD) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\r\n\t\t0x1BE6 == code || // Mn BATAK SIGN TOMPI\r\n\t\t(0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\r\n\t\t0x1BED == code || // Mn BATAK VOWEL SIGN KARO O\r\n\t\t(0x1BEF <= code && code <= 0x1BF1) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\r\n\t\t(0x1C2C <= code && code <= 0x1C33) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\r\n\t\t(0x1C36 <= code && code <= 0x1C37) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\r\n\t\t(0x1CD0 <= code && code <= 0x1CD2) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\r\n\t\t(0x1CD4 <= code && code <= 0x1CE0) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\r\n\t\t(0x1CE2 <= code && code <= 0x1CE8) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\r\n\t\t0x1CED == code || // Mn VEDIC SIGN TIRYAK\r\n\t\t0x1CF4 == code || // Mn VEDIC TONE CANDRA ABOVE\r\n\t\t(0x1CF8 <= code && code <= 0x1CF9) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\r\n\t\t(0x1DC0 <= code && code <= 0x1DF9) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\r\n\t\t(0x1DFB <= code && code <= 0x1DFF) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\r\n\t\t0x200C == code || // Cf ZERO WIDTH NON-JOINER\r\n\t\t(0x20D0 <= code && code <= 0x20DC) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\r\n\t\t(0x20DD <= code && code <= 0x20E0) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\r\n\t\t0x20E1 == code || // Mn COMBINING LEFT RIGHT ARROW ABOVE\r\n\t\t(0x20E2 <= code && code <= 0x20E4) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\r\n\t\t(0x20E5 <= code && code <= 0x20F0) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\r\n\t\t(0x2CEF <= code && code <= 0x2CF1) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\r\n\t\t0x2D7F == code || // Mn TIFINAGH CONSONANT JOINER\r\n\t\t(0x2DE0 <= code && code <= 0x2DFF) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\r\n\t\t(0x302A <= code && code <= 0x302D) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\r\n\t\t(0x302E <= code && code <= 0x302F) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\r\n\t\t(0x3099 <= code && code <= 0x309A) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\r\n\t\t0xA66F == code || // Mn COMBINING CYRILLIC VZMET\r\n\t\t(0xA670 <= code && code <= 0xA672) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\r\n\t\t(0xA674 <= code && code <= 0xA67D) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\r\n\t\t(0xA69E <= code && code <= 0xA69F) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\r\n\t\t(0xA6F0 <= code && code <= 0xA6F1) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\r\n\t\t0xA802 == code || // Mn SYLOTI NAGRI SIGN DVISVARA\r\n\t\t0xA806 == code || // Mn SYLOTI NAGRI SIGN HASANTA\r\n\t\t0xA80B == code || // Mn SYLOTI NAGRI SIGN ANUSVARA\r\n\t\t(0xA825 <= code && code <= 0xA826) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\r\n\t\t(0xA8C4 <= code && code <= 0xA8C5) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\r\n\t\t(0xA8E0 <= code && code <= 0xA8F1) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\r\n\t\t(0xA926 <= code && code <= 0xA92D) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\r\n\t\t(0xA947 <= code && code <= 0xA951) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\r\n\t\t(0xA980 <= code && code <= 0xA982) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\r\n\t\t0xA9B3 == code || // Mn JAVANESE SIGN CECAK TELU\r\n\t\t(0xA9B6 <= code && code <= 0xA9B9) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\r\n\t\t0xA9BC == code || // Mn JAVANESE VOWEL SIGN PEPET\r\n\t\t0xA9E5 == code || // Mn MYANMAR SIGN SHAN SAW\r\n\t\t(0xAA29 <= code && code <= 0xAA2E) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\r\n\t\t(0xAA31 <= code && code <= 0xAA32) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\r\n\t\t(0xAA35 <= code && code <= 0xAA36) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\r\n\t\t0xAA43 == code || // Mn CHAM CONSONANT SIGN FINAL NG\r\n\t\t0xAA4C == code || // Mn CHAM CONSONANT SIGN FINAL M\r\n\t\t0xAA7C == code || // Mn MYANMAR SIGN TAI LAING TONE-2\r\n\t\t0xAAB0 == code || // Mn TAI VIET MAI KANG\r\n\t\t(0xAAB2 <= code && code <= 0xAAB4) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\r\n\t\t(0xAAB7 <= code && code <= 0xAAB8) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\r\n\t\t(0xAABE <= code && code <= 0xAABF) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\r\n\t\t0xAAC1 == code || // Mn TAI VIET TONE MAI THO\r\n\t\t(0xAAEC <= code && code <= 0xAAED) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\r\n\t\t0xAAF6 == code || // Mn MEETEI MAYEK VIRAMA\r\n\t\t0xABE5 == code || // Mn MEETEI MAYEK VOWEL SIGN ANAP\r\n\t\t0xABE8 == code || // Mn MEETEI MAYEK VOWEL SIGN UNAP\r\n\t\t0xABED == code || // Mn MEETEI MAYEK APUN IYEK\r\n\t\t0xFB1E == code || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\r\n\t\t(0xFE00 <= code && code <= 0xFE0F) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\r\n\t\t(0xFE20 <= code && code <= 0xFE2F) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\r\n\t\t(0xFF9E <= code && code <= 0xFF9F) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\r\n\t\t0x101FD == code || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\r\n\t\t0x102E0 == code || // Mn COPTIC EPACT THOUSANDS MARK\r\n\t\t(0x10376 <= code && code <= 0x1037A) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\r\n\t\t(0x10A01 <= code && code <= 0x10A03) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\r\n\t\t(0x10A05 <= code && code <= 0x10A06) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\r\n\t\t(0x10A0C <= code && code <= 0x10A0F) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\r\n\t\t(0x10A38 <= code && code <= 0x10A3A) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\r\n\t\t0x10A3F == code || // Mn KHAROSHTHI VIRAMA\r\n\t\t(0x10AE5 <= code && code <= 0x10AE6) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\r\n\t\t0x11001 == code || // Mn BRAHMI SIGN ANUSVARA\r\n\t\t(0x11038 <= code && code <= 0x11046) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\r\n\t\t(0x1107F <= code && code <= 0x11081) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\r\n\t\t(0x110B3 <= code && code <= 0x110B6) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\r\n\t\t(0x110B9 <= code && code <= 0x110BA) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\r\n\t\t(0x11100 <= code && code <= 0x11102) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\r\n\t\t(0x11127 <= code && code <= 0x1112B) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\r\n\t\t(0x1112D <= code && code <= 0x11134) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\r\n\t\t0x11173 == code || // Mn MAHAJANI SIGN NUKTA\r\n\t\t(0x11180 <= code && code <= 0x11181) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\r\n\t\t(0x111B6 <= code && code <= 0x111BE) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\r\n\t\t(0x111CA <= code && code <= 0x111CC) || // Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK\r\n\t\t(0x1122F <= code && code <= 0x11231) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\r\n\t\t0x11234 == code || // Mn KHOJKI SIGN ANUSVARA\r\n\t\t(0x11236 <= code && code <= 0x11237) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\r\n\t\t0x1123E == code || // Mn KHOJKI SIGN SUKUN\r\n\t\t0x112DF == code || // Mn KHUDAWADI SIGN ANUSVARA\r\n\t\t(0x112E3 <= code && code <= 0x112EA) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\r\n\t\t(0x11300 <= code && code <= 0x11301) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\r\n\t\t0x1133C == code || // Mn GRANTHA SIGN NUKTA\r\n\t\t0x1133E == code || // Mc GRANTHA VOWEL SIGN AA\r\n\t\t0x11340 == code || // Mn GRANTHA VOWEL SIGN II\r\n\t\t0x11357 == code || // Mc GRANTHA AU LENGTH MARK\r\n\t\t(0x11366 <= code && code <= 0x1136C) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\r\n\t\t(0x11370 <= code && code <= 0x11374) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\r\n\t\t(0x11438 <= code && code <= 0x1143F) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\r\n\t\t(0x11442 <= code && code <= 0x11444) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\r\n\t\t0x11446 == code || // Mn NEWA SIGN NUKTA\r\n\t\t0x114B0 == code || // Mc TIRHUTA VOWEL SIGN AA\r\n\t\t(0x114B3 <= code && code <= 0x114B8) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\r\n\t\t0x114BA == code || // Mn TIRHUTA VOWEL SIGN SHORT E\r\n\t\t0x114BD == code || // Mc TIRHUTA VOWEL SIGN SHORT O\r\n\t\t(0x114BF <= code && code <= 0x114C0) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\r\n\t\t(0x114C2 <= code && code <= 0x114C3) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\r\n\t\t0x115AF == code || // Mc SIDDHAM VOWEL SIGN AA\r\n\t\t(0x115B2 <= code && code <= 0x115B5) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\r\n\t\t(0x115BC <= code && code <= 0x115BD) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\r\n\t\t(0x115BF <= code && code <= 0x115C0) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\r\n\t\t(0x115DC <= code && code <= 0x115DD) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\r\n\t\t(0x11633 <= code && code <= 0x1163A) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\r\n\t\t0x1163D == code || // Mn MODI SIGN ANUSVARA\r\n\t\t(0x1163F <= code && code <= 0x11640) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\r\n\t\t0x116AB == code || // Mn TAKRI SIGN ANUSVARA\r\n\t\t0x116AD == code || // Mn TAKRI VOWEL SIGN AA\r\n\t\t(0x116B0 <= code && code <= 0x116B5) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\r\n\t\t0x116B7 == code || // Mn TAKRI SIGN NUKTA\r\n\t\t(0x1171D <= code && code <= 0x1171F) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\r\n\t\t(0x11722 <= code && code <= 0x11725) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\r\n\t\t(0x11727 <= code && code <= 0x1172B) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\r\n\t\t(0x11A01 <= code && code <= 0x11A06) || // Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O\r\n\t\t(0x11A09 <= code && code <= 0x11A0A) || // Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK\r\n\t\t(0x11A33 <= code && code <= 0x11A38) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\r\n\t\t(0x11A3B <= code && code <= 0x11A3E) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\r\n\t\t0x11A47 == code || // Mn ZANABAZAR SQUARE SUBJOINER\r\n\t\t(0x11A51 <= code && code <= 0x11A56) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\r\n\t\t(0x11A59 <= code && code <= 0x11A5B) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\r\n\t\t(0x11A8A <= code && code <= 0x11A96) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\r\n\t\t(0x11A98 <= code && code <= 0x11A99) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\r\n\t\t(0x11C30 <= code && code <= 0x11C36) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\r\n\t\t(0x11C38 <= code && code <= 0x11C3D) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\r\n\t\t0x11C3F == code || // Mn BHAIKSUKI SIGN VIRAMA\r\n\t\t(0x11C92 <= code && code <= 0x11CA7) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\r\n\t\t(0x11CAA <= code && code <= 0x11CB0) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\r\n\t\t(0x11CB2 <= code && code <= 0x11CB3) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\r\n\t\t(0x11CB5 <= code && code <= 0x11CB6) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\r\n\t\t(0x11D31 <= code && code <= 0x11D36) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\r\n\t\t0x11D3A == code || // Mn MASARAM GONDI VOWEL SIGN E\r\n\t\t(0x11D3C <= code && code <= 0x11D3D) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\r\n\t\t(0x11D3F <= code && code <= 0x11D45) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\r\n\t\t0x11D47 == code || // Mn MASARAM GONDI RA-KARA\r\n\t\t(0x16AF0 <= code && code <= 0x16AF4) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\r\n\t\t(0x16B30 <= code && code <= 0x16B36) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\r\n\t\t(0x16F8F <= code && code <= 0x16F92) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\r\n\t\t(0x1BC9D <= code && code <= 0x1BC9E) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\r\n\t\t0x1D165 == code || // Mc MUSICAL SYMBOL COMBINING STEM\r\n\t\t(0x1D167 <= code && code <= 0x1D169) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\r\n\t\t(0x1D16E <= code && code <= 0x1D172) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\r\n\t\t(0x1D17B <= code && code <= 0x1D182) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\r\n\t\t(0x1D185 <= code && code <= 0x1D18B) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\r\n\t\t(0x1D1AA <= code && code <= 0x1D1AD) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\r\n\t\t(0x1D242 <= code && code <= 0x1D244) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\r\n\t\t(0x1DA00 <= code && code <= 0x1DA36) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\r\n\t\t(0x1DA3B <= code && code <= 0x1DA6C) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\r\n\t\t0x1DA75 == code || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\r\n\t\t0x1DA84 == code || // Mn SIGNWRITING LOCATION HEAD NECK\r\n\t\t(0x1DA9B <= code && code <= 0x1DA9F) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\r\n\t\t(0x1DAA1 <= code && code <= 0x1DAAF) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\r\n\t\t(0x1E000 <= code && code <= 0x1E006) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\r\n\t\t(0x1E008 <= code && code <= 0x1E018) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\r\n\t\t(0x1E01B <= code && code <= 0x1E021) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\r\n\t\t(0x1E023 <= code && code <= 0x1E024) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\r\n\t\t(0x1E026 <= code && code <= 0x1E02A) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\r\n\t\t(0x1E8D0 <= code && code <= 0x1E8D6) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\r\n\t\t(0x1E944 <= code && code <= 0x1E94A) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\r\n\t\t(0xE0020 <= code && code <= 0xE007F) || // Cf [96] TAG SPACE..CANCEL TAG\r\n\t\t(0xE0100 <= code && code <= 0xE01EF) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\r\n\t\t){\r\n\t\t\treturn Extend;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x1F1E6 <= code && code <= 0x1F1FF) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\r\n\t\t){\r\n\t\t\treturn Regional_Indicator;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x0903 == code || // Mc DEVANAGARI SIGN VISARGA\r\n\t\t0x093B == code || // Mc DEVANAGARI VOWEL SIGN OOE\r\n\t\t(0x093E <= code && code <= 0x0940) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\r\n\t\t(0x0949 <= code && code <= 0x094C) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\r\n\t\t(0x094E <= code && code <= 0x094F) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\r\n\t\t(0x0982 <= code && code <= 0x0983) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\r\n\t\t(0x09BF <= code && code <= 0x09C0) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\r\n\t\t(0x09C7 <= code && code <= 0x09C8) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\r\n\t\t(0x09CB <= code && code <= 0x09CC) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\r\n\t\t0x0A03 == code || // Mc GURMUKHI SIGN VISARGA\r\n\t\t(0x0A3E <= code && code <= 0x0A40) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\r\n\t\t0x0A83 == code || // Mc GUJARATI SIGN VISARGA\r\n\t\t(0x0ABE <= code && code <= 0x0AC0) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\r\n\t\t0x0AC9 == code || // Mc GUJARATI VOWEL SIGN CANDRA O\r\n\t\t(0x0ACB <= code && code <= 0x0ACC) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\r\n\t\t(0x0B02 <= code && code <= 0x0B03) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\r\n\t\t0x0B40 == code || // Mc ORIYA VOWEL SIGN II\r\n\t\t(0x0B47 <= code && code <= 0x0B48) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\r\n\t\t(0x0B4B <= code && code <= 0x0B4C) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\r\n\t\t0x0BBF == code || // Mc TAMIL VOWEL SIGN I\r\n\t\t(0x0BC1 <= code && code <= 0x0BC2) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\r\n\t\t(0x0BC6 <= code && code <= 0x0BC8) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\r\n\t\t(0x0BCA <= code && code <= 0x0BCC) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\r\n\t\t(0x0C01 <= code && code <= 0x0C03) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\r\n\t\t(0x0C41 <= code && code <= 0x0C44) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\r\n\t\t(0x0C82 <= code && code <= 0x0C83) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\r\n\t\t0x0CBE == code || // Mc KANNADA VOWEL SIGN AA\r\n\t\t(0x0CC0 <= code && code <= 0x0CC1) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\r\n\t\t(0x0CC3 <= code && code <= 0x0CC4) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\r\n\t\t(0x0CC7 <= code && code <= 0x0CC8) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\r\n\t\t(0x0CCA <= code && code <= 0x0CCB) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\r\n\t\t(0x0D02 <= code && code <= 0x0D03) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\r\n\t\t(0x0D3F <= code && code <= 0x0D40) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\r\n\t\t(0x0D46 <= code && code <= 0x0D48) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\r\n\t\t(0x0D4A <= code && code <= 0x0D4C) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\r\n\t\t(0x0D82 <= code && code <= 0x0D83) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\r\n\t\t(0x0DD0 <= code && code <= 0x0DD1) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\r\n\t\t(0x0DD8 <= code && code <= 0x0DDE) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\r\n\t\t(0x0DF2 <= code && code <= 0x0DF3) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\r\n\t\t0x0E33 == code || // Lo THAI CHARACTER SARA AM\r\n\t\t0x0EB3 == code || // Lo LAO VOWEL SIGN AM\r\n\t\t(0x0F3E <= code && code <= 0x0F3F) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\r\n\t\t0x0F7F == code || // Mc TIBETAN SIGN RNAM BCAD\r\n\t\t0x1031 == code || // Mc MYANMAR VOWEL SIGN E\r\n\t\t(0x103B <= code && code <= 0x103C) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\r\n\t\t(0x1056 <= code && code <= 0x1057) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\r\n\t\t0x1084 == code || // Mc MYANMAR VOWEL SIGN SHAN E\r\n\t\t0x17B6 == code || // Mc KHMER VOWEL SIGN AA\r\n\t\t(0x17BE <= code && code <= 0x17C5) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\r\n\t\t(0x17C7 <= code && code <= 0x17C8) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\r\n\t\t(0x1923 <= code && code <= 0x1926) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\r\n\t\t(0x1929 <= code && code <= 0x192B) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\r\n\t\t(0x1930 <= code && code <= 0x1931) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\r\n\t\t(0x1933 <= code && code <= 0x1938) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\r\n\t\t(0x1A19 <= code && code <= 0x1A1A) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\r\n\t\t0x1A55 == code || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\r\n\t\t0x1A57 == code || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\r\n\t\t(0x1A6D <= code && code <= 0x1A72) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\r\n\t\t0x1B04 == code || // Mc BALINESE SIGN BISAH\r\n\t\t0x1B35 == code || // Mc BALINESE VOWEL SIGN TEDUNG\r\n\t\t0x1B3B == code || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\r\n\t\t(0x1B3D <= code && code <= 0x1B41) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\r\n\t\t(0x1B43 <= code && code <= 0x1B44) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\r\n\t\t0x1B82 == code || // Mc SUNDANESE SIGN PANGWISAD\r\n\t\t0x1BA1 == code || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\r\n\t\t(0x1BA6 <= code && code <= 0x1BA7) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\r\n\t\t0x1BAA == code || // Mc SUNDANESE SIGN PAMAAEH\r\n\t\t0x1BE7 == code || // Mc BATAK VOWEL SIGN E\r\n\t\t(0x1BEA <= code && code <= 0x1BEC) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\r\n\t\t0x1BEE == code || // Mc BATAK VOWEL SIGN U\r\n\t\t(0x1BF2 <= code && code <= 0x1BF3) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\r\n\t\t(0x1C24 <= code && code <= 0x1C2B) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\r\n\t\t(0x1C34 <= code && code <= 0x1C35) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\r\n\t\t0x1CE1 == code || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\r\n\t\t(0x1CF2 <= code && code <= 0x1CF3) || // Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA\r\n\t\t0x1CF7 == code || // Mc VEDIC SIGN ATIKRAMA\r\n\t\t(0xA823 <= code && code <= 0xA824) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\r\n\t\t0xA827 == code || // Mc SYLOTI NAGRI VOWEL SIGN OO\r\n\t\t(0xA880 <= code && code <= 0xA881) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\r\n\t\t(0xA8B4 <= code && code <= 0xA8C3) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\r\n\t\t(0xA952 <= code && code <= 0xA953) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\r\n\t\t0xA983 == code || // Mc JAVANESE SIGN WIGNYAN\r\n\t\t(0xA9B4 <= code && code <= 0xA9B5) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\r\n\t\t(0xA9BA <= code && code <= 0xA9BB) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\r\n\t\t(0xA9BD <= code && code <= 0xA9C0) || // Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON\r\n\t\t(0xAA2F <= code && code <= 0xAA30) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\r\n\t\t(0xAA33 <= code && code <= 0xAA34) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\r\n\t\t0xAA4D == code || // Mc CHAM CONSONANT SIGN FINAL H\r\n\t\t0xAAEB == code || // Mc MEETEI MAYEK VOWEL SIGN II\r\n\t\t(0xAAEE <= code && code <= 0xAAEF) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\r\n\t\t0xAAF5 == code || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\r\n\t\t(0xABE3 <= code && code <= 0xABE4) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\r\n\t\t(0xABE6 <= code && code <= 0xABE7) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\r\n\t\t(0xABE9 <= code && code <= 0xABEA) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\r\n\t\t0xABEC == code || // Mc MEETEI MAYEK LUM IYEK\r\n\t\t0x11000 == code || // Mc BRAHMI SIGN CANDRABINDU\r\n\t\t0x11002 == code || // Mc BRAHMI SIGN VISARGA\r\n\t\t0x11082 == code || // Mc KAITHI SIGN VISARGA\r\n\t\t(0x110B0 <= code && code <= 0x110B2) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\r\n\t\t(0x110B7 <= code && code <= 0x110B8) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\r\n\t\t0x1112C == code || // Mc CHAKMA VOWEL SIGN E\r\n\t\t0x11182 == code || // Mc SHARADA SIGN VISARGA\r\n\t\t(0x111B3 <= code && code <= 0x111B5) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\r\n\t\t(0x111BF <= code && code <= 0x111C0) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\r\n\t\t(0x1122C <= code && code <= 0x1122E) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\r\n\t\t(0x11232 <= code && code <= 0x11233) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\r\n\t\t0x11235 == code || // Mc KHOJKI SIGN VIRAMA\r\n\t\t(0x112E0 <= code && code <= 0x112E2) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\r\n\t\t(0x11302 <= code && code <= 0x11303) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\r\n\t\t0x1133F == code || // Mc GRANTHA VOWEL SIGN I\r\n\t\t(0x11341 <= code && code <= 0x11344) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\r\n\t\t(0x11347 <= code && code <= 0x11348) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\r\n\t\t(0x1134B <= code && code <= 0x1134D) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\r\n\t\t(0x11362 <= code && code <= 0x11363) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\r\n\t\t(0x11435 <= code && code <= 0x11437) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\r\n\t\t(0x11440 <= code && code <= 0x11441) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\r\n\t\t0x11445 == code || // Mc NEWA SIGN VISARGA\r\n\t\t(0x114B1 <= code && code <= 0x114B2) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\r\n\t\t0x114B9 == code || // Mc TIRHUTA VOWEL SIGN E\r\n\t\t(0x114BB <= code && code <= 0x114BC) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\r\n\t\t0x114BE == code || // Mc TIRHUTA VOWEL SIGN AU\r\n\t\t0x114C1 == code || // Mc TIRHUTA SIGN VISARGA\r\n\t\t(0x115B0 <= code && code <= 0x115B1) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\r\n\t\t(0x115B8 <= code && code <= 0x115BB) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\r\n\t\t0x115BE == code || // Mc SIDDHAM SIGN VISARGA\r\n\t\t(0x11630 <= code && code <= 0x11632) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\r\n\t\t(0x1163B <= code && code <= 0x1163C) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\r\n\t\t0x1163E == code || // Mc MODI SIGN VISARGA\r\n\t\t0x116AC == code || // Mc TAKRI SIGN VISARGA\r\n\t\t(0x116AE <= code && code <= 0x116AF) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\r\n\t\t0x116B6 == code || // Mc TAKRI SIGN VIRAMA\r\n\t\t(0x11720 <= code && code <= 0x11721) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\r\n\t\t0x11726 == code || // Mc AHOM VOWEL SIGN E\r\n\t\t(0x11A07 <= code && code <= 0x11A08) || // Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU\r\n\t\t0x11A39 == code || // Mc ZANABAZAR SQUARE SIGN VISARGA\r\n\t\t(0x11A57 <= code && code <= 0x11A58) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\r\n\t\t0x11A97 == code || // Mc SOYOMBO SIGN VISARGA\r\n\t\t0x11C2F == code || // Mc BHAIKSUKI VOWEL SIGN AA\r\n\t\t0x11C3E == code || // Mc BHAIKSUKI SIGN VISARGA\r\n\t\t0x11CA9 == code || // Mc MARCHEN SUBJOINED LETTER YA\r\n\t\t0x11CB1 == code || // Mc MARCHEN VOWEL SIGN I\r\n\t\t0x11CB4 == code || // Mc MARCHEN VOWEL SIGN O\r\n\t\t(0x16F51 <= code && code <= 0x16F7E) || // Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG\r\n\t\t0x1D166 == code || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\r\n\t\t0x1D16D == code // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\r\n\t\t){\r\n\t\t\treturn SpacingMark;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x1100 <= code && code <= 0x115F) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\r\n\t\t(0xA960 <= code && code <= 0xA97C) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\r\n\t\t){\r\n\t\t\treturn L;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1160 <= code && code <= 0x11A7) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\r\n\t\t(0xD7B0 <= code && code <= 0xD7C6) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\r\n\t\t){\r\n\t\t\treturn V;\r\n\t\t}\r\n\r\n\r\n\t\tif(\r\n\t\t(0x11A8 <= code && code <= 0x11FF) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\r\n\t\t(0xD7CB <= code && code <= 0xD7FB) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\r\n\t\t){\r\n\t\t\treturn T;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0xAC00 == code || // Lo HANGUL SYLLABLE GA\r\n\t\t0xAC1C == code || // Lo HANGUL SYLLABLE GAE\r\n\t\t0xAC38 == code || // Lo HANGUL SYLLABLE GYA\r\n\t\t0xAC54 == code || // Lo HANGUL SYLLABLE GYAE\r\n\t\t0xAC70 == code || // Lo HANGUL SYLLABLE GEO\r\n\t\t0xAC8C == code || // Lo HANGUL SYLLABLE GE\r\n\t\t0xACA8 == code || // Lo HANGUL SYLLABLE GYEO\r\n\t\t0xACC4 == code || // Lo HANGUL SYLLABLE GYE\r\n\t\t0xACE0 == code || // Lo HANGUL SYLLABLE GO\r\n\t\t0xACFC == code || // Lo HANGUL SYLLABLE GWA\r\n\t\t0xAD18 == code || // Lo HANGUL SYLLABLE GWAE\r\n\t\t0xAD34 == code || // Lo HANGUL SYLLABLE GOE\r\n\t\t0xAD50 == code || // Lo HANGUL SYLLABLE GYO\r\n\t\t0xAD6C == code || // Lo HANGUL SYLLABLE GU\r\n\t\t0xAD88 == code || // Lo HANGUL SYLLABLE GWEO\r\n\t\t0xADA4 == code || // Lo HANGUL SYLLABLE GWE\r\n\t\t0xADC0 == code || // Lo HANGUL SYLLABLE GWI\r\n\t\t0xADDC == code || // Lo HANGUL SYLLABLE GYU\r\n\t\t0xADF8 == code || // Lo HANGUL SYLLABLE GEU\r\n\t\t0xAE14 == code || // Lo HANGUL SYLLABLE GYI\r\n\t\t0xAE30 == code || // Lo HANGUL SYLLABLE GI\r\n\t\t0xAE4C == code || // Lo HANGUL SYLLABLE GGA\r\n\t\t0xAE68 == code || // Lo HANGUL SYLLABLE GGAE\r\n\t\t0xAE84 == code || // Lo HANGUL SYLLABLE GGYA\r\n\t\t0xAEA0 == code || // Lo HANGUL SYLLABLE GGYAE\r\n\t\t0xAEBC == code || // Lo HANGUL SYLLABLE GGEO\r\n\t\t0xAED8 == code || // Lo HANGUL SYLLABLE GGE\r\n\t\t0xAEF4 == code || // Lo HANGUL SYLLABLE GGYEO\r\n\t\t0xAF10 == code || // Lo HANGUL SYLLABLE GGYE\r\n\t\t0xAF2C == code || // Lo HANGUL SYLLABLE GGO\r\n\t\t0xAF48 == code || // Lo HANGUL SYLLABLE GGWA\r\n\t\t0xAF64 == code || // Lo HANGUL SYLLABLE GGWAE\r\n\t\t0xAF80 == code || // Lo HANGUL SYLLABLE GGOE\r\n\t\t0xAF9C == code || // Lo HANGUL SYLLABLE GGYO\r\n\t\t0xAFB8 == code || // Lo HANGUL SYLLABLE GGU\r\n\t\t0xAFD4 == code || // Lo HANGUL SYLLABLE GGWEO\r\n\t\t0xAFF0 == code || // Lo HANGUL SYLLABLE GGWE\r\n\t\t0xB00C == code || // Lo HANGUL SYLLABLE GGWI\r\n\t\t0xB028 == code || // Lo HANGUL SYLLABLE GGYU\r\n\t\t0xB044 == code || // Lo HANGUL SYLLABLE GGEU\r\n\t\t0xB060 == code || // Lo HANGUL SYLLABLE GGYI\r\n\t\t0xB07C == code || // Lo HANGUL SYLLABLE GGI\r\n\t\t0xB098 == code || // Lo HANGUL SYLLABLE NA\r\n\t\t0xB0B4 == code || // Lo HANGUL SYLLABLE NAE\r\n\t\t0xB0D0 == code || // Lo HANGUL SYLLABLE NYA\r\n\t\t0xB0EC == code || // Lo HANGUL SYLLABLE NYAE\r\n\t\t0xB108 == code || // Lo HANGUL SYLLABLE NEO\r\n\t\t0xB124 == code || // Lo HANGUL SYLLABLE NE\r\n\t\t0xB140 == code || // Lo HANGUL SYLLABLE NYEO\r\n\t\t0xB15C == code || // Lo HANGUL SYLLABLE NYE\r\n\t\t0xB178 == code || // Lo HANGUL SYLLABLE NO\r\n\t\t0xB194 == code || // Lo HANGUL SYLLABLE NWA\r\n\t\t0xB1B0 == code || // Lo HANGUL SYLLABLE NWAE\r\n\t\t0xB1CC == code || // Lo HANGUL SYLLABLE NOE\r\n\t\t0xB1E8 == code || // Lo HANGUL SYLLABLE NYO\r\n\t\t0xB204 == code || // Lo HANGUL SYLLABLE NU\r\n\t\t0xB220 == code || // Lo HANGUL SYLLABLE NWEO\r\n\t\t0xB23C == code || // Lo HANGUL SYLLABLE NWE\r\n\t\t0xB258 == code || // Lo HANGUL SYLLABLE NWI\r\n\t\t0xB274 == code || // Lo HANGUL SYLLABLE NYU\r\n\t\t0xB290 == code || // Lo HANGUL SYLLABLE NEU\r\n\t\t0xB2AC == code || // Lo HANGUL SYLLABLE NYI\r\n\t\t0xB2C8 == code || // Lo HANGUL SYLLABLE NI\r\n\t\t0xB2E4 == code || // Lo HANGUL SYLLABLE DA\r\n\t\t0xB300 == code || // Lo HANGUL SYLLABLE DAE\r\n\t\t0xB31C == code || // Lo HANGUL SYLLABLE DYA\r\n\t\t0xB338 == code || // Lo HANGUL SYLLABLE DYAE\r\n\t\t0xB354 == code || // Lo HANGUL SYLLABLE DEO\r\n\t\t0xB370 == code || // Lo HANGUL SYLLABLE DE\r\n\t\t0xB38C == code || // Lo HANGUL SYLLABLE DYEO\r\n\t\t0xB3A8 == code || // Lo HANGUL SYLLABLE DYE\r\n\t\t0xB3C4 == code || // Lo HANGUL SYLLABLE DO\r\n\t\t0xB3E0 == code || // Lo HANGUL SYLLABLE DWA\r\n\t\t0xB3FC == code || // Lo HANGUL SYLLABLE DWAE\r\n\t\t0xB418 == code || // Lo HANGUL SYLLABLE DOE\r\n\t\t0xB434 == code || // Lo HANGUL SYLLABLE DYO\r\n\t\t0xB450 == code || // Lo HANGUL SYLLABLE DU\r\n\t\t0xB46C == code || // Lo HANGUL SYLLABLE DWEO\r\n\t\t0xB488 == code || // Lo HANGUL SYLLABLE DWE\r\n\t\t0xB4A4 == code || // Lo HANGUL SYLLABLE DWI\r\n\t\t0xB4C0 == code || // Lo HANGUL SYLLABLE DYU\r\n\t\t0xB4DC == code || // Lo HANGUL SYLLABLE DEU\r\n\t\t0xB4F8 == code || // Lo HANGUL SYLLABLE DYI\r\n\t\t0xB514 == code || // Lo HANGUL SYLLABLE DI\r\n\t\t0xB530 == code || // Lo HANGUL SYLLABLE DDA\r\n\t\t0xB54C == code || // Lo HANGUL SYLLABLE DDAE\r\n\t\t0xB568 == code || // Lo HANGUL SYLLABLE DDYA\r\n\t\t0xB584 == code || // Lo HANGUL SYLLABLE DDYAE\r\n\t\t0xB5A0 == code || // Lo HANGUL SYLLABLE DDEO\r\n\t\t0xB5BC == code || // Lo HANGUL SYLLABLE DDE\r\n\t\t0xB5D8 == code || // Lo HANGUL SYLLABLE DDYEO\r\n\t\t0xB5F4 == code || // Lo HANGUL SYLLABLE DDYE\r\n\t\t0xB610 == code || // Lo HANGUL SYLLABLE DDO\r\n\t\t0xB62C == code || // Lo HANGUL SYLLABLE DDWA\r\n\t\t0xB648 == code || // Lo HANGUL SYLLABLE DDWAE\r\n\t\t0xB664 == code || // Lo HANGUL SYLLABLE DDOE\r\n\t\t0xB680 == code || // Lo HANGUL SYLLABLE DDYO\r\n\t\t0xB69C == code || // Lo HANGUL SYLLABLE DDU\r\n\t\t0xB6B8 == code || // Lo HANGUL SYLLABLE DDWEO\r\n\t\t0xB6D4 == code || // Lo HANGUL SYLLABLE DDWE\r\n\t\t0xB6F0 == code || // Lo HANGUL SYLLABLE DDWI\r\n\t\t0xB70C == code || // Lo HANGUL SYLLABLE DDYU\r\n\t\t0xB728 == code || // Lo HANGUL SYLLABLE DDEU\r\n\t\t0xB744 == code || // Lo HANGUL SYLLABLE DDYI\r\n\t\t0xB760 == code || // Lo HANGUL SYLLABLE DDI\r\n\t\t0xB77C == code || // Lo HANGUL SYLLABLE RA\r\n\t\t0xB798 == code || // Lo HANGUL SYLLABLE RAE\r\n\t\t0xB7B4 == code || // Lo HANGUL SYLLABLE RYA\r\n\t\t0xB7D0 == code || // Lo HANGUL SYLLABLE RYAE\r\n\t\t0xB7EC == code || // Lo HANGUL SYLLABLE REO\r\n\t\t0xB808 == code || // Lo HANGUL SYLLABLE RE\r\n\t\t0xB824 == code || // Lo HANGUL SYLLABLE RYEO\r\n\t\t0xB840 == code || // Lo HANGUL SYLLABLE RYE\r\n\t\t0xB85C == code || // Lo HANGUL SYLLABLE RO\r\n\t\t0xB878 == code || // Lo HANGUL SYLLABLE RWA\r\n\t\t0xB894 == code || // Lo HANGUL SYLLABLE RWAE\r\n\t\t0xB8B0 == code || // Lo HANGUL SYLLABLE ROE\r\n\t\t0xB8CC == code || // Lo HANGUL SYLLABLE RYO\r\n\t\t0xB8E8 == code || // Lo HANGUL SYLLABLE RU\r\n\t\t0xB904 == code || // Lo HANGUL SYLLABLE RWEO\r\n\t\t0xB920 == code || // Lo HANGUL SYLLABLE RWE\r\n\t\t0xB93C == code || // Lo HANGUL SYLLABLE RWI\r\n\t\t0xB958 == code || // Lo HANGUL SYLLABLE RYU\r\n\t\t0xB974 == code || // Lo HANGUL SYLLABLE REU\r\n\t\t0xB990 == code || // Lo HANGUL SYLLABLE RYI\r\n\t\t0xB9AC == code || // Lo HANGUL SYLLABLE RI\r\n\t\t0xB9C8 == code || // Lo HANGUL SYLLABLE MA\r\n\t\t0xB9E4 == code || // Lo HANGUL SYLLABLE MAE\r\n\t\t0xBA00 == code || // Lo HANGUL SYLLABLE MYA\r\n\t\t0xBA1C == code || // Lo HANGUL SYLLABLE MYAE\r\n\t\t0xBA38 == code || // Lo HANGUL SYLLABLE MEO\r\n\t\t0xBA54 == code || // Lo HANGUL SYLLABLE ME\r\n\t\t0xBA70 == code || // Lo HANGUL SYLLABLE MYEO\r\n\t\t0xBA8C == code || // Lo HANGUL SYLLABLE MYE\r\n\t\t0xBAA8 == code || // Lo HANGUL SYLLABLE MO\r\n\t\t0xBAC4 == code || // Lo HANGUL SYLLABLE MWA\r\n\t\t0xBAE0 == code || // Lo HANGUL SYLLABLE MWAE\r\n\t\t0xBAFC == code || // Lo HANGUL SYLLABLE MOE\r\n\t\t0xBB18 == code || // Lo HANGUL SYLLABLE MYO\r\n\t\t0xBB34 == code || // Lo HANGUL SYLLABLE MU\r\n\t\t0xBB50 == code || // Lo HANGUL SYLLABLE MWEO\r\n\t\t0xBB6C == code || // Lo HANGUL SYLLABLE MWE\r\n\t\t0xBB88 == code || // Lo HANGUL SYLLABLE MWI\r\n\t\t0xBBA4 == code || // Lo HANGUL SYLLABLE MYU\r\n\t\t0xBBC0 == code || // Lo HANGUL SYLLABLE MEU\r\n\t\t0xBBDC == code || // Lo HANGUL SYLLABLE MYI\r\n\t\t0xBBF8 == code || // Lo HANGUL SYLLABLE MI\r\n\t\t0xBC14 == code || // Lo HANGUL SYLLABLE BA\r\n\t\t0xBC30 == code || // Lo HANGUL SYLLABLE BAE\r\n\t\t0xBC4C == code || // Lo HANGUL SYLLABLE BYA\r\n\t\t0xBC68 == code || // Lo HANGUL SYLLABLE BYAE\r\n\t\t0xBC84 == code || // Lo HANGUL SYLLABLE BEO\r\n\t\t0xBCA0 == code || // Lo HANGUL SYLLABLE BE\r\n\t\t0xBCBC == code || // Lo HANGUL SYLLABLE BYEO\r\n\t\t0xBCD8 == code || // Lo HANGUL SYLLABLE BYE\r\n\t\t0xBCF4 == code || // Lo HANGUL SYLLABLE BO\r\n\t\t0xBD10 == code || // Lo HANGUL SYLLABLE BWA\r\n\t\t0xBD2C == code || // Lo HANGUL SYLLABLE BWAE\r\n\t\t0xBD48 == code || // Lo HANGUL SYLLABLE BOE\r\n\t\t0xBD64 == code || // Lo HANGUL SYLLABLE BYO\r\n\t\t0xBD80 == code || // Lo HANGUL SYLLABLE BU\r\n\t\t0xBD9C == code || // Lo HANGUL SYLLABLE BWEO\r\n\t\t0xBDB8 == code || // Lo HANGUL SYLLABLE BWE\r\n\t\t0xBDD4 == code || // Lo HANGUL SYLLABLE BWI\r\n\t\t0xBDF0 == code || // Lo HANGUL SYLLABLE BYU\r\n\t\t0xBE0C == code || // Lo HANGUL SYLLABLE BEU\r\n\t\t0xBE28 == code || // Lo HANGUL SYLLABLE BYI\r\n\t\t0xBE44 == code || // Lo HANGUL SYLLABLE BI\r\n\t\t0xBE60 == code || // Lo HANGUL SYLLABLE BBA\r\n\t\t0xBE7C == code || // Lo HANGUL SYLLABLE BBAE\r\n\t\t0xBE98 == code || // Lo HANGUL SYLLABLE BBYA\r\n\t\t0xBEB4 == code || // Lo HANGUL SYLLABLE BBYAE\r\n\t\t0xBED0 == code || // Lo HANGUL SYLLABLE BBEO\r\n\t\t0xBEEC == code || // Lo HANGUL SYLLABLE BBE\r\n\t\t0xBF08 == code || // Lo HANGUL SYLLABLE BBYEO\r\n\t\t0xBF24 == code || // Lo HANGUL SYLLABLE BBYE\r\n\t\t0xBF40 == code || // Lo HANGUL SYLLABLE BBO\r\n\t\t0xBF5C == code || // Lo HANGUL SYLLABLE BBWA\r\n\t\t0xBF78 == code || // Lo HANGUL SYLLABLE BBWAE\r\n\t\t0xBF94 == code || // Lo HANGUL SYLLABLE BBOE\r\n\t\t0xBFB0 == code || // Lo HANGUL SYLLABLE BBYO\r\n\t\t0xBFCC == code || // Lo HANGUL SYLLABLE BBU\r\n\t\t0xBFE8 == code || // Lo HANGUL SYLLABLE BBWEO\r\n\t\t0xC004 == code || // Lo HANGUL SYLLABLE BBWE\r\n\t\t0xC020 == code || // Lo HANGUL SYLLABLE BBWI\r\n\t\t0xC03C == code || // Lo HANGUL SYLLABLE BBYU\r\n\t\t0xC058 == code || // Lo HANGUL SYLLABLE BBEU\r\n\t\t0xC074 == code || // Lo HANGUL SYLLABLE BBYI\r\n\t\t0xC090 == code || // Lo HANGUL SYLLABLE BBI\r\n\t\t0xC0AC == code || // Lo HANGUL SYLLABLE SA\r\n\t\t0xC0C8 == code || // Lo HANGUL SYLLABLE SAE\r\n\t\t0xC0E4 == code || // Lo HANGUL SYLLABLE SYA\r\n\t\t0xC100 == code || // Lo HANGUL SYLLABLE SYAE\r\n\t\t0xC11C == code || // Lo HANGUL SYLLABLE SEO\r\n\t\t0xC138 == code || // Lo HANGUL SYLLABLE SE\r\n\t\t0xC154 == code || // Lo HANGUL SYLLABLE SYEO\r\n\t\t0xC170 == code || // Lo HANGUL SYLLABLE SYE\r\n\t\t0xC18C == code || // Lo HANGUL SYLLABLE SO\r\n\t\t0xC1A8 == code || // Lo HANGUL SYLLABLE SWA\r\n\t\t0xC1C4 == code || // Lo HANGUL SYLLABLE SWAE\r\n\t\t0xC1E0 == code || // Lo HANGUL SYLLABLE SOE\r\n\t\t0xC1FC == code || // Lo HANGUL SYLLABLE SYO\r\n\t\t0xC218 == code || // Lo HANGUL SYLLABLE SU\r\n\t\t0xC234 == code || // Lo HANGUL SYLLABLE SWEO\r\n\t\t0xC250 == code || // Lo HANGUL SYLLABLE SWE\r\n\t\t0xC26C == code || // Lo HANGUL SYLLABLE SWI\r\n\t\t0xC288 == code || // Lo HANGUL SYLLABLE SYU\r\n\t\t0xC2A4 == code || // Lo HANGUL SYLLABLE SEU\r\n\t\t0xC2C0 == code || // Lo HANGUL SYLLABLE SYI\r\n\t\t0xC2DC == code || // Lo HANGUL SYLLABLE SI\r\n\t\t0xC2F8 == code || // Lo HANGUL SYLLABLE SSA\r\n\t\t0xC314 == code || // Lo HANGUL SYLLABLE SSAE\r\n\t\t0xC330 == code || // Lo HANGUL SYLLABLE SSYA\r\n\t\t0xC34C == code || // Lo HANGUL SYLLABLE SSYAE\r\n\t\t0xC368 == code || // Lo HANGUL SYLLABLE SSEO\r\n\t\t0xC384 == code || // Lo HANGUL SYLLABLE SSE\r\n\t\t0xC3A0 == code || // Lo HANGUL SYLLABLE SSYEO\r\n\t\t0xC3BC == code || // Lo HANGUL SYLLABLE SSYE\r\n\t\t0xC3D8 == code || // Lo HANGUL SYLLABLE SSO\r\n\t\t0xC3F4 == code || // Lo HANGUL SYLLABLE SSWA\r\n\t\t0xC410 == code || // Lo HANGUL SYLLABLE SSWAE\r\n\t\t0xC42C == code || // Lo HANGUL SYLLABLE SSOE\r\n\t\t0xC448 == code || // Lo HANGUL SYLLABLE SSYO\r\n\t\t0xC464 == code || // Lo HANGUL SYLLABLE SSU\r\n\t\t0xC480 == code || // Lo HANGUL SYLLABLE SSWEO\r\n\t\t0xC49C == code || // Lo HANGUL SYLLABLE SSWE\r\n\t\t0xC4B8 == code || // Lo HANGUL SYLLABLE SSWI\r\n\t\t0xC4D4 == code || // Lo HANGUL SYLLABLE SSYU\r\n\t\t0xC4F0 == code || // Lo HANGUL SYLLABLE SSEU\r\n\t\t0xC50C == code || // Lo HANGUL SYLLABLE SSYI\r\n\t\t0xC528 == code || // Lo HANGUL SYLLABLE SSI\r\n\t\t0xC544 == code || // Lo HANGUL SYLLABLE A\r\n\t\t0xC560 == code || // Lo HANGUL SYLLABLE AE\r\n\t\t0xC57C == code || // Lo HANGUL SYLLABLE YA\r\n\t\t0xC598 == code || // Lo HANGUL SYLLABLE YAE\r\n\t\t0xC5B4 == code || // Lo HANGUL SYLLABLE EO\r\n\t\t0xC5D0 == code || // Lo HANGUL SYLLABLE E\r\n\t\t0xC5EC == code || // Lo HANGUL SYLLABLE YEO\r\n\t\t0xC608 == code || // Lo HANGUL SYLLABLE YE\r\n\t\t0xC624 == code || // Lo HANGUL SYLLABLE O\r\n\t\t0xC640 == code || // Lo HANGUL SYLLABLE WA\r\n\t\t0xC65C == code || // Lo HANGUL SYLLABLE WAE\r\n\t\t0xC678 == code || // Lo HANGUL SYLLABLE OE\r\n\t\t0xC694 == code || // Lo HANGUL SYLLABLE YO\r\n\t\t0xC6B0 == code || // Lo HANGUL SYLLABLE U\r\n\t\t0xC6CC == code || // Lo HANGUL SYLLABLE WEO\r\n\t\t0xC6E8 == code || // Lo HANGUL SYLLABLE WE\r\n\t\t0xC704 == code || // Lo HANGUL SYLLABLE WI\r\n\t\t0xC720 == code || // Lo HANGUL SYLLABLE YU\r\n\t\t0xC73C == code || // Lo HANGUL SYLLABLE EU\r\n\t\t0xC758 == code || // Lo HANGUL SYLLABLE YI\r\n\t\t0xC774 == code || // Lo HANGUL SYLLABLE I\r\n\t\t0xC790 == code || // Lo HANGUL SYLLABLE JA\r\n\t\t0xC7AC == code || // Lo HANGUL SYLLABLE JAE\r\n\t\t0xC7C8 == code || // Lo HANGUL SYLLABLE JYA\r\n\t\t0xC7E4 == code || // Lo HANGUL SYLLABLE JYAE\r\n\t\t0xC800 == code || // Lo HANGUL SYLLABLE JEO\r\n\t\t0xC81C == code || // Lo HANGUL SYLLABLE JE\r\n\t\t0xC838 == code || // Lo HANGUL SYLLABLE JYEO\r\n\t\t0xC854 == code || // Lo HANGUL SYLLABLE JYE\r\n\t\t0xC870 == code || // Lo HANGUL SYLLABLE JO\r\n\t\t0xC88C == code || // Lo HANGUL SYLLABLE JWA\r\n\t\t0xC8A8 == code || // Lo HANGUL SYLLABLE JWAE\r\n\t\t0xC8C4 == code || // Lo HANGUL SYLLABLE JOE\r\n\t\t0xC8E0 == code || // Lo HANGUL SYLLABLE JYO\r\n\t\t0xC8FC == code || // Lo HANGUL SYLLABLE JU\r\n\t\t0xC918 == code || // Lo HANGUL SYLLABLE JWEO\r\n\t\t0xC934 == code || // Lo HANGUL SYLLABLE JWE\r\n\t\t0xC950 == code || // Lo HANGUL SYLLABLE JWI\r\n\t\t0xC96C == code || // Lo HANGUL SYLLABLE JYU\r\n\t\t0xC988 == code || // Lo HANGUL SYLLABLE JEU\r\n\t\t0xC9A4 == code || // Lo HANGUL SYLLABLE JYI\r\n\t\t0xC9C0 == code || // Lo HANGUL SYLLABLE JI\r\n\t\t0xC9DC == code || // Lo HANGUL SYLLABLE JJA\r\n\t\t0xC9F8 == code || // Lo HANGUL SYLLABLE JJAE\r\n\t\t0xCA14 == code || // Lo HANGUL SYLLABLE JJYA\r\n\t\t0xCA30 == code || // Lo HANGUL SYLLABLE JJYAE\r\n\t\t0xCA4C == code || // Lo HANGUL SYLLABLE JJEO\r\n\t\t0xCA68 == code || // Lo HANGUL SYLLABLE JJE\r\n\t\t0xCA84 == code || // Lo HANGUL SYLLABLE JJYEO\r\n\t\t0xCAA0 == code || // Lo HANGUL SYLLABLE JJYE\r\n\t\t0xCABC == code || // Lo HANGUL SYLLABLE JJO\r\n\t\t0xCAD8 == code || // Lo HANGUL SYLLABLE JJWA\r\n\t\t0xCAF4 == code || // Lo HANGUL SYLLABLE JJWAE\r\n\t\t0xCB10 == code || // Lo HANGUL SYLLABLE JJOE\r\n\t\t0xCB2C == code || // Lo HANGUL SYLLABLE JJYO\r\n\t\t0xCB48 == code || // Lo HANGUL SYLLABLE JJU\r\n\t\t0xCB64 == code || // Lo HANGUL SYLLABLE JJWEO\r\n\t\t0xCB80 == code || // Lo HANGUL SYLLABLE JJWE\r\n\t\t0xCB9C == code || // Lo HANGUL SYLLABLE JJWI\r\n\t\t0xCBB8 == code || // Lo HANGUL SYLLABLE JJYU\r\n\t\t0xCBD4 == code || // Lo HANGUL SYLLABLE JJEU\r\n\t\t0xCBF0 == code || // Lo HANGUL SYLLABLE JJYI\r\n\t\t0xCC0C == code || // Lo HANGUL SYLLABLE JJI\r\n\t\t0xCC28 == code || // Lo HANGUL SYLLABLE CA\r\n\t\t0xCC44 == code || // Lo HANGUL SYLLABLE CAE\r\n\t\t0xCC60 == code || // Lo HANGUL SYLLABLE CYA\r\n\t\t0xCC7C == code || // Lo HANGUL SYLLABLE CYAE\r\n\t\t0xCC98 == code || // Lo HANGUL SYLLABLE CEO\r\n\t\t0xCCB4 == code || // Lo HANGUL SYLLABLE CE\r\n\t\t0xCCD0 == code || // Lo HANGUL SYLLABLE CYEO\r\n\t\t0xCCEC == code || // Lo HANGUL SYLLABLE CYE\r\n\t\t0xCD08 == code || // Lo HANGUL SYLLABLE CO\r\n\t\t0xCD24 == code || // Lo HANGUL SYLLABLE CWA\r\n\t\t0xCD40 == code || // Lo HANGUL SYLLABLE CWAE\r\n\t\t0xCD5C == code || // Lo HANGUL SYLLABLE COE\r\n\t\t0xCD78 == code || // Lo HANGUL SYLLABLE CYO\r\n\t\t0xCD94 == code || // Lo HANGUL SYLLABLE CU\r\n\t\t0xCDB0 == code || // Lo HANGUL SYLLABLE CWEO\r\n\t\t0xCDCC == code || // Lo HANGUL SYLLABLE CWE\r\n\t\t0xCDE8 == code || // Lo HANGUL SYLLABLE CWI\r\n\t\t0xCE04 == code || // Lo HANGUL SYLLABLE CYU\r\n\t\t0xCE20 == code || // Lo HANGUL SYLLABLE CEU\r\n\t\t0xCE3C == code || // Lo HANGUL SYLLABLE CYI\r\n\t\t0xCE58 == code || // Lo HANGUL SYLLABLE CI\r\n\t\t0xCE74 == code || // Lo HANGUL SYLLABLE KA\r\n\t\t0xCE90 == code || // Lo HANGUL SYLLABLE KAE\r\n\t\t0xCEAC == code || // Lo HANGUL SYLLABLE KYA\r\n\t\t0xCEC8 == code || // Lo HANGUL SYLLABLE KYAE\r\n\t\t0xCEE4 == code || // Lo HANGUL SYLLABLE KEO\r\n\t\t0xCF00 == code || // Lo HANGUL SYLLABLE KE\r\n\t\t0xCF1C == code || // Lo HANGUL SYLLABLE KYEO\r\n\t\t0xCF38 == code || // Lo HANGUL SYLLABLE KYE\r\n\t\t0xCF54 == code || // Lo HANGUL SYLLABLE KO\r\n\t\t0xCF70 == code || // Lo HANGUL SYLLABLE KWA\r\n\t\t0xCF8C == code || // Lo HANGUL SYLLABLE KWAE\r\n\t\t0xCFA8 == code || // Lo HANGUL SYLLABLE KOE\r\n\t\t0xCFC4 == code || // Lo HANGUL SYLLABLE KYO\r\n\t\t0xCFE0 == code || // Lo HANGUL SYLLABLE KU\r\n\t\t0xCFFC == code || // Lo HANGUL SYLLABLE KWEO\r\n\t\t0xD018 == code || // Lo HANGUL SYLLABLE KWE\r\n\t\t0xD034 == code || // Lo HANGUL SYLLABLE KWI\r\n\t\t0xD050 == code || // Lo HANGUL SYLLABLE KYU\r\n\t\t0xD06C == code || // Lo HANGUL SYLLABLE KEU\r\n\t\t0xD088 == code || // Lo HANGUL SYLLABLE KYI\r\n\t\t0xD0A4 == code || // Lo HANGUL SYLLABLE KI\r\n\t\t0xD0C0 == code || // Lo HANGUL SYLLABLE TA\r\n\t\t0xD0DC == code || // Lo HANGUL SYLLABLE TAE\r\n\t\t0xD0F8 == code || // Lo HANGUL SYLLABLE TYA\r\n\t\t0xD114 == code || // Lo HANGUL SYLLABLE TYAE\r\n\t\t0xD130 == code || // Lo HANGUL SYLLABLE TEO\r\n\t\t0xD14C == code || // Lo HANGUL SYLLABLE TE\r\n\t\t0xD168 == code || // Lo HANGUL SYLLABLE TYEO\r\n\t\t0xD184 == code || // Lo HANGUL SYLLABLE TYE\r\n\t\t0xD1A0 == code || // Lo HANGUL SYLLABLE TO\r\n\t\t0xD1BC == code || // Lo HANGUL SYLLABLE TWA\r\n\t\t0xD1D8 == code || // Lo HANGUL SYLLABLE TWAE\r\n\t\t0xD1F4 == code || // Lo HANGUL SYLLABLE TOE\r\n\t\t0xD210 == code || // Lo HANGUL SYLLABLE TYO\r\n\t\t0xD22C == code || // Lo HANGUL SYLLABLE TU\r\n\t\t0xD248 == code || // Lo HANGUL SYLLABLE TWEO\r\n\t\t0xD264 == code || // Lo HANGUL SYLLABLE TWE\r\n\t\t0xD280 == code || // Lo HANGUL SYLLABLE TWI\r\n\t\t0xD29C == code || // Lo HANGUL SYLLABLE TYU\r\n\t\t0xD2B8 == code || // Lo HANGUL SYLLABLE TEU\r\n\t\t0xD2D4 == code || // Lo HANGUL SYLLABLE TYI\r\n\t\t0xD2F0 == code || // Lo HANGUL SYLLABLE TI\r\n\t\t0xD30C == code || // Lo HANGUL SYLLABLE PA\r\n\t\t0xD328 == code || // Lo HANGUL SYLLABLE PAE\r\n\t\t0xD344 == code || // Lo HANGUL SYLLABLE PYA\r\n\t\t0xD360 == code || // Lo HANGUL SYLLABLE PYAE\r\n\t\t0xD37C == code || // Lo HANGUL SYLLABLE PEO\r\n\t\t0xD398 == code || // Lo HANGUL SYLLABLE PE\r\n\t\t0xD3B4 == code || // Lo HANGUL SYLLABLE PYEO\r\n\t\t0xD3D0 == code || // Lo HANGUL SYLLABLE PYE\r\n\t\t0xD3EC == code || // Lo HANGUL SYLLABLE PO\r\n\t\t0xD408 == code || // Lo HANGUL SYLLABLE PWA\r\n\t\t0xD424 == code || // Lo HANGUL SYLLABLE PWAE\r\n\t\t0xD440 == code || // Lo HANGUL SYLLABLE POE\r\n\t\t0xD45C == code || // Lo HANGUL SYLLABLE PYO\r\n\t\t0xD478 == code || // Lo HANGUL SYLLABLE PU\r\n\t\t0xD494 == code || // Lo HANGUL SYLLABLE PWEO\r\n\t\t0xD4B0 == code || // Lo HANGUL SYLLABLE PWE\r\n\t\t0xD4CC == code || // Lo HANGUL SYLLABLE PWI\r\n\t\t0xD4E8 == code || // Lo HANGUL SYLLABLE PYU\r\n\t\t0xD504 == code || // Lo HANGUL SYLLABLE PEU\r\n\t\t0xD520 == code || // Lo HANGUL SYLLABLE PYI\r\n\t\t0xD53C == code || // Lo HANGUL SYLLABLE PI\r\n\t\t0xD558 == code || // Lo HANGUL SYLLABLE HA\r\n\t\t0xD574 == code || // Lo HANGUL SYLLABLE HAE\r\n\t\t0xD590 == code || // Lo HANGUL SYLLABLE HYA\r\n\t\t0xD5AC == code || // Lo HANGUL SYLLABLE HYAE\r\n\t\t0xD5C8 == code || // Lo HANGUL SYLLABLE HEO\r\n\t\t0xD5E4 == code || // Lo HANGUL SYLLABLE HE\r\n\t\t0xD600 == code || // Lo HANGUL SYLLABLE HYEO\r\n\t\t0xD61C == code || // Lo HANGUL SYLLABLE HYE\r\n\t\t0xD638 == code || // Lo HANGUL SYLLABLE HO\r\n\t\t0xD654 == code || // Lo HANGUL SYLLABLE HWA\r\n\t\t0xD670 == code || // Lo HANGUL SYLLABLE HWAE\r\n\t\t0xD68C == code || // Lo HANGUL SYLLABLE HOE\r\n\t\t0xD6A8 == code || // Lo HANGUL SYLLABLE HYO\r\n\t\t0xD6C4 == code || // Lo HANGUL SYLLABLE HU\r\n\t\t0xD6E0 == code || // Lo HANGUL SYLLABLE HWEO\r\n\t\t0xD6FC == code || // Lo HANGUL SYLLABLE HWE\r\n\t\t0xD718 == code || // Lo HANGUL SYLLABLE HWI\r\n\t\t0xD734 == code || // Lo HANGUL SYLLABLE HYU\r\n\t\t0xD750 == code || // Lo HANGUL SYLLABLE HEU\r\n\t\t0xD76C == code || // Lo HANGUL SYLLABLE HYI\r\n\t\t0xD788 == code // Lo HANGUL SYLLABLE HI\r\n\t\t){\r\n\t\t\treturn LV;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0xAC01 <= code && code <= 0xAC1B) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\r\n\t\t(0xAC1D <= code && code <= 0xAC37) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\r\n\t\t(0xAC39 <= code && code <= 0xAC53) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\r\n\t\t(0xAC55 <= code && code <= 0xAC6F) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\r\n\t\t(0xAC71 <= code && code <= 0xAC8B) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\r\n\t\t(0xAC8D <= code && code <= 0xACA7) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\r\n\t\t(0xACA9 <= code && code <= 0xACC3) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\r\n\t\t(0xACC5 <= code && code <= 0xACDF) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\r\n\t\t(0xACE1 <= code && code <= 0xACFB) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\r\n\t\t(0xACFD <= code && code <= 0xAD17) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\r\n\t\t(0xAD19 <= code && code <= 0xAD33) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\r\n\t\t(0xAD35 <= code && code <= 0xAD4F) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\r\n\t\t(0xAD51 <= code && code <= 0xAD6B) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\r\n\t\t(0xAD6D <= code && code <= 0xAD87) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\r\n\t\t(0xAD89 <= code && code <= 0xADA3) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\r\n\t\t(0xADA5 <= code && code <= 0xADBF) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\r\n\t\t(0xADC1 <= code && code <= 0xADDB) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\r\n\t\t(0xADDD <= code && code <= 0xADF7) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\r\n\t\t(0xADF9 <= code && code <= 0xAE13) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\r\n\t\t(0xAE15 <= code && code <= 0xAE2F) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\r\n\t\t(0xAE31 <= code && code <= 0xAE4B) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\r\n\t\t(0xAE4D <= code && code <= 0xAE67) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\r\n\t\t(0xAE69 <= code && code <= 0xAE83) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\r\n\t\t(0xAE85 <= code && code <= 0xAE9F) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\r\n\t\t(0xAEA1 <= code && code <= 0xAEBB) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\r\n\t\t(0xAEBD <= code && code <= 0xAED7) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\r\n\t\t(0xAED9 <= code && code <= 0xAEF3) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\r\n\t\t(0xAEF5 <= code && code <= 0xAF0F) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\r\n\t\t(0xAF11 <= code && code <= 0xAF2B) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\r\n\t\t(0xAF2D <= code && code <= 0xAF47) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\r\n\t\t(0xAF49 <= code && code <= 0xAF63) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\r\n\t\t(0xAF65 <= code && code <= 0xAF7F) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\r\n\t\t(0xAF81 <= code && code <= 0xAF9B) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\r\n\t\t(0xAF9D <= code && code <= 0xAFB7) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\r\n\t\t(0xAFB9 <= code && code <= 0xAFD3) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\r\n\t\t(0xAFD5 <= code && code <= 0xAFEF) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\r\n\t\t(0xAFF1 <= code && code <= 0xB00B) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\r\n\t\t(0xB00D <= code && code <= 0xB027) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\r\n\t\t(0xB029 <= code && code <= 0xB043) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\r\n\t\t(0xB045 <= code && code <= 0xB05F) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\r\n\t\t(0xB061 <= code && code <= 0xB07B) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\r\n\t\t(0xB07D <= code && code <= 0xB097) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\r\n\t\t(0xB099 <= code && code <= 0xB0B3) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\r\n\t\t(0xB0B5 <= code && code <= 0xB0CF) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\r\n\t\t(0xB0D1 <= code && code <= 0xB0EB) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\r\n\t\t(0xB0ED <= code && code <= 0xB107) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\r\n\t\t(0xB109 <= code && code <= 0xB123) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\r\n\t\t(0xB125 <= code && code <= 0xB13F) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\r\n\t\t(0xB141 <= code && code <= 0xB15B) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\r\n\t\t(0xB15D <= code && code <= 0xB177) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\r\n\t\t(0xB179 <= code && code <= 0xB193) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\r\n\t\t(0xB195 <= code && code <= 0xB1AF) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\r\n\t\t(0xB1B1 <= code && code <= 0xB1CB) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\r\n\t\t(0xB1CD <= code && code <= 0xB1E7) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\r\n\t\t(0xB1E9 <= code && code <= 0xB203) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\r\n\t\t(0xB205 <= code && code <= 0xB21F) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\r\n\t\t(0xB221 <= code && code <= 0xB23B) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\r\n\t\t(0xB23D <= code && code <= 0xB257) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\r\n\t\t(0xB259 <= code && code <= 0xB273) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\r\n\t\t(0xB275 <= code && code <= 0xB28F) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\r\n\t\t(0xB291 <= code && code <= 0xB2AB) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\r\n\t\t(0xB2AD <= code && code <= 0xB2C7) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\r\n\t\t(0xB2C9 <= code && code <= 0xB2E3) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\r\n\t\t(0xB2E5 <= code && code <= 0xB2FF) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\r\n\t\t(0xB301 <= code && code <= 0xB31B) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\r\n\t\t(0xB31D <= code && code <= 0xB337) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\r\n\t\t(0xB339 <= code && code <= 0xB353) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\r\n\t\t(0xB355 <= code && code <= 0xB36F) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\r\n\t\t(0xB371 <= code && code <= 0xB38B) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\r\n\t\t(0xB38D <= code && code <= 0xB3A7) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\r\n\t\t(0xB3A9 <= code && code <= 0xB3C3) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\r\n\t\t(0xB3C5 <= code && code <= 0xB3DF) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\r\n\t\t(0xB3E1 <= code && code <= 0xB3FB) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\r\n\t\t(0xB3FD <= code && code <= 0xB417) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\r\n\t\t(0xB419 <= code && code <= 0xB433) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\r\n\t\t(0xB435 <= code && code <= 0xB44F) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\r\n\t\t(0xB451 <= code && code <= 0xB46B) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\r\n\t\t(0xB46D <= code && code <= 0xB487) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\r\n\t\t(0xB489 <= code && code <= 0xB4A3) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\r\n\t\t(0xB4A5 <= code && code <= 0xB4BF) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\r\n\t\t(0xB4C1 <= code && code <= 0xB4DB) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\r\n\t\t(0xB4DD <= code && code <= 0xB4F7) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\r\n\t\t(0xB4F9 <= code && code <= 0xB513) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\r\n\t\t(0xB515 <= code && code <= 0xB52F) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\r\n\t\t(0xB531 <= code && code <= 0xB54B) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\r\n\t\t(0xB54D <= code && code <= 0xB567) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\r\n\t\t(0xB569 <= code && code <= 0xB583) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\r\n\t\t(0xB585 <= code && code <= 0xB59F) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\r\n\t\t(0xB5A1 <= code && code <= 0xB5BB) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\r\n\t\t(0xB5BD <= code && code <= 0xB5D7) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\r\n\t\t(0xB5D9 <= code && code <= 0xB5F3) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\r\n\t\t(0xB5F5 <= code && code <= 0xB60F) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\r\n\t\t(0xB611 <= code && code <= 0xB62B) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\r\n\t\t(0xB62D <= code && code <= 0xB647) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\r\n\t\t(0xB649 <= code && code <= 0xB663) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\r\n\t\t(0xB665 <= code && code <= 0xB67F) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\r\n\t\t(0xB681 <= code && code <= 0xB69B) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\r\n\t\t(0xB69D <= code && code <= 0xB6B7) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\r\n\t\t(0xB6B9 <= code && code <= 0xB6D3) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\r\n\t\t(0xB6D5 <= code && code <= 0xB6EF) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\r\n\t\t(0xB6F1 <= code && code <= 0xB70B) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\r\n\t\t(0xB70D <= code && code <= 0xB727) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\r\n\t\t(0xB729 <= code && code <= 0xB743) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\r\n\t\t(0xB745 <= code && code <= 0xB75F) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\r\n\t\t(0xB761 <= code && code <= 0xB77B) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\r\n\t\t(0xB77D <= code && code <= 0xB797) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\r\n\t\t(0xB799 <= code && code <= 0xB7B3) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\r\n\t\t(0xB7B5 <= code && code <= 0xB7CF) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\r\n\t\t(0xB7D1 <= code && code <= 0xB7EB) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\r\n\t\t(0xB7ED <= code && code <= 0xB807) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\r\n\t\t(0xB809 <= code && code <= 0xB823) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\r\n\t\t(0xB825 <= code && code <= 0xB83F) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\r\n\t\t(0xB841 <= code && code <= 0xB85B) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\r\n\t\t(0xB85D <= code && code <= 0xB877) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\r\n\t\t(0xB879 <= code && code <= 0xB893) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\r\n\t\t(0xB895 <= code && code <= 0xB8AF) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\r\n\t\t(0xB8B1 <= code && code <= 0xB8CB) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\r\n\t\t(0xB8CD <= code && code <= 0xB8E7) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\r\n\t\t(0xB8E9 <= code && code <= 0xB903) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\r\n\t\t(0xB905 <= code && code <= 0xB91F) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\r\n\t\t(0xB921 <= code && code <= 0xB93B) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\r\n\t\t(0xB93D <= code && code <= 0xB957) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\r\n\t\t(0xB959 <= code && code <= 0xB973) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\r\n\t\t(0xB975 <= code && code <= 0xB98F) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\r\n\t\t(0xB991 <= code && code <= 0xB9AB) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\r\n\t\t(0xB9AD <= code && code <= 0xB9C7) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\r\n\t\t(0xB9C9 <= code && code <= 0xB9E3) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\r\n\t\t(0xB9E5 <= code && code <= 0xB9FF) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\r\n\t\t(0xBA01 <= code && code <= 0xBA1B) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\r\n\t\t(0xBA1D <= code && code <= 0xBA37) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\r\n\t\t(0xBA39 <= code && code <= 0xBA53) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\r\n\t\t(0xBA55 <= code && code <= 0xBA6F) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\r\n\t\t(0xBA71 <= code && code <= 0xBA8B) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\r\n\t\t(0xBA8D <= code && code <= 0xBAA7) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\r\n\t\t(0xBAA9 <= code && code <= 0xBAC3) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\r\n\t\t(0xBAC5 <= code && code <= 0xBADF) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\r\n\t\t(0xBAE1 <= code && code <= 0xBAFB) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\r\n\t\t(0xBAFD <= code && code <= 0xBB17) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\r\n\t\t(0xBB19 <= code && code <= 0xBB33) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\r\n\t\t(0xBB35 <= code && code <= 0xBB4F) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\r\n\t\t(0xBB51 <= code && code <= 0xBB6B) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\r\n\t\t(0xBB6D <= code && code <= 0xBB87) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\r\n\t\t(0xBB89 <= code && code <= 0xBBA3) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\r\n\t\t(0xBBA5 <= code && code <= 0xBBBF) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\r\n\t\t(0xBBC1 <= code && code <= 0xBBDB) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\r\n\t\t(0xBBDD <= code && code <= 0xBBF7) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\r\n\t\t(0xBBF9 <= code && code <= 0xBC13) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\r\n\t\t(0xBC15 <= code && code <= 0xBC2F) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\r\n\t\t(0xBC31 <= code && code <= 0xBC4B) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\r\n\t\t(0xBC4D <= code && code <= 0xBC67) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\r\n\t\t(0xBC69 <= code && code <= 0xBC83) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\r\n\t\t(0xBC85 <= code && code <= 0xBC9F) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\r\n\t\t(0xBCA1 <= code && code <= 0xBCBB) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\r\n\t\t(0xBCBD <= code && code <= 0xBCD7) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\r\n\t\t(0xBCD9 <= code && code <= 0xBCF3) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\r\n\t\t(0xBCF5 <= code && code <= 0xBD0F) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\r\n\t\t(0xBD11 <= code && code <= 0xBD2B) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\r\n\t\t(0xBD2D <= code && code <= 0xBD47) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\r\n\t\t(0xBD49 <= code && code <= 0xBD63) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\r\n\t\t(0xBD65 <= code && code <= 0xBD7F) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\r\n\t\t(0xBD81 <= code && code <= 0xBD9B) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\r\n\t\t(0xBD9D <= code && code <= 0xBDB7) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\r\n\t\t(0xBDB9 <= code && code <= 0xBDD3) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\r\n\t\t(0xBDD5 <= code && code <= 0xBDEF) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\r\n\t\t(0xBDF1 <= code && code <= 0xBE0B) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\r\n\t\t(0xBE0D <= code && code <= 0xBE27) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\r\n\t\t(0xBE29 <= code && code <= 0xBE43) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\r\n\t\t(0xBE45 <= code && code <= 0xBE5F) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\r\n\t\t(0xBE61 <= code && code <= 0xBE7B) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\r\n\t\t(0xBE7D <= code && code <= 0xBE97) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\r\n\t\t(0xBE99 <= code && code <= 0xBEB3) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\r\n\t\t(0xBEB5 <= code && code <= 0xBECF) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\r\n\t\t(0xBED1 <= code && code <= 0xBEEB) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\r\n\t\t(0xBEED <= code && code <= 0xBF07) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\r\n\t\t(0xBF09 <= code && code <= 0xBF23) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\r\n\t\t(0xBF25 <= code && code <= 0xBF3F) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\r\n\t\t(0xBF41 <= code && code <= 0xBF5B) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\r\n\t\t(0xBF5D <= code && code <= 0xBF77) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\r\n\t\t(0xBF79 <= code && code <= 0xBF93) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\r\n\t\t(0xBF95 <= code && code <= 0xBFAF) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\r\n\t\t(0xBFB1 <= code && code <= 0xBFCB) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\r\n\t\t(0xBFCD <= code && code <= 0xBFE7) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\r\n\t\t(0xBFE9 <= code && code <= 0xC003) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\r\n\t\t(0xC005 <= code && code <= 0xC01F) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\r\n\t\t(0xC021 <= code && code <= 0xC03B) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\r\n\t\t(0xC03D <= code && code <= 0xC057) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\r\n\t\t(0xC059 <= code && code <= 0xC073) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\r\n\t\t(0xC075 <= code && code <= 0xC08F) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\r\n\t\t(0xC091 <= code && code <= 0xC0AB) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\r\n\t\t(0xC0AD <= code && code <= 0xC0C7) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\r\n\t\t(0xC0C9 <= code && code <= 0xC0E3) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\r\n\t\t(0xC0E5 <= code && code <= 0xC0FF) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\r\n\t\t(0xC101 <= code && code <= 0xC11B) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\r\n\t\t(0xC11D <= code && code <= 0xC137) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\r\n\t\t(0xC139 <= code && code <= 0xC153) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\r\n\t\t(0xC155 <= code && code <= 0xC16F) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\r\n\t\t(0xC171 <= code && code <= 0xC18B) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\r\n\t\t(0xC18D <= code && code <= 0xC1A7) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\r\n\t\t(0xC1A9 <= code && code <= 0xC1C3) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\r\n\t\t(0xC1C5 <= code && code <= 0xC1DF) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\r\n\t\t(0xC1E1 <= code && code <= 0xC1FB) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\r\n\t\t(0xC1FD <= code && code <= 0xC217) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\r\n\t\t(0xC219 <= code && code <= 0xC233) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\r\n\t\t(0xC235 <= code && code <= 0xC24F) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\r\n\t\t(0xC251 <= code && code <= 0xC26B) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\r\n\t\t(0xC26D <= code && code <= 0xC287) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\r\n\t\t(0xC289 <= code && code <= 0xC2A3) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\r\n\t\t(0xC2A5 <= code && code <= 0xC2BF) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\r\n\t\t(0xC2C1 <= code && code <= 0xC2DB) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\r\n\t\t(0xC2DD <= code && code <= 0xC2F7) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\r\n\t\t(0xC2F9 <= code && code <= 0xC313) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\r\n\t\t(0xC315 <= code && code <= 0xC32F) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\r\n\t\t(0xC331 <= code && code <= 0xC34B) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\r\n\t\t(0xC34D <= code && code <= 0xC367) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\r\n\t\t(0xC369 <= code && code <= 0xC383) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\r\n\t\t(0xC385 <= code && code <= 0xC39F) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\r\n\t\t(0xC3A1 <= code && code <= 0xC3BB) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\r\n\t\t(0xC3BD <= code && code <= 0xC3D7) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\r\n\t\t(0xC3D9 <= code && code <= 0xC3F3) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\r\n\t\t(0xC3F5 <= code && code <= 0xC40F) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\r\n\t\t(0xC411 <= code && code <= 0xC42B) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\r\n\t\t(0xC42D <= code && code <= 0xC447) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\r\n\t\t(0xC449 <= code && code <= 0xC463) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\r\n\t\t(0xC465 <= code && code <= 0xC47F) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\r\n\t\t(0xC481 <= code && code <= 0xC49B) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\r\n\t\t(0xC49D <= code && code <= 0xC4B7) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\r\n\t\t(0xC4B9 <= code && code <= 0xC4D3) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\r\n\t\t(0xC4D5 <= code && code <= 0xC4EF) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\r\n\t\t(0xC4F1 <= code && code <= 0xC50B) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\r\n\t\t(0xC50D <= code && code <= 0xC527) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\r\n\t\t(0xC529 <= code && code <= 0xC543) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\r\n\t\t(0xC545 <= code && code <= 0xC55F) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\r\n\t\t(0xC561 <= code && code <= 0xC57B) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\r\n\t\t(0xC57D <= code && code <= 0xC597) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\r\n\t\t(0xC599 <= code && code <= 0xC5B3) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\r\n\t\t(0xC5B5 <= code && code <= 0xC5CF) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\r\n\t\t(0xC5D1 <= code && code <= 0xC5EB) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\r\n\t\t(0xC5ED <= code && code <= 0xC607) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\r\n\t\t(0xC609 <= code && code <= 0xC623) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\r\n\t\t(0xC625 <= code && code <= 0xC63F) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\r\n\t\t(0xC641 <= code && code <= 0xC65B) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\r\n\t\t(0xC65D <= code && code <= 0xC677) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\r\n\t\t(0xC679 <= code && code <= 0xC693) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\r\n\t\t(0xC695 <= code && code <= 0xC6AF) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\r\n\t\t(0xC6B1 <= code && code <= 0xC6CB) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\r\n\t\t(0xC6CD <= code && code <= 0xC6E7) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\r\n\t\t(0xC6E9 <= code && code <= 0xC703) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\r\n\t\t(0xC705 <= code && code <= 0xC71F) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\r\n\t\t(0xC721 <= code && code <= 0xC73B) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\r\n\t\t(0xC73D <= code && code <= 0xC757) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\r\n\t\t(0xC759 <= code && code <= 0xC773) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\r\n\t\t(0xC775 <= code && code <= 0xC78F) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\r\n\t\t(0xC791 <= code && code <= 0xC7AB) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\r\n\t\t(0xC7AD <= code && code <= 0xC7C7) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\r\n\t\t(0xC7C9 <= code && code <= 0xC7E3) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\r\n\t\t(0xC7E5 <= code && code <= 0xC7FF) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\r\n\t\t(0xC801 <= code && code <= 0xC81B) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\r\n\t\t(0xC81D <= code && code <= 0xC837) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\r\n\t\t(0xC839 <= code && code <= 0xC853) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\r\n\t\t(0xC855 <= code && code <= 0xC86F) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\r\n\t\t(0xC871 <= code && code <= 0xC88B) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\r\n\t\t(0xC88D <= code && code <= 0xC8A7) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\r\n\t\t(0xC8A9 <= code && code <= 0xC8C3) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\r\n\t\t(0xC8C5 <= code && code <= 0xC8DF) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\r\n\t\t(0xC8E1 <= code && code <= 0xC8FB) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\r\n\t\t(0xC8FD <= code && code <= 0xC917) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\r\n\t\t(0xC919 <= code && code <= 0xC933) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\r\n\t\t(0xC935 <= code && code <= 0xC94F) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\r\n\t\t(0xC951 <= code && code <= 0xC96B) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\r\n\t\t(0xC96D <= code && code <= 0xC987) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\r\n\t\t(0xC989 <= code && code <= 0xC9A3) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\r\n\t\t(0xC9A5 <= code && code <= 0xC9BF) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\r\n\t\t(0xC9C1 <= code && code <= 0xC9DB) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\r\n\t\t(0xC9DD <= code && code <= 0xC9F7) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\r\n\t\t(0xC9F9 <= code && code <= 0xCA13) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\r\n\t\t(0xCA15 <= code && code <= 0xCA2F) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\r\n\t\t(0xCA31 <= code && code <= 0xCA4B) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\r\n\t\t(0xCA4D <= code && code <= 0xCA67) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\r\n\t\t(0xCA69 <= code && code <= 0xCA83) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\r\n\t\t(0xCA85 <= code && code <= 0xCA9F) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\r\n\t\t(0xCAA1 <= code && code <= 0xCABB) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\r\n\t\t(0xCABD <= code && code <= 0xCAD7) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\r\n\t\t(0xCAD9 <= code && code <= 0xCAF3) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\r\n\t\t(0xCAF5 <= code && code <= 0xCB0F) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\r\n\t\t(0xCB11 <= code && code <= 0xCB2B) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\r\n\t\t(0xCB2D <= code && code <= 0xCB47) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\r\n\t\t(0xCB49 <= code && code <= 0xCB63) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\r\n\t\t(0xCB65 <= code && code <= 0xCB7F) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\r\n\t\t(0xCB81 <= code && code <= 0xCB9B) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\r\n\t\t(0xCB9D <= code && code <= 0xCBB7) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\r\n\t\t(0xCBB9 <= code && code <= 0xCBD3) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\r\n\t\t(0xCBD5 <= code && code <= 0xCBEF) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\r\n\t\t(0xCBF1 <= code && code <= 0xCC0B) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\r\n\t\t(0xCC0D <= code && code <= 0xCC27) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\r\n\t\t(0xCC29 <= code && code <= 0xCC43) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\r\n\t\t(0xCC45 <= code && code <= 0xCC5F) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\r\n\t\t(0xCC61 <= code && code <= 0xCC7B) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\r\n\t\t(0xCC7D <= code && code <= 0xCC97) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\r\n\t\t(0xCC99 <= code && code <= 0xCCB3) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\r\n\t\t(0xCCB5 <= code && code <= 0xCCCF) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\r\n\t\t(0xCCD1 <= code && code <= 0xCCEB) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\r\n\t\t(0xCCED <= code && code <= 0xCD07) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\r\n\t\t(0xCD09 <= code && code <= 0xCD23) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\r\n\t\t(0xCD25 <= code && code <= 0xCD3F) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\r\n\t\t(0xCD41 <= code && code <= 0xCD5B) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\r\n\t\t(0xCD5D <= code && code <= 0xCD77) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\r\n\t\t(0xCD79 <= code && code <= 0xCD93) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\r\n\t\t(0xCD95 <= code && code <= 0xCDAF) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\r\n\t\t(0xCDB1 <= code && code <= 0xCDCB) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\r\n\t\t(0xCDCD <= code && code <= 0xCDE7) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\r\n\t\t(0xCDE9 <= code && code <= 0xCE03) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\r\n\t\t(0xCE05 <= code && code <= 0xCE1F) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\r\n\t\t(0xCE21 <= code && code <= 0xCE3B) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\r\n\t\t(0xCE3D <= code && code <= 0xCE57) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\r\n\t\t(0xCE59 <= code && code <= 0xCE73) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\r\n\t\t(0xCE75 <= code && code <= 0xCE8F) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\r\n\t\t(0xCE91 <= code && code <= 0xCEAB) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\r\n\t\t(0xCEAD <= code && code <= 0xCEC7) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\r\n\t\t(0xCEC9 <= code && code <= 0xCEE3) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\r\n\t\t(0xCEE5 <= code && code <= 0xCEFF) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\r\n\t\t(0xCF01 <= code && code <= 0xCF1B) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\r\n\t\t(0xCF1D <= code && code <= 0xCF37) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\r\n\t\t(0xCF39 <= code && code <= 0xCF53) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\r\n\t\t(0xCF55 <= code && code <= 0xCF6F) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\r\n\t\t(0xCF71 <= code && code <= 0xCF8B) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\r\n\t\t(0xCF8D <= code && code <= 0xCFA7) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\r\n\t\t(0xCFA9 <= code && code <= 0xCFC3) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\r\n\t\t(0xCFC5 <= code && code <= 0xCFDF) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\r\n\t\t(0xCFE1 <= code && code <= 0xCFFB) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\r\n\t\t(0xCFFD <= code && code <= 0xD017) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\r\n\t\t(0xD019 <= code && code <= 0xD033) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\r\n\t\t(0xD035 <= code && code <= 0xD04F) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\r\n\t\t(0xD051 <= code && code <= 0xD06B) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\r\n\t\t(0xD06D <= code && code <= 0xD087) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\r\n\t\t(0xD089 <= code && code <= 0xD0A3) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\r\n\t\t(0xD0A5 <= code && code <= 0xD0BF) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\r\n\t\t(0xD0C1 <= code && code <= 0xD0DB) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\r\n\t\t(0xD0DD <= code && code <= 0xD0F7) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\r\n\t\t(0xD0F9 <= code && code <= 0xD113) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\r\n\t\t(0xD115 <= code && code <= 0xD12F) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\r\n\t\t(0xD131 <= code && code <= 0xD14B) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\r\n\t\t(0xD14D <= code && code <= 0xD167) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\r\n\t\t(0xD169 <= code && code <= 0xD183) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\r\n\t\t(0xD185 <= code && code <= 0xD19F) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\r\n\t\t(0xD1A1 <= code && code <= 0xD1BB) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\r\n\t\t(0xD1BD <= code && code <= 0xD1D7) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\r\n\t\t(0xD1D9 <= code && code <= 0xD1F3) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\r\n\t\t(0xD1F5 <= code && code <= 0xD20F) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\r\n\t\t(0xD211 <= code && code <= 0xD22B) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\r\n\t\t(0xD22D <= code && code <= 0xD247) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\r\n\t\t(0xD249 <= code && code <= 0xD263) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\r\n\t\t(0xD265 <= code && code <= 0xD27F) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\r\n\t\t(0xD281 <= code && code <= 0xD29B) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\r\n\t\t(0xD29D <= code && code <= 0xD2B7) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\r\n\t\t(0xD2B9 <= code && code <= 0xD2D3) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\r\n\t\t(0xD2D5 <= code && code <= 0xD2EF) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\r\n\t\t(0xD2F1 <= code && code <= 0xD30B) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\r\n\t\t(0xD30D <= code && code <= 0xD327) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\r\n\t\t(0xD329 <= code && code <= 0xD343) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\r\n\t\t(0xD345 <= code && code <= 0xD35F) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\r\n\t\t(0xD361 <= code && code <= 0xD37B) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\r\n\t\t(0xD37D <= code && code <= 0xD397) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\r\n\t\t(0xD399 <= code && code <= 0xD3B3) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\r\n\t\t(0xD3B5 <= code && code <= 0xD3CF) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\r\n\t\t(0xD3D1 <= code && code <= 0xD3EB) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\r\n\t\t(0xD3ED <= code && code <= 0xD407) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\r\n\t\t(0xD409 <= code && code <= 0xD423) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\r\n\t\t(0xD425 <= code && code <= 0xD43F) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\r\n\t\t(0xD441 <= code && code <= 0xD45B) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\r\n\t\t(0xD45D <= code && code <= 0xD477) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\r\n\t\t(0xD479 <= code && code <= 0xD493) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\r\n\t\t(0xD495 <= code && code <= 0xD4AF) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\r\n\t\t(0xD4B1 <= code && code <= 0xD4CB) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\r\n\t\t(0xD4CD <= code && code <= 0xD4E7) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\r\n\t\t(0xD4E9 <= code && code <= 0xD503) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\r\n\t\t(0xD505 <= code && code <= 0xD51F) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\r\n\t\t(0xD521 <= code && code <= 0xD53B) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\r\n\t\t(0xD53D <= code && code <= 0xD557) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\r\n\t\t(0xD559 <= code && code <= 0xD573) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\r\n\t\t(0xD575 <= code && code <= 0xD58F) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\r\n\t\t(0xD591 <= code && code <= 0xD5AB) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\r\n\t\t(0xD5AD <= code && code <= 0xD5C7) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\r\n\t\t(0xD5C9 <= code && code <= 0xD5E3) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\r\n\t\t(0xD5E5 <= code && code <= 0xD5FF) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\r\n\t\t(0xD601 <= code && code <= 0xD61B) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\r\n\t\t(0xD61D <= code && code <= 0xD637) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\r\n\t\t(0xD639 <= code && code <= 0xD653) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\r\n\t\t(0xD655 <= code && code <= 0xD66F) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\r\n\t\t(0xD671 <= code && code <= 0xD68B) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\r\n\t\t(0xD68D <= code && code <= 0xD6A7) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\r\n\t\t(0xD6A9 <= code && code <= 0xD6C3) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\r\n\t\t(0xD6C5 <= code && code <= 0xD6DF) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\r\n\t\t(0xD6E1 <= code && code <= 0xD6FB) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\r\n\t\t(0xD6FD <= code && code <= 0xD717) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\r\n\t\t(0xD719 <= code && code <= 0xD733) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\r\n\t\t(0xD735 <= code && code <= 0xD74F) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\r\n\t\t(0xD751 <= code && code <= 0xD76B) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\r\n\t\t(0xD76D <= code && code <= 0xD787) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\r\n\t\t(0xD789 <= code && code <= 0xD7A3) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\r\n\t\t){\r\n\t\t\treturn LVT;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x261D == code || // So WHITE UP POINTING INDEX\r\n\t\t0x26F9 == code || // So PERSON WITH BALL\r\n\t\t(0x270A <= code && code <= 0x270D) || // So [4] RAISED FIST..WRITING HAND\r\n\t\t0x1F385 == code || // So FATHER CHRISTMAS\r\n\t\t(0x1F3C2 <= code && code <= 0x1F3C4) || // So [3] SNOWBOARDER..SURFER\r\n\t\t0x1F3C7 == code || // So HORSE RACING\r\n\t\t(0x1F3CA <= code && code <= 0x1F3CC) || // So [3] SWIMMER..GOLFER\r\n\t\t(0x1F442 <= code && code <= 0x1F443) || // So [2] EAR..NOSE\r\n\t\t(0x1F446 <= code && code <= 0x1F450) || // So [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN\r\n\t\t0x1F46E == code || // So POLICE OFFICER\r\n\t\t(0x1F470 <= code && code <= 0x1F478) || // So [9] BRIDE WITH VEIL..PRINCESS\r\n\t\t0x1F47C == code || // So BABY ANGEL\r\n\t\t(0x1F481 <= code && code <= 0x1F483) || // So [3] INFORMATION DESK PERSON..DANCER\r\n\t\t(0x1F485 <= code && code <= 0x1F487) || // So [3] NAIL POLISH..HAIRCUT\r\n\t\t0x1F4AA == code || // So FLEXED BICEPS\r\n\t\t(0x1F574 <= code && code <= 0x1F575) || // So [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY\r\n\t\t0x1F57A == code || // So MAN DANCING\r\n\t\t0x1F590 == code || // So RAISED HAND WITH FINGERS SPLAYED\r\n\t\t(0x1F595 <= code && code <= 0x1F596) || // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS\r\n\t\t(0x1F645 <= code && code <= 0x1F647) || // So [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY\r\n\t\t(0x1F64B <= code && code <= 0x1F64F) || // So [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS\r\n\t\t0x1F6A3 == code || // So ROWBOAT\r\n\t\t(0x1F6B4 <= code && code <= 0x1F6B6) || // So [3] BICYCLIST..PEDESTRIAN\r\n\t\t0x1F6C0 == code || // So BATH\r\n\t\t0x1F6CC == code || // So SLEEPING ACCOMMODATION\r\n\t\t(0x1F918 <= code && code <= 0x1F91C) || // So [5] SIGN OF THE HORNS..RIGHT-FACING FIST\r\n\t\t(0x1F91E <= code && code <= 0x1F91F) || // So [2] HAND WITH INDEX AND MIDDLE FINGERS CROSSED..I LOVE YOU HAND SIGN\r\n\t\t0x1F926 == code || // So FACE PALM\r\n\t\t(0x1F930 <= code && code <= 0x1F939) || // So [10] PREGNANT WOMAN..JUGGLING\r\n\t\t(0x1F93D <= code && code <= 0x1F93E) || // So [2] WATER POLO..HANDBALL\r\n\t\t(0x1F9D1 <= code && code <= 0x1F9DD) // So [13] ADULT..ELF\r\n\t\t){\r\n\t\t\treturn E_Base;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F3FB <= code && code <= 0x1F3FF) // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\r\n\t\t){\r\n\t\t\treturn E_Modifier;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x200D == code // Cf ZERO WIDTH JOINER\r\n\t\t){\r\n\t\t\treturn ZWJ;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x2640 == code || // So FEMALE SIGN\r\n\t\t0x2642 == code || // So MALE SIGN\r\n\t\t(0x2695 <= code && code <= 0x2696) || // So [2] STAFF OF AESCULAPIUS..SCALES\r\n\t\t0x2708 == code || // So AIRPLANE\r\n\t\t0x2764 == code || // So HEAVY BLACK HEART\r\n\t\t0x1F308 == code || // So RAINBOW\r\n\t\t0x1F33E == code || // So EAR OF RICE\r\n\t\t0x1F373 == code || // So COOKING\r\n\t\t0x1F393 == code || // So GRADUATION CAP\r\n\t\t0x1F3A4 == code || // So MICROPHONE\r\n\t\t0x1F3A8 == code || // So ARTIST PALETTE\r\n\t\t0x1F3EB == code || // So SCHOOL\r\n\t\t0x1F3ED == code || // So FACTORY\r\n\t\t0x1F48B == code || // So KISS MARK\r\n\t\t(0x1F4BB <= code && code <= 0x1F4BC) || // So [2] PERSONAL COMPUTER..BRIEFCASE\r\n\t\t0x1F527 == code || // So WRENCH\r\n\t\t0x1F52C == code || // So MICROSCOPE\r\n\t\t0x1F5E8 == code || // So LEFT SPEECH BUBBLE\r\n\t\t0x1F680 == code || // So ROCKET\r\n\t\t0x1F692 == code // So FIRE ENGINE\r\n\t\t){\r\n\t\t\treturn Glue_After_Zwj;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F466 <= code && code <= 0x1F469) // So [4] BOY..WOMAN\r\n\t\t){\r\n\t\t\treturn E_Base_GAZ;\r\n\t\t}\r\n\r\n\r\n\t\t//all unlisted characters have a grapheme break property of \"Other\"\r\n\t\treturn Other;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\nexport default GraphemeSplitter;\r\n","import { isNullish, isString } from 'remeda';\nimport { BuildInNumberAdapter, DecimalJsAdapter, } from './number-adapter/index.js';\nimport { BuildInIntlSegmenterAdapter, BuildInStringAdapter, GraphemeSplitterAdapter, } from './string-adapter/index.js';\nexport class CounterAdapter {\n static setNumberAdapter(adapterOrType, config) {\n let adapter = BuildInNumberAdapter();\n if (isString(adapterOrType)) {\n if (adapterOrType === 'number')\n adapter = BuildInNumberAdapter();\n else if (['decimal.js', 'decimaljs'].includes(adapterOrType))\n adapter = DecimalJsAdapter(config);\n }\n else {\n adapter = adapterOrType;\n }\n CounterAdapter.NUMBER_ADAPTER = adapter;\n }\n static setStringAdapter(adapterOrType) {\n let adapter = BuildInStringAdapter();\n if (isString(adapterOrType)) {\n if (adapterOrType === 'string')\n adapter = BuildInStringAdapter();\n else if (adapterOrType === 'intl-segmenter')\n adapter = BuildInIntlSegmenterAdapter();\n else if (adapterOrType === 'grapheme-splitter')\n adapter = GraphemeSplitterAdapter();\n }\n else {\n adapter = adapterOrType;\n }\n CounterAdapter.STRING_ADAPTER = adapter;\n }\n}\n/**\n * 数字适配器, 有以下两种:\n * 1. BuildInNumberAdapter(默认): 使用内置 number 进行计算.\n * 2. DecimalJsAdapter: 使用 Decimal.js 进行计算.\n *\n * 详细信息请查看[字符长度限制](/guide/optional-dependencies#字符长度限制)章节.\n *\n * @default BuildInNumberAdapter\n */\nCounterAdapter.NUMBER_ADAPTER = BuildInNumberAdapter();\n/**\n * 字符串适配器, 有以下两种:\n * 1. BuildInStringAdapter(默认): 使用内置 string 进行字符串处理.\n * 2. BuildInIntlSegmenterAdapter: 使用 Intl.Segmenter 进行字符串处理. 能够支持 emoji, 字符集.\n * 3. GraphemeSplitterAdapter: 使用 grapheme-splitter 进行字符串处理. 能够支持 emoji, 字符集.\n *\n * 详细信息请查看[支持 emoji 分词](/guide/optional-dependencies#支持-emoji-分词)章节.\n *\n * @default BuildInStringAdapter\n */\nCounterAdapter.STRING_ADAPTER = BuildInStringAdapter();\n/**\n * 将 value 及其相关的属性, 在 attribute 和 property 上的互相转换.\n *\n * @see https://lit.dev/docs/components/properties/#attributes\n * @protected\n */\nCounterAdapter.VALUE_CONVERTER = {\n fromAttribute(value) {\n return value;\n },\n toAttribute(value) {\n return isNullish(value)\n ? value\n : CounterAdapter.NUMBER_ADAPTER.toString(value);\n },\n};\n//# sourceMappingURL=counter-adapter.js.map","/**\n * 使用内置的 `Intl.Segmenter` 将字符串转换为字符数组.\n *\n * 要使用 {@link BuildInIntlSegmenterAdapter} 需要浏览器支持 `Intl.Segmenter`, 查看 [caniuse](https://caniuse.com/?search=Segmenter).\n *\n * @param locales 本地化配置. 用于创建 {@link Intl.Segmenter} 实例.\n */\nconst BuildInIntlSegmenterAdapter = (locales) => {\n const segmenter = new Intl.Segmenter(locales, { granularity: \"grapheme\" });\n return {\n stringToChars(value) {\n const segments = Array.from(segmenter.segment(value));\n return segments.map((s) => s.segment);\n },\n };\n};\nexport { BuildInIntlSegmenterAdapter };\n//# sourceMappingURL=build-in-intl-segmenter.js.map","import GraphemeSplitter from 'grapheme-splitter';\n/**\n * 使用 `grapheme-splitter` 库的字符串适配器. 该适配器使用 `grapheme-splitter` 库将字符串转换为字符数组.\n *\n * 要使用 {@link GraphemeSplitterAdapter} 需要安装 `grapheme-splitter`.\n */\nconst GraphemeSplitterAdapter = () => {\n const splitter = new GraphemeSplitter();\n return {\n stringToChars(value) {\n return splitter.splitGraphemes(value);\n },\n };\n};\nexport { GraphemeSplitterAdapter };\n//# sourceMappingURL=grapheme-splitter.js.map","import { __decorate } from \"tslib\";\nimport { property, state } from 'lit/decorators.js';\nimport { isNonNullish, isNullish, isString } from 'remeda';\nimport { CounterAdapter } from '../counter-adapter.js';\nexport const CounterBaseMixin = (superClass) => {\n class CounterBaseMixinClass extends superClass {\n get value() {\n return this.numberAdapter.create(this.__value);\n }\n set value(value) {\n value = CounterAdapter.NUMBER_ADAPTER.create(isNullish(value) || (isString(value) && value.trim() === '')\n ? 0\n : value);\n const old = this.__value;\n this.__value = value;\n if (!this.numberAdapter.eq(this.__value, old)) {\n this.requestUpdate('value', old);\n }\n }\n /**\n * 用于记录上一次的值.\n *\n * 初始化时({@link connectedCallback}), oldValue 将被设置为 `initialValue` 或 `value` 的值.\n */\n get oldValue() {\n return this.numberAdapter.create(this.__oldValue);\n }\n set oldValue(value) {\n const old = this.__oldValue;\n this.__oldValue = value;\n this.requestUpdate('oldValue', old);\n }\n /**\n * 如果初始值被设置, {@link oldValue} 的初始值, 会使用该值而不是 `value`.\n *\n * 这对于初始化完成后启动动画效果非常有用.\n */\n get initialValue() {\n return isNullish(this.__initialValue)\n ? this.__initialValue\n : this.numberAdapter.create(this.__initialValue);\n }\n set initialValue(value) {\n const old = this.__initialValue;\n this.__initialValue = value;\n this.requestUpdate('initialValue', old);\n }\n /**\n * 自定义本地化配置, 否则从浏览器环境中获取.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale\n *\n * @default \"en-US\"\n */\n get locale() {\n return this.__locale;\n }\n set locale(value) {\n const old = this.__locale;\n this.__locale = value;\n this.requestUpdate('locale', old);\n this.localeInstance = isString(this.__locale)\n ? new Intl.Locale(this.__locale)\n : new Intl.Locale(...this.__locale);\n }\n constructor(...args) {\n super(...args);\n this.__value = CounterAdapter.NUMBER_ADAPTER.create(0);\n // value: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__oldValue = CounterAdapter.NUMBER_ADAPTER.create(0);\n // oldValue: V = CounterBaseMixinClass.NUMBER_ADAPTER.create(0);\n this.__initialValue = null;\n this.__locale = 'en-US';\n this.localeInstance = isString(this.locale)\n ? new Intl.Locale(this.locale)\n : new Intl.Locale(...this.locale);\n this.direction = 'up';\n this.oldDirection = this.direction;\n // @ts-ignore\n this.numberAdapter = CounterAdapter.NUMBER_ADAPTER;\n // @ts-ignore\n this.stringAdapter = CounterAdapter.STRING_ADAPTER;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('value') &&\n !changedProperties.has('oldValue')) {\n // oldValue 未被手动设置时, 使用默认策略更新 oldValue.\n this.oldValue = changedProperties.get('value') ?? this.value;\n }\n this.oldDirection = this.direction;\n if (!this.numberAdapter.eq(this.value, this.oldValue)) {\n this.direction = this.numberAdapter.gt(this.value, this.oldValue)\n ? 'down'\n : 'up';\n }\n }\n /**\n * oldValue 的默认初始值应当来自 initialValue 或 value.\n * 以保证 oldValue 始终有值.\n */\n connectedCallback() {\n super.connectedCallback();\n this.oldValue = isNonNullish(this.initialValue)\n ? this.initialValue\n : this.value;\n }\n }\n __decorate([\n property({\n attribute: 'value',\n reflect: true,\n converter: {\n toAttribute: CounterAdapter.VALUE_CONVERTER.toAttribute,\n },\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"value\", null);\n __decorate([\n property({\n attribute: 'old-value',\n reflect: true,\n converter: CounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"oldValue\", null);\n __decorate([\n property({\n attribute: 'initial-value',\n reflect: true,\n converter: CounterAdapter.VALUE_CONVERTER,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"initialValue\", null);\n __decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return value;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return value;\n }\n },\n reflect: true,\n noAccessor: true,\n })\n ], CounterBaseMixinClass.prototype, \"locale\", null);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"direction\", void 0);\n __decorate([\n state()\n ], CounterBaseMixinClass.prototype, \"oldDirection\", void 0);\n return CounterBaseMixinClass;\n};\n//# sourceMappingURL=counter-base.js.map","function l(n){return n!=null}export{l as a};\n","import { css } from 'lit';\nexport const timeredCounterStyles = css `\n :host {\n position: relative;\n white-space: nowrap;\n\n display: inline-block;\n }\n\n //.timered-counter {\n // position: relative;\n // display: inline-flex;\n // overflow: hidden;\n //\n // /**\n // inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n // @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n // @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n // */\n // vertical-align: bottom;\n //}\n\n .timered-counter.debug {\n overflow: visible;\n }\n\n //.timered-counter-datetime-duration .duration-unit {\n // font-size: 0.4em;\n // line-height: 1;\n //}\n`;\n//# sourceMappingURL=timered-counter-styles.js.map","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nimport { isDeepEqual } from 'remeda';\nimport { extractPartDigitOption, mergePartDigitOption, } from '../utils/extract-group-option.js';\nexport const CounterAnimationMixin = (superClass) => {\n class CounterAnimationMixinClass extends superClass {\n constructor() {\n super(...arguments);\n /**\n * 传递给 Web Animations API 的选项.\n */\n this.animationOptions = {};\n this.cachedAnimationOptions = [];\n /**\n * 传递给 Web Animations API 的关键帧配置.\n */\n this.keyframes = {};\n this.cachedKeyframes = [];\n }\n extractAnimationOptions() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.animationOptions ?? {}, getterOptions), extractPartDigitOption(this.animationOptionsDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedAnimationOptions, result)) {\n this.cachedAnimationOptions = result;\n }\n return this.cachedAnimationOptions;\n }\n extractKeyframes() {\n const getterOptions = {\n preprocessData: this.partPreprocessDataList,\n data: this.parts,\n direction: this.direction,\n value: [this.value, this.oldValue],\n };\n const result = mergePartDigitOption(extractPartDigitOption(this.keyframes ?? {}, getterOptions), extractPartDigitOption(this.keyframesDynamic ?? {}, getterOptions));\n if (!isDeepEqual(this.cachedKeyframes, result)) {\n this.cachedKeyframes = result;\n }\n return this.cachedKeyframes;\n }\n }\n __decorate([\n property({ type: Object, attribute: 'animation-options', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"animationOptions\", void 0);\n __decorate([\n property({ type: Object, attribute: 'keyframes', reflect: true })\n ], CounterAnimationMixinClass.prototype, \"keyframes\", void 0);\n return CounterAnimationMixinClass;\n};\n//# sourceMappingURL=counter-animation.js.map","import{noChange as t}from\"../lit-html.js\";import{directive as e,Directive as r,PartType as s}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const n=\"important\",i=\" !\"+n,o=e(class extends r{constructor(t){if(super(t),t.type!==s.ATTRIBUTE||\"style\"!==t.name||t.strings?.length>2)throw Error(\"The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.\")}render(t){return Object.keys(t).reduce(((e,r)=>{const s=t[r];return null==s?e:e+`${r=r.includes(\"-\")?r:r.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,\"-$&\").toLowerCase()}:${s};`}),\"\")}update(e,[r]){const{style:s}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(r)),this.render(r);for(const t of this.ft)null==r[t]&&(this.ft.delete(t),t.includes(\"-\")?s.removeProperty(t):s[t]=null);for(const t in r){const e=r[t];if(null!=e){this.ft.add(t);const r=\"string\"==typeof e&&e.endsWith(i);t.includes(\"-\")||r?s.setProperty(t,r?e.slice(0,-11):e,r?n:\"\"):s[t]=e}}return t}});export{o as styleMap};\n//# sourceMappingURL=style-map.js.map\n","import{noChange as t}from\"../lit-html.js\";import{directive as s,Directive as i,PartType as r}from\"../directive.js\";\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const e=s(class extends i{constructor(t){if(super(t),t.type!==r.ATTRIBUTE||\"class\"!==t.name||t.strings?.length>2)throw Error(\"`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.\")}render(t){return\" \"+Object.keys(t).filter((s=>t[s])).join(\" \")+\" \"}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(\" \").split(/\\s/).filter((t=>\"\"!==t))));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)))}return t}});export{e as classMap};\n//# sourceMappingURL=class-map.js.map\n","import { css } from 'lit';\nexport const rollerStyles = css `\n :host {\n display: inline-flex;\n overflow: hidden;\n\n /**\n inline-block 和 overflow-hidden 同时存在会使得基线为下边缘. 手动设置 align-bottom 以修正这个问题.\n @see https://stackoverflow.com/questions/22421782/css-overflow-hidden-increases-height-of-container\n @see https://www.w3.org/TR/CSS2/visudet.html#propdef-vertical-align\n */\n vertical-align: bottom;\n }\n\n .counter-parts {\n display: inline-flex;\n flex: 1 1 auto;\n }\n\n .roller-part {\n display: inline-flex;\n white-space: nowrap;\n }\n\n .roller__prefix,\n .roller__suffix {\n flex: none;\n }\n\n .roller-part .roller-part__wrapper {\n display: inline-block;\n }\n\n .roller-part .roller-part__suffix {\n display: inline-block;\n }\n`;\nexport const rollerDigitStyles = css `\n .roller-part-digit {\n position: relative;\n display: inline-block;\n }\n\n .placeholder {\n visibility: hidden;\n display: inline-block;\n }\n\n .roll-list {\n position: absolute;\n left: 0;\n display: inline-flex;\n width: 100%;\n flex-direction: column;\n align-items: center;\n }\n\n .roll-list.roll-list__up {\n top: 0;\n }\n\n .roll-list.roll-list__down {\n bottom: 0;\n }\n\n .roll-list__shadow {\n visibility: hidden;\n position: absolute;\n left: 0;\n top: 0;\n z-index: -10;\n display: inline-flex;\n flex-direction: column;\n white-space: nowrap;\n }\n\n .roll-item {\n display: inline-block;\n width: 100%;\n }\n\n .roll-item.roll-item__head {\n position: absolute;\n top: 100%;\n }\n\n .roll-item.roll-item__tail {\n position: absolute;\n bottom: 100%;\n }\n`;\n//# sourceMappingURL=styles.js.map","/**\n * @see https://github.com/motiondivision/motion/blob/main/packages/framer-motion/src/easing/cubic-bezier.ts\n */\nexport const noop = (any) => any;\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n let currentX;\n let currentT;\n let i = 0;\n do {\n currentT = lowerBound + (upperBound - lowerBound) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nexport function cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n//# sourceMappingURL=cubic-bezier.js.map","import { cubicBezier } from './cubic-bezier.js';\n/**\n * @see https://easings.net\n */\nexport const easeInSine = cubicBezier(0.12, 0, 0.39, 0);\nexport const easeOutSine = cubicBezier(0.61, 1, 0.88, 1);\nexport const easeInOutSine = cubicBezier(0.37, 0, 0.63, 1);\nexport const easeInQuad = cubicBezier(0.11, 0, 0.5, 0);\nexport const easeOutQuad = cubicBezier(0.5, 1, 0.89, 1);\nexport const easeInOutQuad = cubicBezier(0.45, 0, 0.55, 1);\nexport const easeInCubic = cubicBezier(0.32, 0, 0.67, 0);\nexport const easeOutCubic = cubicBezier(0.33, 1, 0.68, 1);\nexport const easeInOutCubic = cubicBezier(0.65, 0, 0.35, 1);\nexport const easeInQuart = cubicBezier(0.5, 0, 0.75, 0);\nexport const easeOutQuart = cubicBezier(0.25, 1, 0.5, 1);\nexport const easeInOutQuart = cubicBezier(0.76, 0, 0.24, 1);\nexport const easeInQuint = cubicBezier(0.64, 0, 0.78, 0);\nexport const easeOutQuint = cubicBezier(0.22, 1, 0.36, 1);\nexport const easeInOutQuint = cubicBezier(0.83, 0, 0.17, 1);\nexport const easeInExpo = cubicBezier(0.7, 0, 0.84, 0);\nexport const easeOutExpo = cubicBezier(0.16, 1, 0.3, 1);\nexport const easeInOutExpo = cubicBezier(0.87, 0, 0.13, 1);\nexport const easeInCirc = cubicBezier(0.55, 0, 1, 0.45);\nexport const easeOutCirc = cubicBezier(0, 0.55, 0.45, 1);\nexport const easeInOutCirc = cubicBezier(0.85, 0, 0.15, 1);\nexport const easeInBack = cubicBezier(0.36, 0, 0.66, -0.56);\nexport const easeOutBack = cubicBezier(0.34, 1.56, 0.64, 1);\nexport const easeInOutBack = cubicBezier(0.68, -0.6, 0.32, 1.6);\nexport function easeInElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return -(2 ** (10 * x - 10)) * Math.sin((x * 10 - 10.75) * c4);\n}\nexport function easeOutElastic(x) {\n const c4 = (2 * Math.PI) / 3;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n return 2 ** (-10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1;\n}\nexport function easeInOutElastic(x) {\n const c5 = (2 * Math.PI) / 4.5;\n if (x === 0)\n return 0;\n if (x === 1)\n return 1;\n if (x < 0.5) {\n return (-(2 ** (20 * x - 10)) * Math.sin((20 * x - 11.125) * c5)) / 2;\n }\n return (2 ** (-20 * x + 10) * Math.sin((20 * x - 11.125) * c5)) / 2 + 1;\n}\nexport function easeOutBounce(x) {\n const n1 = 7.5625;\n const d1 = 2.75;\n if (x < 1 / d1) {\n return n1 * x * x;\n }\n if (x < 2 / d1) {\n x -= 1.5 / d1;\n return n1 * x * x + 0.75;\n }\n if (x < 2.5 / d1) {\n x -= 2.25 / d1;\n return n1 * x * x + 0.9375;\n }\n x -= 2.625 / d1;\n return n1 * x * x + 0.984375;\n}\nexport function easeInBounce(x) {\n return 1 - easeOutBounce(1 - x);\n}\nexport function easeInOutBounce(x) {\n if (x < 0.5) {\n return (1 - easeOutBounce(1 - 2 * x)) / 2;\n }\n return (1 + easeOutBounce(2 * x - 1)) / 2;\n}\n//# sourceMappingURL=penner-easing-functions.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { intersection, isEmpty, isNullish, isString, merge, omit, range, } from 'remeda';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport { rollerDigitStyles } from './styles.js';\nimport * as EasingFunctions from '../../easing/penner-easing-functions.js';\nclass RollerDigitAnimationEvent extends Event {\n}\nlet TimeredCounterRollerDigit = class TimeredCounterRollerDigit extends LitElement {\n constructor() {\n super();\n this.digit = { data: [], place: 0 };\n this.preprocessData = {\n animate: true,\n cancelPrevAnimation: false,\n earlyReturn: '',\n index: 0,\n partIndex: 0,\n digitIndex: 0,\n };\n this.direction = 'up';\n this.textStyle = {};\n this.cellStyle = [];\n this.animationOptions = {};\n this.keyframes = {};\n this.digitWidth = 0;\n this.resizeObserver = new ResizeObserver(() => {\n this.digitWidth = (this.clonedRollDigitList\n ? this.clonedRollDigitList.getBoundingClientRect()\n : new DOMRect()).width;\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.clonedRollDigitList) {\n this.resizeObserver.observe(this.clonedRollDigitList);\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n updated(_changedProperties) {\n super.updated(_changedProperties);\n /**\n * 仅当影响滚动列表 dom 结构的属性发生变化时才会触发动画.\n */\n if (intersection(Array.from(_changedProperties.keys()), [\n 'digit',\n 'preprocessData',\n 'direction',\n 'animationOptions',\n 'keyframes',\n ]).length > 0) {\n if (this.shouldAnimate()) {\n this.startAnimation().then();\n }\n }\n }\n render() {\n const shadowCellStyle = this.cellStyle.map(style => omit(style, ['position']));\n return html `<span class=\"roller-part-digit\">\n <!-- 占位 -->\n <span\n class=\"placeholder\"\n style=${styleMap({ width: `${Math.round(this.digitWidth)}px` })}\n >0</span\n >\n <!-- 一个不可见的滚动列表的复制, 用于计算该列表的最大宽度. -->\n <span class=\"roll-list__shadow\">\n ${repeat(this.digit.data, (_, index) => index, (digit, index) => html `<span style=${styleMap(shadowCellStyle[index])}\n >${digit}</span\n >`)}\n </span>\n <span\n class=${classMap({\n /**\n * 向上(up)滚动时, 使滚动列表顶部对齐以便于应用 `translationY(-100%)` 实现向上滚动效果\n * 向下同理\n */\n 'roll-list__up': this.direction === 'up',\n 'roll-list__down': this.direction === 'down',\n 'roll-list': true,\n })}\n >\n ${this.digit.data.length > 1\n ? repeat(this.digit.data, (_, index) => index, (digit, index) => {\n if (this.direction === 'up' &&\n index === this.digit.data.length - 1) {\n return html `<span\n part=\"cell\"\n class=\"roll-item roll-item__head\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n }\n if (this.direction === 'down' && index === 0) {\n return html `\n <span\n part=\"cell\"\n class=\"roll-item roll-item__tail\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >\n `;\n }\n return html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[index])}\n ><span style=${styleMap(this.textStyle)}\n >${digit}</span\n ></span\n >`;\n })\n : html `<span\n part=\"cell\"\n class=\"roll-item\"\n style=${styleMap(this.cellStyle[0])}\n ><span style=${styleMap(this.textStyle)}\n >${this.digit.data[0]}</span\n ></span\n >`}</span\n ></span\n > `;\n }\n shouldAnimate() {\n const { cancelPrevAnimation, animate } = this.preprocessData;\n if (cancelPrevAnimation) {\n if (this.animation) {\n this.animation.cancel();\n }\n if (this.rollList && this.rollList.style && this.rollList.style.cssText) {\n this.rollList.style.cssText = '';\n }\n }\n if (!animate)\n return false;\n return true;\n }\n async startAnimation() {\n if (isNullish(this.rollList))\n return;\n this.__emitAnimationStart();\n const anmOptions = merge({ duration: 1000, iterations: 1, easing: 'ease-out', fill: 'forwards' }, this.animationOptions);\n const keyframes = isEmpty(this.keyframes)\n ? {\n up: { transform: ['translateY(0)', 'translateY(-100%)'] },\n down: { transform: ['translateY(0)', 'translateY(100%)'] },\n }[this.direction]\n : this.keyframes;\n /**\n * 尝试从 `PennerEasingFunctions` 中获取对应的 easing 函数\n */\n // {\n if (isString(anmOptions.easing) &&\n EasingFunctions[anmOptions.easing]) {\n const func = EasingFunctions[anmOptions.easing];\n anmOptions.easing = `linear(${range(0, 64)\n .map((_, i) => func(i / 63))\n .join(',')})`;\n }\n // }\n try {\n this.clearAnimation();\n this.animation = this.rollList.animate(keyframes, anmOptions);\n this.animation.addEventListener('finish', () => this.__emitAnimationEnd(), {\n once: true,\n });\n // /**\n // * 动画播放完成或被其他动画中断都会使得 `finished` resolve.\n // * 只有当动画顺利播放完成的情况下, 才能调用 `cancel` 取消动画. 在其他情况下调用, 会抛出异常[1].\n // *\n // * 因此, 提前检查 `playState` 的值. 当 `playState` 不是 `finished` 时, 说明动画被其他 `Animation` 实例中断.\n // * 因为已经有其他 `Animation` 实例的存在, 我们可以直接丢弃这个 `Animation` 实例, 而不用担心无动画可用.\n // *\n // * [1]: https://developer.mozilla.org/en-US/docs/Web/API/Animation/cancel#exceptions\n // */\n // await this.animation.finished;\n // if (\n // this.animation.playState === 'finished' &&\n // this.rollList.checkVisibility()\n // ) {\n // // this.animation.commitStyles();\n // // this.animation.cancel();\n // }\n }\n catch (e) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n clearAnimation() {\n this.animation?.removeEventListener('finish', this.__emitAnimationEnd);\n this.animation?.cancel();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerDigitAnimationEvent('roller-digit-animation-end'));\n }\n};\nTimeredCounterRollerDigit.styles = [rollerDigitStyles];\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"digit\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"preprocessData\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRollerDigit.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"textStyle\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRollerDigit.prototype, \"cellStyle\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRollerDigit.prototype, \"keyframes\", void 0);\n__decorate([\n query('.roll-list__shadow')\n], TimeredCounterRollerDigit.prototype, \"clonedRollDigitList\", void 0);\n__decorate([\n query('.roll-list')\n], TimeredCounterRollerDigit.prototype, \"rollList\", void 0);\n__decorate([\n state()\n], TimeredCounterRollerDigit.prototype, \"digitWidth\", void 0);\nTimeredCounterRollerDigit = __decorate([\n customElement('timered-counter-roller-digit')\n], TimeredCounterRollerDigit);\nexport { TimeredCounterRollerDigit };\n//# sourceMappingURL=roller-digit.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { customElement, property, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { isNumber, values } from 'remeda';\nimport './roller-digit.js';\nimport { rollerStyles } from './styles.js';\nclass RollerAnimationEvent extends Event {\n}\nlet TimeredCounterRoller = class TimeredCounterRoller extends LitElement {\n constructor() {\n super(...arguments);\n this.color = '';\n this.direction = 'up';\n this.parts = [];\n this.partPreprocessDataList = [];\n this.animationOptions = [];\n this.keyframes = [];\n this.cellStyles = [];\n this.digitStyles = [];\n this.partStyles = [];\n this.parentContainerRect = {};\n this.__partDigitsColorStyles = [];\n /**\n * 记录一次更新中, 启动动画并结束的 <timered-counter-roller-digit> 元素个数.\n *\n * 在每次更新前重置为 0.\n *\n * @see {@link __handleDigitAnimationEnd}\n * @private\n */\n this.digitAnimateEndCount = 0;\n /**\n * 记录一次更新中, 需要启动动画的 <timered-counter-roller-digit> 元素总数.\n *\n * 在每次更新前重新计算.\n * @private\n */\n this.digitAnimatedCount = 0;\n }\n render() {\n return html `<span\n class=\"roller__prefix\"\n data-part-id=\"-1\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-1]?.[0] ?? {}))}\n >\n <slot part=\"prefix\" name=\"prefix\"></slot>\n </span>\n <span class=\"counter-parts\">\n ${repeat(this.parts, (_, index) => index, (part, partIndex) => html `<span\n part=\"part\"\n class=\"roller-part\"\n style=${styleMap((this.partStyles?.[partIndex] ?? {}))}\n >${repeat(part.digits, (_, index) => `${part.digits.length - index}`, (digitInfo, digitIndex) => html `<timered-counter-roller-digit\n exportparts=\"digit, cell\"\n part=\"digit\"\n class=\"roller-part__wrapper\"\n style=${styleMap((this.digitStyles?.[partIndex]?.[digitIndex] ??\n {}))}\n data-part-id=\"${partIndex}\"\n data-digit-id=\"${digitIndex}\"\n .digit=${digitInfo}\n .preprocessData=${this.partPreprocessDataList[partIndex][digitIndex]}\n .direction=${this.direction}\n .textStyle=${this.__partDigitsColorStyles?.[partIndex]?.[digitIndex] ?? {}}\n .cellStyle=${this.cellStyles[partIndex][digitIndex]}\n .animationOptions=${this.animationOptions[partIndex][digitIndex]}\n .keyframes=${this.keyframes[partIndex][digitIndex]}\n @roller-digit-animation-end=${this\n .__handleDigitAnimationEnd}\n ></timered-counter-roller-digit>`)}${html `<span\n class=\"roller-part__suffix\"\n data-part-id=\"${partIndex}\"\n data-digit-id=\"-1\"\n style=${styleMap((this.__partDigitsColorStyles?.[partIndex]?.[-1] ??\n {}))}\n ><slot\n part=\"part-suffix\"\n name=${`part-suffix-${partIndex}`}\n ></slot\n ></span>`}</span\n > `)}</span\n ><span\n class=\"roller__suffix\"\n data-part-id=\"-2\"\n data-digit-id=\"0\"\n style=${styleMap((this.__partDigitsColorStyles?.[-2]?.[0] ?? {}))}\n ><slot part=\"suffix\" name=\"suffix\"></slot\n ></span>`;\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('direction') ||\n _changedProperties.has('parts')) {\n this.digitAnimateEndCount = 0;\n this.digitAnimatedCount = this.partPreprocessDataList\n .flat()\n .filter(({ animate }) => animate).length;\n if (this.digitAnimatedCount > 0) {\n this.__emitAnimationStart();\n }\n }\n this.__partDigitsColorStyles = this.__generatePartDigitsColorStyles();\n }\n __handleDigitAnimationEnd() {\n this.digitAnimateEndCount++;\n if (this.digitAnimateEndCount < this.digitAnimatedCount)\n return;\n this.__emitAnimationEnd();\n }\n __emitAnimationStart() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-start'));\n }\n __emitAnimationEnd() {\n if (!this.isConnected)\n return;\n this.dispatchEvent(new RollerAnimationEvent('roller-animation-end'));\n }\n __generatePartDigitsColorStyles() {\n const result = [];\n const containerRect = this.parentContainerRect;\n const { \n // parts,\n // oldParts,\n prefixContainer, suffixContainer, color, } = this;\n const partDigitElements = Array.from(this.shadowRoot?.querySelectorAll('[data-part-id]').values() ?? []);\n /**\n * 当某次更新**将**会导致 DOM 宽高发生变化时(如: 滚动数字的位数增加/减少会导致宽度变化),\n * 需要跳过这次更新然后等待 DOM 宽高变化完成才能更新(宽高变化后将通过 {@link containerRect} 触发).\n */\n if (!containerRect) {\n return result;\n }\n /**\n * 比较 {@link data} 前后不同判断是否导致 DOM 宽度会发生变化.\n */\n // if (parts.length !== oldParts.length) {\n // this.requestUpdate();\n // return result;\n // }\n // for (let i = 0; i < parts.length; i++) {\n // if (parts[i].digits.length !== oldParts[i].digits.length) {\n // this.requestUpdate();\n // return result;\n // }\n // }\n if (prefixContainer)\n partDigitElements[-1] = prefixContainer;\n if (suffixContainer)\n partDigitElements[-2] = suffixContainer;\n for (const el of values(partDigitElements)) {\n const partId = Number.parseInt(el.dataset.partId ?? '-1', 10);\n const digitId = Number.parseInt(el.dataset.digitId ?? '-1', 10);\n if (!isNumber(partId) || !isNumber(digitId)) {\n throw new Error('The data-part-id and data-digit-id attributes are required.');\n }\n if (!result[partId])\n result[partId] = [];\n if (CSS.supports('color', color)) {\n result[partId][digitId] = { color };\n }\n else if (CSS.supports('background-image', color)) {\n result[partId][digitId] = {\n backgroundImage: color,\n backgroundClip: 'text',\n backgroundSize: `${containerRect.width}px ${containerRect.height}px`,\n backgroundPositionX: `${-el.offsetLeft}px`,\n backgroundPositionY: `${-el.offsetTop}px`,\n backgroundRepeat: 'no-repeat',\n color: 'transparent',\n // @ts-ignore\n '-webkit-text-fill-color': 'transparent',\n };\n }\n else {\n result[partId][digitId] = {};\n // todo error event\n // eslint-disable-next-line no-console\n console.warn(new Error('The color property is not supported.'));\n }\n }\n return result;\n }\n};\nTimeredCounterRoller.styles = [rollerStyles];\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"color\", void 0);\n__decorate([\n property({ type: String })\n], TimeredCounterRoller.prototype, \"direction\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"parts\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partPreprocessDataList\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"animationOptions\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"keyframes\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"cellStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"digitStyles\", void 0);\n__decorate([\n property({ type: Array })\n], TimeredCounterRoller.prototype, \"partStyles\", void 0);\n__decorate([\n property({ type: Object })\n], TimeredCounterRoller.prototype, \"parentContainerRect\", void 0);\n__decorate([\n query('.roller__prefix')\n], TimeredCounterRoller.prototype, \"prefixContainer\", void 0);\n__decorate([\n query('.roller__suffix')\n], TimeredCounterRoller.prototype, \"suffixContainer\", void 0);\nTimeredCounterRoller = __decorate([\n customElement('timered-counter-roller')\n], TimeredCounterRoller);\nexport { TimeredCounterRoller };\n//# sourceMappingURL=roller.js.map","import{a as e}from\"./chunk-RAAYCPUM.js\";function r(...t){return e(Object.values,t)}export{r as a};\n","import { __decorate } from \"tslib\";\nimport { property } from 'lit/decorators.js';\nexport const CounterAiraMixin = (superClass) => {\n class CounterAiraMixinClass extends superClass {\n constructor() {\n super(...arguments);\n this.ariaLabel = '';\n this.ariaLive = 'polite';\n // updated(changedProperties: PropertyValues<this>) {\n // if (changedProperties.has('value')) {\n // this.ariaLabel = this.generateAriaLabel();\n // }\n // }\n }\n /**\n * 生成 aria-label 属性值. 在每次更新完成后调用.\n */\n generateAriaLabel() {\n let label = '';\n const { direction } = this;\n for (const part of this.parts) {\n for (const digit of part.digits) {\n label += `${digit.data[direction === 'up' ? digit.data.length - 1 : 0]}`;\n }\n }\n return label;\n }\n willUpdate(changedProperties) {\n super.willUpdate(changedProperties);\n this.ariaLabel = this.generateAriaLabel();\n }\n }\n __decorate([\n property({ attribute: 'aria-label', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLabel\", void 0);\n __decorate([\n property({ attribute: 'aira-live', reflect: true })\n ], CounterAiraMixinClass.prototype, \"ariaLive\", void 0);\n return CounterAiraMixinClass;\n};\n//# sourceMappingURL=counter-aira.js.map","import { __decorate } from \"tslib\";\nimport { html, LitElement } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { CounterStylesMixin } from './mixins/counter-styles.js';\nimport { CounterPartsMixin } from './mixins/counter-parts.js';\nimport { CounterBaseMixin } from './mixins/counter-base.js';\nimport { timeredCounterStyles } from './styles/timered-counter-styles.js';\nimport { CounterAnimationMixin } from './mixins/counter-animation.js';\nimport './transitions/roller/index.js';\nimport { CounterAiraMixin } from './mixins/counter-aira.js';\nclass TimeredCounterAnimationEvent extends Event {\n}\nlet TimeredCounter = class TimeredCounter extends CounterAiraMixin(CounterAnimationMixin(CounterStylesMixin(CounterPartsMixin(CounterBaseMixin(LitElement))))) {\n constructor() {\n super();\n this.resizeObserver = new ResizeObserver(() => {\n this.partsContainerRect = this.partsContainer\n ? this.partsContainer.getBoundingClientRect()\n : new DOMRect();\n });\n }\n firstUpdated(_changedProperties) {\n super.firstUpdated(_changedProperties);\n if (this.partsContainer) {\n this.resizeObserver.observe(this.partsContainer);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n class=\"timered-counter\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n dispatchTimeredCounterAnimationStart() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-start'));\n }\n dispatchTimeredCounterAnimationEnd() {\n this.dispatchEvent(new TimeredCounterAnimationEvent('timered-counter-animation-end'));\n }\n};\nTimeredCounter.styles = [timeredCounterStyles];\n__decorate([\n state()\n], TimeredCounter.prototype, \"partsContainerRect\", void 0);\n__decorate([\n query('timered-counter-roller')\n], TimeredCounter.prototype, \"partsContainer\", void 0);\nTimeredCounter = __decorate([\n customElement('timered-counter')\n], TimeredCounter);\nexport { TimeredCounter };\n//# sourceMappingURL=timered-counter.js.map","import { css } from 'lit';\nexport const timeredCounterNumberStyles = css ``;\n//# sourceMappingURL=timered-counter-number-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isBoolean, isNullish } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterNumberStyles } from './styles/timered-counter-number-styles.js';\nlet TimeredCounterNumber = class TimeredCounterNumber extends TimeredCounter {\n constructor() {\n super(...arguments);\n /**\n * 本地化数字格式化配置. 传入 `true` 时使用浏览器的默认配置.\n *\n * 详细配置参数请参考 [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)\n *\n * @default false\n */\n this.localeNumber = false;\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置中的小数点分隔符. 根据不同的地区可能是 `.` 或 `,`.\n * @see https://en.wikipedia.org/wiki/Decimal_separator\n */\n this.localDecimalSeparator = '';\n /**\n * 本地化数字格式化配置中的分组分隔符.\n * @see https://en.wikipedia.org/wiki/Decimal_separator#Digit_grouping\n */\n this.localeGroupingSeparator = '';\n }\n sampleToString(value) {\n return this.localeNumber\n ? // todo Intl.NumberFormat 最大支持 21 位数.\n this.localeNumberInstance.format(this.numberAdapter.toNumber(value))\n : this.numberAdapter.toString(value);\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n ${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<slot\n name=${`part-suffix-${partIndex}`}\n slot=${`part-suffix-${partIndex}`}\n ></slot>`)}\n </timered-counter-roller>\n `;\n }\n willUpdate(_changedProperties) {\n if (_changedProperties.has('localeNumber') ||\n _changedProperties.has('locale')) {\n this.localeNumberInstance = new Intl.NumberFormat(this.localeInstance, isBoolean(this.localeNumber) ? {} : this.localeNumber);\n /**\n * 本地化数字格式化配置变化时, 更新 `partsOptions` 中的 `decimalSeparator`.\n */\n {\n const numberParts = this.localeNumberInstance.formatToParts(123456.789);\n const decimalSeparator = numberParts.find(part => part.type === 'decimal')?.value || '.';\n const groupingSeparator = numberParts.find(part => part.type === 'group')?.value || '';\n if (this.localDecimalSeparator !== decimalSeparator ||\n this.localeGroupingSeparator !== groupingSeparator) {\n this.localDecimalSeparator = decimalSeparator;\n const oldPartsOptions = this.partsOptions;\n this.partsOptions = {\n ...oldPartsOptions,\n decimalSeparator: this.localDecimalSeparator,\n };\n _changedProperties.set('partsOptions', oldPartsOptions);\n }\n }\n }\n super.willUpdate(_changedProperties);\n }\n};\nTimeredCounterNumber.styles = [...TimeredCounter.styles, timeredCounterNumberStyles];\n__decorate([\n property({\n converter: value => {\n if (isNullish(value))\n return false;\n try {\n return JSON.parse(value);\n }\n catch (error) {\n return true;\n }\n },\n reflect: true,\n attribute: 'locale-number',\n })\n], TimeredCounterNumber.prototype, \"localeNumber\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localDecimalSeparator\", void 0);\n__decorate([\n state()\n], TimeredCounterNumber.prototype, \"localeGroupingSeparator\", void 0);\nTimeredCounterNumber = __decorate([\n customElement('timered-counter-number')\n], TimeredCounterNumber);\nexport { TimeredCounterNumber };\n//# sourceMappingURL=timered-counter-number.js.map","import { css } from 'lit';\nexport const timeredCounterStringStyles = css ``;\n//# sourceMappingURL=timered-counter-string-styles.js.map","/**\n * @license https://github.com/HarasimowiczKamil/any-base\n */\nimport { isDeepEqual } from 'remeda';\nfunction isValid(number, alphabet) {\n for (const char of number) {\n if (alphabet.indexOf(char) === -1) {\n return false;\n }\n }\n return true;\n}\nfunction convert(srcAlphabet, dstAlphabet, number) {\n let i;\n let divide;\n let newLen;\n let { length } = number;\n const numberMap = {};\n const fromBase = srcAlphabet.length;\n const toBase = dstAlphabet.length;\n const result = [];\n if (!isValid(number, srcAlphabet)) {\n throw new Error(`Number \"${number}\" contains of non-alphabetic digits (${srcAlphabet})`);\n }\n if (isDeepEqual(srcAlphabet, dstAlphabet)) {\n return number.join('');\n }\n for (i = 0; i < length; i++) {\n numberMap[i] = srcAlphabet.indexOf(number[i]);\n }\n do {\n divide = 0;\n newLen = 0;\n for (i = 0; i < length; i++) {\n divide = divide * fromBase + numberMap[i];\n if (divide >= toBase) {\n numberMap[newLen++] = Math.floor(divide / toBase);\n divide %= toBase;\n }\n else if (newLen > 0) {\n numberMap[newLen++] = 0;\n }\n }\n length = newLen;\n result.push(dstAlphabet[divide]);\n } while (newLen !== 0);\n return result.reverse().join('');\n}\nexport function anyBase(sa, srcAlphabet, dstAlphabet) {\n return (number) => convert(sa.stringToChars(srcAlphabet), sa.stringToChars(dstAlphabet), sa.stringToChars(number));\n}\nexport const BIN = '01';\nexport const OCT = '01234567';\nexport const DEC = '0123456789';\nexport const HEX = '0123456789abcdef';\n//# sourceMappingURL=any-base.js.map","import { __decorate } from \"tslib\";\nimport { customElement } from 'lit/decorators.js';\nimport { isEmpty, isString } from 'remeda';\nimport { TimeredCounter } from './timered-counter.js';\nimport { timeredCounterStringStyles } from './styles/timered-counter-string-styles.js';\nimport { anyBase } from './utils/any-base.js';\n/**\n * 替换一些特定的字符.\n * 1. \" \": 空格字符在 HTML 中会被忽略导致无法计算字符宽度, 使用 \\xa0 替换.\n */\nconst REPLACED_CHARS = {\n ' ': '\\xa0', // &nbsp;\n};\nlet TimeredCounterString = class TimeredCounterString extends TimeredCounter {\n constructor() {\n super(...arguments);\n // /**\n // * 自定义字符集, 传入的 `value` 的字符串表示形式的每个字符都**必须**被包含在该字符集中.\n // *\n // * @default `value` 的去重字符集.\n // */\n // @property({\n // reflect: true,\n // })\n this.__alphabet = '';\n this.__initialValueString = '';\n this.__valueString = '';\n this.__oldValueString = '';\n this.__partsOptions = null;\n this.__decimalToAnyBase = anyBase(this.stringAdapter, '0123456789', this.__alphabet);\n this.__anyBaseToDecimal = anyBase(this.stringAdapter, this.__alphabet, '0123456789');\n }\n get initialValue() {\n return super.initialValue;\n }\n set initialValue(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n this.__initialValueString = value ?? '';\n if (isEmpty(this.__initialValueString)) {\n super.initialValue = this.numberAdapter.create(0);\n return;\n }\n /**\n * `initialValue` 在初始化时会被赋值给 `oldValue`, 因此, 同步更新逻辑与 `value` 的 setter 一致.\n */\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n super.initialValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__initialValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持任意字符串.\n */\n set value(value) {\n if (!isString(value)) {\n try {\n value = value.toString();\n }\n catch (error) {\n throw new Error(`value ${value} is not a string.`);\n }\n }\n else if (this.__valueString === value) {\n return;\n }\n this.__oldValueString = this.__valueString;\n this.__valueString = value ?? '';\n if (isEmpty(this.__valueString)) {\n super.value = this.numberAdapter.create(0);\n return;\n }\n /**\n * 传入的 value 通过 `__anyBaseToDecimal` 转换为十进制数值, `__anyBaseToDecimal` 则基于 `__alphabet` 计算.\n * 因此, 当 `__alphabet` 更新时, 需要重新计算 `value` 和 `oldValue` 的值.\n * 以确保 `value` 和 `oldValue` 能够通过 `__decimalToAnyBase` 转换为原始字符串.\n */\n this.__updateAlphabet(this.__valueString, this.__oldValueString);\n super.oldValue = this.numberAdapter.create(this.__anyBaseToDecimal(this.__oldValueString));\n super.value = this.numberAdapter.create(this.__anyBaseToDecimal(this.__valueString));\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n type: 'string',\n fillChar: REPLACED_CHARS[' '],\n ...this.__partsOptions,\n digitToChar: {\n ' ': REPLACED_CHARS[' '],\n ...this.__partsOptions.digitToChar,\n },\n };\n }\n /**\n * 根据 `value`, `initialValue`, `oldValue` 更新字符集.\n * @private\n */\n __updateAlphabet(value, oldValue) {\n const allChars = isEmpty(value) && isEmpty(oldValue)\n ? ''\n : `\\x00${oldValue ?? ''}${value ?? ''}`;\n const charSet = new Set(this.stringAdapter.stringToChars(allChars));\n // if (charSet.size < 10) {\n // for (let i = 0; i < 10; i++) {\n // charSet.add(i.toString());\n // if (charSet.size >= 10) break;\n // }\n // }\n this.__alphabet = Array.from(charSet).sort().join('');\n const sa = this.stringAdapter;\n const alphabet = this.__alphabet;\n this.__decimalToAnyBase = anyBase(sa, '0123456789', alphabet);\n this.__anyBaseToDecimal = anyBase(sa, alphabet, '0123456789');\n }\n sampleToString(value) {\n return this.__decimalToAnyBase(this.numberAdapter.toString(value));\n }\n connectedCallback() {\n this.__updateAlphabet(this.__valueString, this.__initialValueString);\n this.initialValue = this.__initialValueString;\n this.value = this.__valueString;\n /**\n * TimeredCounterString 有自定义的 `fillChar` 和 `digitToChar`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n super.connectedCallback();\n }\n};\nTimeredCounterString.styles = [...TimeredCounter.styles, timeredCounterStringStyles];\nTimeredCounterString = __decorate([\n customElement('timered-counter-string')\n], TimeredCounterString);\nexport { TimeredCounterString };\n//# sourceMappingURL=timered-counter-string.js.map","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\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 the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const 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 * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { toDate } from \"../toDate.js\";\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 */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.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](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 *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\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 *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\n\n/**\n * The {@link differenceInDays} function options.\n */\n\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full days according to the local timezone\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n *\n * @example\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n * //=> 92\n */\nexport function differenceInDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const sign = compareLocalAsc(laterDate_, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarDays(laterDate_, earlierDate_),\n );\n\n laterDate_.setDate(laterDate_.getDate() - sign * difference);\n\n // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n const isLastDayNotFull = Number(\n compareLocalAsc(laterDate_, earlierDate_) === -sign,\n );\n\n const result = sign * (difference - isLastDayNotFull);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\nfunction compareLocalAsc(laterDate, earlierDate) {\n const diff =\n laterDate.getFullYear() - earlierDate.getFullYear() ||\n laterDate.getMonth() - earlierDate.getMonth() ||\n laterDate.getDate() - earlierDate.getDate() ||\n laterDate.getHours() - earlierDate.getHours() ||\n laterDate.getMinutes() - earlierDate.getMinutes() ||\n laterDate.getSeconds() - earlierDate.getSeconds() ||\n laterDate.getMilliseconds() - earlierDate.getMilliseconds();\n\n if (diff < 0) return -1;\n if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInDays;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\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 laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\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 * const 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 * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","export function getRoundingMethod(method) {\n return (number) => {\n const round = method ? Math[method] : Math.trunc;\n const result = round(number);\n // Prevent negative zero\n return result === 0 ? 0 : result;\n };\n}\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link differenceInHours} function options.\n */\n\n/**\n * @name differenceInHours\n * @category Hour Helpers\n * @summary Get the number of hours between the given dates.\n *\n * @description\n * Get the number of hours between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of hours\n *\n * @example\n * // How many hours are between 2 July 2014 06:50:00 and 2 July 2014 19:00:00?\n * const result = differenceInHours(\n * new Date(2014, 6, 2, 19, 0),\n * new Date(2014, 6, 2, 6, 50)\n * )\n * //=> 12\n */\nexport function differenceInHours(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n const diff = (+laterDate_ - +earlierDate_) / millisecondsInHour;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n *\n * @returns The number of milliseconds\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport function differenceInMilliseconds(laterDate, earlierDate) {\n return +toDate(laterDate) - +toDate(earlierDate);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMilliseconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { millisecondsInMinute } from \"./constants.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInMinutes} function options.\n */\n\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param dateLeft - The later date\n * @param dateRight - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of minutes\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\nexport function differenceInMinutes(dateLeft, dateRight, options) {\n const diff =\n differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInMinutes;\n","import { endOfDay } from \"./endOfDay.js\";\nimport { endOfMonth } from \"./endOfMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param date - The date to check\n * @param options - An object with options\n *\n * @returns The date is the last day of a month\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport function isLastDayOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n return +endOfDay(_date, options) === +endOfMonth(_date, options);\n}\n\n// Fallback for modularized imports:\nexport default isLastDayOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfDay} function options.\n */\n\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a day\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport function endOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfDay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfMonth} function options.\n */\n\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a month\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n const month = _date.getMonth();\n _date.setFullYear(_date.getFullYear(), month + 1, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfMonth;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarMonths } from \"./differenceInCalendarMonths.js\";\nimport { isLastDayOfMonth } from \"./isLastDayOfMonth.js\";\n\n/**\n * The {@link differenceInMonths} function options.\n */\n\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full months\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport function differenceInMonths(laterDate, earlierDate, options) {\n const [laterDate_, workingLaterDate, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n laterDate,\n earlierDate,\n );\n\n const sign = compareAsc(workingLaterDate, earlierDate_);\n const difference = Math.abs(\n differenceInCalendarMonths(workingLaterDate, earlierDate_),\n );\n\n if (difference < 1) return 0;\n\n if (workingLaterDate.getMonth() === 1 && workingLaterDate.getDate() > 27)\n workingLaterDate.setDate(30);\n\n workingLaterDate.setMonth(workingLaterDate.getMonth() - sign * difference);\n\n let isLastMonthNotFull = compareAsc(workingLaterDate, earlierDate_) === -sign;\n\n if (\n isLastDayOfMonth(laterDate_) &&\n difference === 1 &&\n compareAsc(laterDate_, earlierDate_) === 1\n ) {\n isLastMonthNotFull = false;\n }\n\n const result = sign * (difference - +isLastMonthNotFull);\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInMonths;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarMonths} function options.\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 laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of calendar months\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport function differenceInCalendarMonths(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const yearsDiff = laterDate_.getFullYear() - earlierDate_.getFullYear();\n const monthsDiff = laterDate_.getMonth() - earlierDate_.getMonth();\n\n return yearsDiff * 12 + monthsDiff;\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarMonths;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMonths } from \"./differenceInMonths.js\";\n\n/**\n * The {@link differenceInQuarters} function options.\n */\n\n/**\n * @name differenceInQuarters\n * @category Quarter Helpers\n * @summary Get the number of quarters between the given dates.\n *\n * @description\n * Get the number of quarters between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of full quarters\n *\n * @example\n * // How many full quarters are between 31 December 2013 and 2 July 2014?\n * const result = differenceInQuarters(new Date(2014, 6, 2), new Date(2013, 11, 31))\n * //=> 2\n */\nexport function differenceInQuarters(laterDate, earlierDate, options) {\n const diff = differenceInMonths(laterDate, earlierDate, options) / 3;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInQuarters;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInMilliseconds } from \"./differenceInMilliseconds.js\";\n\n/**\n * The {@link differenceInSeconds} function options.\n */\n\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options.\n *\n * @returns The number of seconds\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport function differenceInSeconds(laterDate, earlierDate, options) {\n const diff = differenceInMilliseconds(laterDate, earlierDate) / 1000;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInSeconds;\n","import { getRoundingMethod } from \"./_lib/getRoundingMethod.js\";\nimport { differenceInDays } from \"./differenceInDays.js\";\n\n/**\n * The {@link differenceInWeeks} function options.\n */\n\n/**\n * @name differenceInWeeks\n * @category Week Helpers\n * @summary Get the number of full weeks between the given dates.\n *\n * @description\n * Get the number of full weeks between two dates. Fractional weeks are\n * truncated towards zero by default.\n *\n * One \"full week\" is the distance between a local time in one day to the same\n * local time 7 days earlier or later. A full week can sometimes be less than\n * or more than 7*24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 7*24-hour periods, use this instead:\n * `Math.trunc(differenceInHours(dateLeft, dateRight)/(7*24))|0`.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full weeks\n *\n * @example\n * // How many full weeks are between 5 July 2014 and 20 July 2014?\n * const result = differenceInWeeks(new Date(2014, 6, 20), new Date(2014, 6, 5))\n * //=> 2\n *\n * @example\n * // How many full weeks are between\n * // 1 March 2020 0:00 and 6 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 8 weeks (54 days),\n * // even if DST starts and the period has\n * // only 54*24-1 hours.\n * const result = differenceInWeeks(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 6)\n * )\n * //=> 8\n */\nexport function differenceInWeeks(laterDate, earlierDate, options) {\n const diff = differenceInDays(laterDate, earlierDate, options) / 7;\n return getRoundingMethod(options?.roundingMethod)(diff);\n}\n\n// Fallback for modularized imports:\nexport default differenceInWeeks;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { toDate } from \"./toDate.js\";\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 - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { addHours } from \"./addHours.js\";\n\n/**\n * The {@link subHours} function options.\n */\n\n/**\n * @name subHours\n * @category Hour Helpers\n * @summary Subtract the specified number of hours from the given date.\n *\n * @description\n * Subtract the specified number of hours from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the hours subtracted\n *\n * @example\n * // Subtract 2 hours from 11 July 2014 01:00:00:\n * const result = subHours(new Date(2014, 6, 11, 1, 0), 2)\n * //=> Thu Jul 10 2014 23:00:00\n */\nexport function subHours(date, amount, options) {\n return addHours(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link subMilliseconds} function options.\n */\n\n/**\n * Subtract the specified number of milliseconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the milliseconds subtracted\n */\nexport function subMilliseconds(date, amount, options) {\n return addMilliseconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMilliseconds;\n","import { addMinutes } from \"./addMinutes.js\";\n\n/**\n * The {@link subMinutes} function options.\n */\n\n/**\n * @name subMinutes\n * @category Minute Helpers\n * @summary Subtract the specified number of minutes from the given date.\n *\n * @description\n * Subtract the specified number of minutes from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the minutes subtracted\n *\n * @example\n * // Subtract 30 minutes from 10 July 2014 12:00:00:\n * const result = subMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 11:30:00\n */\nexport function subMinutes(date, amount, options) {\n return addMinutes(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMinutes;\n","import { millisecondsInMinute } from \"./constants.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMinutes} function options.\n */\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of minutes to be added.\n * @param options - An object with options\n *\n * @returns The new date with the minutes added\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\nexport function addMinutes(date, amount, options) {\n const _date = toDate(date, options?.in);\n _date.setTime(_date.getTime() + amount * millisecondsInMinute);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addMinutes;\n","import { addQuarters } from \"./addQuarters.js\";\n\n/**\n * The {@link subQuarters} function options.\n */\n\n/**\n * @name subQuarters\n * @category Quarter Helpers\n * @summary Subtract the specified number of year quarters from the given date.\n *\n * @description\n * Subtract the specified number of year quarters from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the quarters subtracted\n *\n * @example\n * // Subtract 3 quarters from 1 September 2014:\n * const result = subQuarters(new Date(2014, 8, 1), 3)\n * //=> Sun Dec 01 2013 00:00:00\n */\nexport function subQuarters(date, amount, options) {\n return addQuarters(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addSeconds } from \"./addSeconds.js\";\n\n/**\n * The {@link subSeconds} function options.\n */\n\n/**\n * Subtract the specified number of seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be subtracted.\n * @param options - The options\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract 30 seconds from 10 July 2014 12:45:00:\n * const result = subSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:44:30\n */\nexport function subSeconds(date, amount, options) {\n return addSeconds(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subSeconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\n\n/**\n * The {@link addSeconds} function options.\n */\n\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\nexport function addSeconds(date, amount, options) {\n return addMilliseconds(date, amount * 1000, options);\n}\n\n// Fallback for modularized imports:\nexport default addSeconds;\n","import { addWeeks } from \"./addWeeks.js\";\n\n/**\n * The {@link subWeeks} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the weeks subtracted\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\nexport function subWeeks(date, amount, options) {\n return addWeeks(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subWeeks;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link addWeeks} function options.\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 weeks to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of weeks to be added.\n * @param options - An object with options\n *\n * @returns The new date with the weeks added\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\nexport function addWeeks(date, amount, options) {\n return addDays(date, amount * 7, options);\n}\n\n// Fallback for modularized imports:\nexport default addWeeks;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","export var DurationPartType;\n(function (DurationPartType) {\n DurationPartType[\"Millisecond\"] = \"millisecond\";\n DurationPartType[\"Second\"] = \"second\";\n DurationPartType[\"Minute\"] = \"minute\";\n DurationPartType[\"Hour\"] = \"hour\";\n DurationPartType[\"Day\"] = \"day\";\n DurationPartType[\"Week\"] = \"weekOfYear\";\n DurationPartType[\"Month\"] = \"month\";\n DurationPartType[\"Quarter\"] = \"quarter\";\n DurationPartType[\"Year\"] = \"year\";\n})(DurationPartType || (DurationPartType = {}));\nexport const DurationPartMillisecond = {\n [DurationPartType.Millisecond]: 1,\n [DurationPartType.Second]: 1000,\n [DurationPartType.Minute]: 60000,\n [DurationPartType.Hour]: 3600000,\n [DurationPartType.Day]: 86400000,\n [DurationPartType.Week]: 604800000,\n [DurationPartType.Month]: 2629800000,\n [DurationPartType.Quarter]: 7889400000,\n [DurationPartType.Year]: 31557600000,\n};\nexport const DurationPartMillisecondToType = {\n 1: DurationPartType.Millisecond,\n 1000: DurationPartType.Second,\n 60000: DurationPartType.Minute,\n 3600000: DurationPartType.Hour,\n 86400000: DurationPartType.Day,\n 604800000: DurationPartType.Week,\n 2629800000: DurationPartType.Month,\n 7889400000: DurationPartType.Quarter,\n 31557600000: DurationPartType.Year,\n};\n//# sourceMappingURL=duration.js.map","export const DateTimeFields = [\n \"era\",\n \"year\",\n \"quarter\",\n \"month\",\n \"weekOfYear\",\n \"weekday\",\n \"day\",\n \"dayPeriod\",\n \"hour\",\n \"minute\",\n \"second\",\n \"timeZoneName\",\n];\nexport function getLocalizedDateTimeFields(locale) {\n const displayNames = new Intl.DisplayNames(locale, {\n type: \"dateTimeField\",\n });\n return DateTimeFields.reduce((acc, field) => {\n acc[field] = displayNames.of(field) ?? \"\";\n return acc;\n }, {});\n}\n//# sourceMappingURL=localized-date-time-fields.js.map","import { differenceInMilliseconds, differenceInDays, differenceInHours, differenceInMinutes, differenceInMonths, differenceInQuarters, differenceInSeconds, differenceInWeeks, differenceInYears, subDays, subHours, subMilliseconds, subMinutes, subMonths, subQuarters, subSeconds, subWeeks, subYears, } from 'date-fns';\nimport { DurationPartType } from '../types/duration.js';\n/**\n * 计算两个日期之间的时间间隔. 返回一个数组, 包含 {@link parts} 每个部分的值.\n *\n * @example duration(new Date(\"2022-01-01\"), new Date(\"2022-01-02\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 0, 0]\n * @example duration(new Date(\"2022-01-01 12:00:00\"), new Date(\"2022-01-02 12:30:00\"), [DurationPartType.Day, DurationPartType.Hour, DurationPartType.Minute, DurationPartType.Second]) // [1, 0, 30, 0]\n *\n * @param start\n * @param end\n * @param parts\n */\nexport function durationObject(start, end, parts) {\n let remain = end;\n const result = {};\n for (const part of parts) {\n let value = 0;\n switch (part) {\n case DurationPartType.Year:\n value = differenceInYears(remain, start);\n remain = subYears(remain, value);\n break;\n case DurationPartType.Quarter:\n value = differenceInQuarters(remain, start);\n remain = subQuarters(remain, value);\n break;\n case DurationPartType.Month:\n value = differenceInMonths(remain, start);\n remain = subMonths(remain, value);\n break;\n case DurationPartType.Week:\n value = differenceInWeeks(remain, start);\n remain = subWeeks(remain, value);\n break;\n case DurationPartType.Day:\n value = differenceInDays(remain, start);\n remain = subDays(remain, value);\n break;\n case DurationPartType.Hour:\n value = differenceInHours(remain, start);\n remain = subHours(remain, value);\n break;\n case DurationPartType.Minute:\n value = differenceInMinutes(remain, start);\n remain = subMinutes(remain, value);\n break;\n case DurationPartType.Second:\n value = differenceInSeconds(remain, start);\n remain = subSeconds(remain, value);\n break;\n case DurationPartType.Millisecond:\n value = differenceInMilliseconds(remain, start);\n remain = subMilliseconds(remain, value);\n break;\n default:\n throw new Error(`Unknown duration part: ${part}`);\n }\n result[part] = value;\n }\n return result;\n}\nexport function duration(start, end, parts) {\n const obj = durationObject(start, end, parts);\n return parts.map(part => obj[part]);\n}\n//# sourceMappingURL=duration.js.map","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\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 * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { isNumber } from 'remeda';\nimport { DurationPartType } from '../types/duration.js';\nconst ISO8601DurationMarker = {\n [DurationPartType.Year]: 'Y',\n [DurationPartType.Month]: 'M',\n [DurationPartType.Week]: 'W',\n [DurationPartType.Day]: 'D',\n [DurationPartType.Hour]: 'H',\n [DurationPartType.Minute]: 'M',\n [DurationPartType.Second]: 'S',\n};\nconst DateParts = [\n DurationPartType.Year,\n DurationPartType.Month,\n DurationPartType.Week,\n DurationPartType.Day,\n];\nconst TimeParts = [\n DurationPartType.Hour,\n DurationPartType.Minute,\n DurationPartType.Second,\n];\nexport function iso8601Duration(duration) {\n const datePart = DateParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n const timePart = TimeParts.map(part => isNumber(duration[part])\n ? `${duration[part]}${ISO8601DurationMarker[part]}`\n : '');\n return `P${datePart.join('')}T${timePart.join('')}`;\n}\n//# sourceMappingURL=iso8601-duration.js.map","import { css } from 'lit';\nexport const timeredCounterDatetimeStyles = css `\n ::part(part-suffix) {\n font-size: 0.4em;\n line-height: 1;\n }\n`;\n//# sourceMappingURL=timered-counter-datetime-styles.js.map","import { __decorate } from \"tslib\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { isArray, isDate, isNullish, isString, map } from 'remeda';\nimport { isValid, toDate, isBefore } from 'date-fns';\nimport { TimeredCounter } from './timered-counter.js';\nimport { DurationPartMillisecond, DurationPartType } from './types/duration.js';\nimport { getLocalizedDateTimeFields } from './utils/localized-date-time-fields.js';\nimport { duration, durationObject } from './utils/duration.js';\nimport { iso8601Duration } from './utils/iso8601-duration.js';\nimport { timeredCounterDatetimeStyles } from './styles/timered-counter-datetime-styles.js';\nimport { parseJsonString } from './utils/parse-json-string.js';\n/**\n * 根据最小精度对 from 进行优化. 避免频繁更新.\n *\n * 1. from 先会被减小到 minPrecisionMs 的整数倍.\n * 2. 如果 from 和 to 的差值不是 minPrecisionMs 的整数倍, 则再加上/减去一个 minPrecisionMs 的值. 加上或减去取决于 from 和 to 的谁更大.\n * 这相当于将 from 中小于 minPrecisionMs 的值舍入到 minPrecisionMs 的整数倍.\n * 3. 加上 to 余 minPrecisionMs 的值, 保证 from 与 to 的差值是 minPrecisionMs 的整数倍.\n */\nfunction optimizeFrom(from, to, minPrecision) {\n const minPrecisionMs = DurationPartMillisecond[minPrecision];\n const fromTS = from.getTime();\n const toTS = to.getTime();\n const base = fromTS - (fromTS % minPrecisionMs);\n const offset = Math.abs(toTS - fromTS) % minPrecisionMs;\n return (base +\n (offset > 0 ? (fromTS < toTS ? -1 : 1) * minPrecisionMs : 0) +\n // 加上 deadlineDate 的余数, 消除精度误差.\n (toTS % minPrecisionMs));\n}\nfunction toDurationInMilliseconds(value, minPrecision) {\n if (isString(value))\n value = parseJsonString(value);\n if (!isArray(value))\n value = [value, value];\n const result = [\n isDate(value[0]) ? value[0] : toDate(value[0]),\n isDate(value[1]) ? value[1] : toDate(value[1]),\n ];\n if (!isValid(result[0]) || !isValid(result[1])) {\n throw new Error(`value ${value[0]} or ${value[1]} is not a valid date.`);\n }\n const durationInMilliseconds = Math.abs(result[1].getTime() - optimizeFrom(result[0], result[1], minPrecision));\n return {\n durationInMilliseconds,\n from: result[0],\n to: result[1],\n };\n}\nlet TimeredCounterDatetimeDuration = class TimeredCounterDatetimeDuration extends TimeredCounter {\n constructor() {\n super(...arguments);\n this.__precision = [DurationPartType.Second, DurationPartType.Day];\n this.__initialValuePlain = null;\n this.__partsOptions = null;\n this.__from = new Date();\n this.__to = new Date();\n this.__minPrecision = DurationPartType.Second;\n this.__maxPrecision = DurationPartType.Day;\n this.__availableDurationParts = [];\n this.__dateTimeFieldLabels = {};\n }\n /**\n * 计数器显示的精度.\n * 1. 当为单个值时, 表示最小精度.\n * 2. 当为数组时, 第一个值表示最小精度, 第二个值表示最大精度.\n *\n * @default [DurationPartType.Second, DurationPartType.Day]\n *\n * @example DurationPartType.Second 显示从年份到秒数的所有精度.\n * @example [DurationPartType.Second, DurationPartType.Day] 显示从天数到秒数的所有精度.\n * @example [DurationPartType.Millisecond, DurationPartType.Year] 显示从年份到毫秒的所有精度.\n */\n get precision() {\n return this.__precision;\n }\n set precision(value) {\n if (isString(value))\n value = parseJsonString(value);\n this.__precision = value;\n /**\n * `precision` 相关属性的更新需要立即更新, 以便于在 `value`, `initialValue` 等属性的 setter 中使用.\n */\n this.__minPrecision = isArray(this.__precision)\n ? this.__precision[0]\n : this.__precision;\n this.__maxPrecision = isArray(this.__precision)\n ? this.__precision[1]\n : this.__precision;\n this.__availableDurationParts = Object.values(DurationPartType)\n .reverse()\n .map(type => {\n const minPrecisionBreakpoint = DurationPartMillisecond[this.__minPrecision];\n const maxPrecisionBreakpoint = DurationPartMillisecond[this.__maxPrecision];\n const partMilliseconds = DurationPartMillisecond[type];\n return {\n type,\n available: partMilliseconds >= minPrecisionBreakpoint &&\n partMilliseconds <= maxPrecisionBreakpoint,\n };\n })\n .filter(part => part.available);\n }\n get value() {\n return super.value;\n }\n /**\n * 通过 property 设置 value 时, 支持 Date 类型.\n */\n set value(value) {\n const { from, to, durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n this.__from = from;\n this.__to = to;\n super.value = durationInMilliseconds;\n }\n get initialValue() {\n return super.initialValue;\n }\n /**\n * 同 value\n */\n set initialValue(value) {\n this.__initialValuePlain = value;\n const { durationInMilliseconds } = toDurationInMilliseconds(value, this.__minPrecision);\n super.initialValue = durationInMilliseconds;\n }\n get partsOptions() {\n return super.partsOptions;\n }\n set partsOptions(value) {\n this.__partsOptions = value;\n super.partsOptions = {\n minPlaces: [2, undefined],\n ...this.__partsOptions,\n };\n }\n sampleSplit(samples) {\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n const tempParts = availableDurationPartTypes.map(() => []);\n for (const n of samples) {\n const num = this.numberAdapter.toNumber(n);\n /**\n * 计算并保存每个在 {@link precision} 范围内的时间部分的值\n */\n const availablePartValues = duration(new Date(Math.min(num, 0)), new Date(Math.max(num, 0)), availableDurationPartTypes);\n availablePartValues.forEach((value, i) => tempParts[i].push(value));\n }\n return tempParts;\n }\n generateAriaLabel() {\n return iso8601Duration(durationObject(isBefore(this.__from, this.__to) ? this.__from : this.__to, isBefore(this.__from, this.__to) ? this.__to : this.__from, map(this.__availableDurationParts, part => part.type)));\n }\n connectedCallback() {\n this.role = 'timer';\n /**\n * TimeredCounterDatetimeDuration 将 `minPlaces` 默认设置为 `[2]`. 实例化时需要手动触发 `partsOptions` 的 setter.\n */\n this.partsOptions = this.__partsOptions ?? {};\n this.initialValue = this.__initialValuePlain;\n /**\n * 类似上方的 partsOptions, precision 也需要在初始化时手动触发 setter. 以此确保 __minPrecision, __maxPrecision, __availableDurationParts 有值.\n */\n this.precision = this.__precision;\n super.connectedCallback();\n }\n willUpdate(_changedProperties) {\n super.willUpdate(_changedProperties);\n if (_changedProperties.has('locale')) {\n this.__dateTimeFieldLabels = getLocalizedDateTimeFields(this.localeInstance);\n }\n }\n render() {\n const cellStyles = this.extractCellStyles();\n const digitStyles = this.extractDigitStyles();\n const partStyles = this.extractPartStyles();\n const animationOptions = this.extractAnimationOptions();\n const keyframes = this.extractKeyframes();\n const availableDurationPartTypes = map(this.__availableDurationParts, part => part.type);\n return html `\n <timered-counter-roller\n class=\"timered-counter timered-counter-datetime-duration\"\n exportparts=\"group, part, digit, cell, prefix, suffix, part-suffix\"\n part=\"group\"\n aria-hidden=\"true\"\n color=${this.color}\n .parentContainerRect=${this.partsContainerRect}\n .parts=${this.parts}\n .partPreprocessDataList=${this.partPreprocessDataList}\n .animationOptions=${animationOptions}\n .keyframes=${keyframes}\n .cellStyles=${cellStyles}\n .digitStyles=${digitStyles}\n .partStyles=${partStyles}\n .direction=${this.direction}\n @roller-animation-start=${this.dispatchTimeredCounterAnimationStart}\n @roller-animation-end=${this.dispatchTimeredCounterAnimationEnd}\n ><slot name=\"prefix\" slot=\"prefix\"></slot\n ><slot name=\"suffix\" slot=\"suffix\"></slot>${repeat(this.parts, (_, index) => index, (_, partIndex) => html `<span slot=${`part-suffix-${partIndex}`} class=\"duration-unit\"\n >${this.__dateTimeFieldLabels[availableDurationPartTypes[partIndex]]}</span\n >`)}\n </timered-counter-roller>\n `;\n }\n};\nTimeredCounterDatetimeDuration.styles = [...TimeredCounter.styles, timeredCounterDatetimeStyles];\n__decorate([\n property({\n reflect: true,\n converter: value => {\n if (isNullish(value))\n return value;\n return parseJsonString(value);\n },\n })\n], TimeredCounterDatetimeDuration.prototype, \"precision\", null);\nTimeredCounterDatetimeDuration = __decorate([\n customElement('timered-counter-datetime-duration')\n], TimeredCounterDatetimeDuration);\nexport { TimeredCounterDatetimeDuration };\n//# sourceMappingURL=timered-counter-datetime-duration.js.map","// export {\n// easeIn,\n// easeOut,\n// easeInOut,\n// anticipate,\n// steps,\n// cubicBezier,\n// } from \"motion\";\nexport const linear = (x) => x;\n//# sourceMappingURL=easing-functions.js.map","import { TimeredCounter } from './timered-counter.js';\nimport { TimeredCounterNumber } from './timered-counter-number.js';\nimport { TimeredCounterString } from './timered-counter-string.js';\nimport { TimeredCounterDatetimeDuration } from './timered-counter-datetime-duration.js';\nimport { CounterAdapter } from './counter-adapter.js';\nexport function setNumberAdapter(adapterOrType, config) {\n CounterAdapter.setNumberAdapter(adapterOrType, config);\n}\nexport function setStringAdapter(adapterOrType) {\n CounterAdapter.setStringAdapter(adapterOrType);\n}\nexport { TimeredCounter, TimeredCounterDatetimeDuration, TimeredCounterNumber, TimeredCounterString, };\nexport * from './easing/index.js';\nexport * from './types/index.js';\n//# sourceMappingURL=index.js.map"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","value","get","SuppressedError","t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$6","constructor","this","_$cssResult$","Error","cssText","styleSheet","replaceSync","set","toString","reduce","n","cssRules","is","getOwnPropertyNames","h","getOwnPropertySymbols","getPrototypeOf","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","y","attribute","type","String","converter","reflect","hasChanged","metadata","litPropertyMetadata","b","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","elementProperties","noAccessor","getPropertyDescriptor","requestUpdate","configurable","enumerable","getPropertyOptions","hasOwnProperty","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$EC","removeAttribute","P","_$ET","_$Ej","reject","scheduleUpdate","performUpdate","wrapped","shouldUpdate","willUpdate","hostUpdate","update","_$EU","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","x","_$litType$","strings","values","T","for","E","A","C","createTreeWalker","N","parts","lastIndex","exec","test","startsWith","V","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M$1","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","M","_$AP","remove","setConnected","k$1","element","fill","j","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","Z","litHtmlPolyfillSupport","litHtmlVersions","r$5","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","customElements","define","init","querySelector","i$2","_$Ct","_$Ci","_$AQ","dt","ut","w","done","hasNext","lazy","lazyArgs","assign","isSingle","single","items","B","at","entries","hasMany","next","isNaN","Date","splice","getTime","extractPartOption","option","getterOptions","groupOption","isFunction","extractGroupOption","result","extractPartDigitOption","extractedOption","digits","partOption","extractPartDigitCellOption","digitData","partDigitOption","mergeGroupOption","source","merge","mergePartOption","from","concat","parseInt","mergePartDigitOption","CounterStylesMixin","superClass","CounterStylesMixinClass","cellStyles","cachedCellStyles","digitStyles","cachedDigitStyles","partStyles","cachedPartStyles","color","extractCellStyles","preprocessData","partPreprocessDataList","direction","oldValue","mergePartDigitCellOption","cellStylesDynamic","isDeepEqual","extractDigitStyles","digitStylesDynamic","extractPartStyles","partStylesDynamic","property","zip","matrix","valueof","min","undefined","transpose","row","rollerPartTest","newDirection","oldDirection","newDigits","oldDigits","animate","cancelPrevAnimation","earlyReturn","parseJsonString","error","preprocessPartsOptions","digitToChar","char","fromCodePoint","isObjectType","CounterPartsMixin","_a","_CounterPartsMixinClass___partsOptions","CounterPartsMixinClass","DEFAULT_PARTS_OPTIONS","oldParts","partsOptions","old","__classPrivateFieldSet","sampling","to","na","count","_count","interpolateFunc","isInteger","round","mul","sub","create","interpolateRound","interpolateNumber","eq","percent","div","max","transitionDigit","numberAdapter","sampleCount","sampleSplit","samples","sampleToString","changedProperties","processPartData","newData","oldData","results","globalIndex","newPart","oldPart","partDataResults","newDigit","oldDigit","find","place","partIndex","digitIndex","preprocessPartData","decimalSeparator","minPlaces","fillChar","_sampleToString","tempParts","directionValue","gt","partData","tailNumber","minIntegerPlaces","minDecimalPlaces","numberParts","integerPlaces","stringAdapter","stringToChars","decimalPlaces","integer","decimal","integerChars","decimalChars","filledIntegerPlaces","filledDecimalPlaces","filledChars","digitList","array","filter","digit","digitArray","BuildInNumberAdapter","num","isFinite","compare","gte","lt","lte","isNegative","isPositive","isZero","abs","ceil","floor","toNumber","inexact","quadrant","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","precision","rounding","modulo","toExpNeg","toExpPos","minE","maxE","crypto","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","mathpow","pow","isBinary","isHex","isOctal","isDecimal","BASE","LN10_PRECISION","PI_PRECISION","toStringTag","digitsToString","ws","indexOfLastWord","str","getZeroString","checkInt32","checkRoundingDigits","rm","repeating","di","rd","convertBase","baseIn","baseOut","arrL","arr","strL","charAt","absoluteValue","finalise","clampedTo","clamp","Ctor","NaN","cmp","comparedTo","xdL","ydL","xd","yd","xs","ys","cosine","cos","pr","sd","len","tinyPow","taylorSeries","times","cos2x","minus","plus","toLessThanHalfPi","neg","cubeRoot","cbrt","rep","t3","t3plusx","toExponential","divide","dp","dividedBy","dividedToIntegerBy","divToInt","equals","greaterThan","greaterThanOrEqualTo","hyperbolicCosine","cosh","one","cosh2_x","d8","hyperbolicSine","sinh","sqrt","sinh2_x","d5","d16","d20","hyperbolicTangent","tanh","inverseCosine","acos","halfPi","isNeg","getPi","asin","inverseHyperbolicCosine","acosh","ln","inverseHyperbolicSine","asinh","inverseHyperbolicTangent","atanh","wpr","xsd","inverseSine","atan","inverseTangent","px","x2","isInt","isPos","lessThan","lessThanOrEqualTo","logarithm","log","base","isBase10","denominator","inf","arg","naturalLogarithm","getLn10","xe","xLTy","pop","shift","getBase10Exponent","mod","q","naturalExponential","exp","negated","carry","getPrecision","sine","sin","sin2_x","squareRoot","tangent","tan","rL","toBinary","toStringBinary","toDecimalPlaces","toDP","finiteToString","toFraction","maxD","d0","d1","d2","n0","n1","toHexadecimal","toHex","toNearest","toOctal","toPower","yn","intPow","toPrecision","toSignificantDigits","toSD","truncated","trunc","valueOf","toJSON","multiplyInteger","temp","aL","bL","subtract","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","ltgt","guard","sum","c0","numerator","x1","parseDecimal","replace","search","substring","charCodeAt","parseOther","divisor","isFloat","Decimal","isHyperbolic","pi","atan2","config","obj","useDefaults","defaults","ps","getRandomValues","randomBytes","hypot","isDecimalInstance","log2","log10","Uint32Array","copy","clone","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","numberRegex","BuildInStringAdapter","GraphemeSplitter","Extend","Regional_Indicator","Prepend","E_Base","Glue_After_Zwj","E_Base_GAZ","codePointAt","idx","code","hi","low","shouldBreak","start","mid","end","all","previous","eModifierIndex","lastIndexOf","every","rIIndex","previousNonExtendIndex","getGraphemeBreakProperty","nextBreak","string","pos","prev","splitGraphemes","brk","res","iterateGraphemes","bind","countGraphemes","CounterAdapter","setNumberAdapter","adapterOrType","adapter","isString","includes","InnerDecimal","DecimalJsAdapter","NUMBER_ADAPTER","setStringAdapter","locales","segmenter","Intl","Segmenter","granularity","segment","BuildInIntlSegmenterAdapter","splitter","GraphemeSplitterAdapter","STRING_ADAPTER","VALUE_CONVERTER","isNullish","CounterBaseMixin","CounterBaseMixinClass","__value","trim","__oldValue","initialValue","__initialValue","locale","__locale","localeInstance","Locale","isNonNullish","timeredCounterStyles","css","CounterAnimationMixin","CounterAnimationMixinClass","animationOptions","cachedAnimationOptions","keyframes","cachedKeyframes","extractAnimationOptions","animationOptionsDynamic","extractKeyframes","keyframesDynamic","style","ft","removeProperty","setProperty","join","st","nt","classList","rollerStyles","rollerDigitStyles","noop","any","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","easeInElastic","c4","easeOutElastic","easeInOutElastic","c5","easeOutBounce","easeInBounce","easeInOutBounce","RollerDigitAnimationEvent","Event","TimeredCounterRollerDigit","textStyle","cellStyle","digitWidth","resizeObserver","ResizeObserver","clonedRollDigitList","getBoundingClientRect","DOMRect","width","_changedProperties","observe","disconnect","intersection","shouldAnimate","startAnimation","then","shadowCellStyle","omit","html","styleMap","repeat","classMap","animation","cancel","rollList","__emitAnimationStart","anmOptions","duration","iterations","easing","isEmpty","up","transform","down","EasingFunctions","func","range","clearAnimation","__emitAnimationEnd","console","dispatchEvent","query","customElement","RollerAnimationEvent","TimeredCounterRoller","parentContainerRect","__partDigitsColorStyles","digitAnimateEndCount","digitAnimatedCount","part","digitInfo","__handleDigitAnimationEnd","__generatePartDigitsColorStyles","containerRect","prefixContainer","suffixContainer","partDigitElements","querySelectorAll","partId","dataset","digitId","isNumber","CSS","supports","backgroundImage","backgroundClip","backgroundSize","height","backgroundPositionX","offsetLeft","backgroundPositionY","offsetTop","backgroundRepeat","warn","CounterAiraMixin","CounterAiraMixinClass","ariaLabel","ariaLive","generateAriaLabel","label","TimeredCounterAnimationEvent","exports","TimeredCounter","partsContainerRect","partsContainer","dispatchTimeredCounterAnimationStart","dispatchTimeredCounterAnimationEnd","timeredCounterNumberStyles","TimeredCounterNumber","localeNumber","localeNumberInstance","NumberFormat","isBoolean","localDecimalSeparator","localeGroupingSeparator","format","formatToParts","groupingSeparator","oldPartsOptions","timeredCounterStringStyles","anyBase","sa","srcAlphabet","dstAlphabet","number","newLen","numberMap","fromBase","toBase","alphabet","isValid","convert","REPLACED_CHARS","TimeredCounterString","__alphabet","__initialValueString","__valueString","__oldValueString","__partsOptions","__decimalToAnyBase","__anyBaseToDecimal","__updateAlphabet","allChars","charSet","sort","millisecondsInHour","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","setDate","getDate","addMonths","dayOfMonth","endOfDesiredMonth","setMonth","getMonth","setFullYear","getFullYear","addMilliseconds","getTimezoneOffsetInMilliseconds","utcDate","UTC","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","normalizeDates","dates","normalize","startOfDay","setHours","compareAsc","dateLeft","dateRight","diff","differenceInDays","laterDate","earlierDate","laterDate_","earlierDate_","compareLocalAsc","difference","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","differenceInCalendarDays","getRoundingMethod","method","differenceInHours","roundingMethod","differenceInMilliseconds","differenceInMinutes","isLastDayOfMonth","endOfDay","month","endOfMonth","differenceInMonths","workingLaterDate","differenceInCalendarMonths","isLastMonthNotFull","differenceInQuarters","differenceInSeconds","differenceInWeeks","differenceInYears","differenceInCalendarYears","isBefore","dateToCompare","subDays","subHours","addHours","subMilliseconds","subMinutes","setTime","addMinutes","subQuarters","addQuarters","subSeconds","addSeconds","subWeeks","addWeeks","subYears","addYears","DurationPartType","DurationPartMillisecond","Millisecond","Second","Minute","Hour","Day","Week","Month","Quarter","Year","DurationPartMillisecondToType","DateTimeFields","durationObject","remain","ISO8601DurationMarker","DateParts","TimeParts","timeredCounterDatetimeStyles","toDurationInMilliseconds","minPrecision","isDate","durationInMilliseconds","minPrecisionMs","fromTS","toTS","optimizeFrom","TimeredCounterDatetimeDuration","__precision","__initialValuePlain","__from","__to","__minPrecision","__maxPrecision","__availableDurationParts","__dateTimeFieldLabels","minPrecisionBreakpoint","maxPrecisionBreakpoint","partMilliseconds","available","availableDurationPartTypes","datePart","timePart","iso8601Duration","role","displayNames","DisplayNames","acc","field","of","getLocalizedDateTimeFields"],"mappings":"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,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GA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,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,EAzsCL,EA+sCJ,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,MA5l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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,37,41,44,47,52,55,56,62,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,116]}