{"version":3,"file":"static/js/vendors-954aa3d8.c2289ecf.js","mappings":"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","sources":["../node_modules/html2canvas/node_modules/tslib/tslib.es6.js","../node_modules/html2canvas/node_modules/src/Util.ts","../node_modules/src/css/layout/bounds.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/linebreak-trie.ts","../node_modules/html2canvas/node_modules/src/LineBreak.ts","../node_modules/src/css/syntax/tokenizer.ts","../node_modules/src/css/syntax/parser.ts","../node_modules/src/css/types/length.ts","../node_modules/src/css/types/length-percentage.ts","../node_modules/src/css/types/angle.ts","../node_modules/src/css/types/color.ts","../node_modules/src/css/property-descriptors/background-clip.ts","../node_modules/src/css/property-descriptors/background-color.ts","../node_modules/src/css/types/functions/gradient.ts","../node_modules/src/css/types/functions/-prefix-linear-gradient.ts","../node_modules/src/css/types/functions/radial-gradient.ts","../node_modules/src/css/types/functions/-prefix-radial-gradient.ts","../node_modules/src/css/types/image.ts","../node_modules/src/css/property-descriptors/background-size.ts","../node_modules/src/css/types/functions/linear-gradient.ts","../node_modules/src/css/types/functions/-webkit-gradient.ts","../node_modules/src/css/property-descriptors/background-image.ts","../node_modules/src/css/property-descriptors/background-origin.ts","../node_modules/src/css/property-descriptors/background-position.ts","../node_modules/src/css/property-descriptors/background-repeat.ts","../node_modules/src/css/property-descriptors/line-break.ts","../node_modules/src/css/property-descriptors/border-color.ts","../node_modules/src/css/property-descriptors/border-radius.ts","../node_modules/src/css/property-descriptors/border-style.ts","../node_modules/src/css/property-descriptors/border-width.ts","../node_modules/src/css/property-descriptors/color.ts","../node_modules/src/css/property-descriptors/direction.ts","../node_modules/src/css/property-descriptors/display.ts","../node_modules/src/css/property-descriptors/float.ts","../node_modules/src/css/property-descriptors/letter-spacing.ts","../node_modules/src/css/property-descriptors/word-break.ts","../node_modules/src/css/property-descriptors/line-height.ts","../node_modules/src/css/property-descriptors/list-style-image.ts","../node_modules/src/css/property-descriptors/list-style-position.ts","../node_modules/src/css/property-descriptors/list-style-type.ts","../node_modules/src/css/property-descriptors/margin.ts","../node_modules/src/css/property-descriptors/overflow.ts","../node_modules/src/css/property-descriptors/overflow-wrap.ts","../node_modules/src/css/property-descriptors/padding.ts","../node_modules/src/css/property-descriptors/text-align.ts","../node_modules/src/css/property-descriptors/position.ts","../node_modules/src/css/property-descriptors/text-shadow.ts","../node_modules/src/css/property-descriptors/text-transform.ts","../node_modules/src/css/property-descriptors/transform.ts","../node_modules/src/css/property-descriptors/transform-origin.ts","../node_modules/src/css/property-descriptors/visibility.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","../node_modules/src/css/property-descriptors/z-index.ts","../node_modules/src/css/types/time.ts","../node_modules/src/css/property-descriptors/opacity.ts","../node_modules/src/css/property-descriptors/text-decoration-color.ts","../node_modules/src/css/property-descriptors/text-decoration-line.ts","../node_modules/src/css/property-descriptors/font-family.ts","../node_modules/src/css/property-descriptors/font-size.ts","../node_modules/src/css/property-descriptors/font-weight.ts","../node_modules/src/css/property-descriptors/font-variant.ts","../node_modules/src/css/property-descriptors/font-style.ts","../node_modules/src/core/bitwise.ts","../node_modules/src/css/property-descriptors/content.ts","../node_modules/src/css/property-descriptors/counter-increment.ts","../node_modules/src/css/property-descriptors/counter-reset.ts","../node_modules/src/css/property-descriptors/duration.ts","../node_modules/src/css/property-descriptors/quotes.ts","../node_modules/src/css/property-descriptors/box-shadow.ts","../node_modules/src/css/property-descriptors/paint-order.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","../node_modules/src/css/index.ts","../node_modules/src/core/debugger.ts","../node_modules/src/dom/element-container.ts","../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","../node_modules/src/dom/document-cloner.ts","../node_modules/src/core/features.ts","../node_modules/src/css/layout/text.ts","../node_modules/src/dom/text-container.ts","../node_modules/src/dom/replaced-elements/image-element-container.ts","../node_modules/src/dom/replaced-elements/canvas-element-container.ts","../node_modules/src/dom/replaced-elements/svg-element-container.ts","../node_modules/src/dom/elements/li-element-container.ts","../node_modules/src/dom/elements/ol-element-container.ts","../node_modules/src/dom/replaced-elements/input-element-container.ts","../node_modules/src/dom/elements/select-element-container.ts","../node_modules/src/dom/elements/textarea-element-container.ts","../node_modules/src/dom/replaced-elements/iframe-element-container.ts","../node_modules/src/dom/node-parser.ts","../node_modules/src/css/types/functions/counter.ts","../node_modules/src/render/bound-curves.ts","../node_modules/src/core/cache-storage.ts","../node_modules/src/render/vector.ts","../node_modules/src/render/bezier-curve.ts","../node_modules/src/render/effects.ts","../node_modules/src/render/path.ts","../node_modules/src/render/stacking-context.ts","../node_modules/src/render/border.ts","../node_modules/src/render/box-sizing.ts","../node_modules/src/render/background.ts","../node_modules/src/core/util.ts","../node_modules/src/render/font-metrics.ts","../node_modules/src/render/renderer.ts","../node_modules/src/render/canvas/canvas-renderer.ts","../node_modules/src/render/canvas/foreignobject-renderer.ts","../node_modules/src/core/logger.ts","../node_modules/src/core/context.ts","../node_modules/src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\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\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\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\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n","import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType;\n backgroundClip: ReturnType;\n backgroundColor: Color;\n backgroundImage: ReturnType;\n backgroundOrigin: ReturnType;\n backgroundPosition: ReturnType;\n backgroundRepeat: ReturnType;\n backgroundSize: ReturnType;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType;\n borderTopRightRadius: ReturnType;\n borderBottomRightRadius: ReturnType;\n borderBottomLeftRadius: ReturnType;\n borderTopStyle: ReturnType;\n borderRightStyle: ReturnType;\n borderBottomStyle: ReturnType;\n borderLeftStyle: ReturnType;\n borderTopWidth: ReturnType;\n borderRightWidth: ReturnType;\n borderBottomWidth: ReturnType;\n borderLeftWidth: ReturnType;\n boxShadow: ReturnType;\n color: Color;\n direction: ReturnType;\n display: ReturnType;\n float: ReturnType;\n fontFamily: ReturnType;\n fontSize: LengthPercentage;\n fontStyle: ReturnType;\n fontVariant: ReturnType;\n fontWeight: ReturnType;\n letterSpacing: ReturnType;\n lineBreak: ReturnType;\n lineHeight: CSSValue;\n listStyleImage: ReturnType;\n listStylePosition: ReturnType;\n listStyleType: ReturnType;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType;\n position: ReturnType;\n textAlign: ReturnType;\n textDecorationColor: Color;\n textDecorationLine: ReturnType;\n textShadow: ReturnType;\n textTransform: ReturnType;\n transform: ReturnType;\n transformOrigin: ReturnType;\n visibility: ReturnType;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType;\n wordBreak: ReturnType;\n zIndex: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType;\n quotes: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType;\n counterReset: ReturnType;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n","export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline