diff --git a/dist/index.d.ts b/dist/index.d.ts index fc4fbea..d12f3ef 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -10,7 +10,7 @@ type Frontmatter = { socialImage?: string; tags?: string[]; } & Record; -type QuartzPluginData = { +type LocalQuartzPluginData = { slug?: FullSlug; frontmatter?: Frontmatter; description?: string; @@ -37,7 +37,7 @@ type ImageOptions = { description: string; fonts: SatoriOptions["fonts"]; cfg: GlobalConfiguration; - fileData: QuartzPluginData; + fileData: LocalQuartzPluginData; }; declare const CustomOgImagesEmitterName = "CustomOgImages"; declare const CustomOgImages: QuartzEmitterPlugin>; diff --git a/dist/index.js b/dist/index.js index eaa8ae2..3101f20 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5,6 +5,7 @@ import { styleText } from 'util'; import sharp from 'sharp'; import { joinSegments } from '@quartz-community/types'; import { unescapeHTML } from '@quartz-community/utils'; +import { getDate } from '@quartz-community/utils/sort'; import { getIconCode } from '@quartz-community/utils/emoji'; import { jsxs, Fragment, jsx } from 'preact/jsx-runtime'; @@ -23820,9 +23821,6 @@ function getFileExtension(path2) { function isAbsoluteURL(url) { return /^https?:\/\//.test(url); } -function getDate(cfg, data) { - return data.dates?.[cfg.defaultDateType ?? "modified"]; -} function formatDate(d2, locale = "en-US") { return d2.toLocaleDateString(locale, { year: "numeric", @@ -23913,7 +23911,7 @@ var defaultImage = ({ const theme = cfg.theme; const fontBreakPoint = 32; const useSmallerFont = title.length > fontBreakPoint; - const rawDate = getDate(cfg, fileData); + const rawDate = getDate(fileData); const date = rawDate ? formatDate(rawDate, cfg.locale) : null; const { minutes } = (0, import_reading_time.default)(fileData.text ?? ""); const readingTimeText = (userOpts.readingTimeText ?? ((time) => `${time} min read`))( diff --git a/dist/index.js.map b/dist/index.js.map index 6fa2d19..41411df 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../node_modules/tiny-inflate/index.js","../node_modules/unicode-trie/swap.js","../node_modules/unicode-trie/index.js","../node_modules/base64-js/lib/b64.js","../node_modules/postcss-value-parser/lib/parse.js","../node_modules/postcss-value-parser/lib/walk.js","../node_modules/postcss-value-parser/lib/stringify.js","../node_modules/postcss-value-parser/lib/unit.js","../node_modules/postcss-value-parser/lib/index.js","../node_modules/camelize/index.js","../node_modules/css-color-keywords/colors.json","../node_modules/css-color-keywords/index.js","../node_modules/css-to-react-native/index.js","../node_modules/css-background-parser/index.js","../node_modules/css-box-shadow/index.js","../node_modules/color-name/index.js","../node_modules/hex-rgb/index.js","../node_modules/escape-html/index.js","../node_modules/yoga-wasm-web/dist/wrapAsm-f766f97f.js","../node_modules/yoga-wasm-web/dist/asm.js","../node_modules/reading-time/lib/reading-time.js","../node_modules/reading-time/lib/stream.js","../node_modules/reading-time/index.js","../node_modules/linebreak/dist/src/classes.js","../node_modules/linebreak/dist/src/pairs.js","../node_modules/linebreak/dist/src/linebreaker.js","../node_modules/satori/src/handler/expand.ts","../node_modules/parse-css-color/dist/index.esm.js","../node_modules/satori/src/transform-origin.ts","../node_modules/satori/src/parser/mask.ts","../node_modules/satori/src/builder/text.ts","../node_modules/css-gradient-parser/src/utils.ts","../node_modules/css-gradient-parser/src/linear.ts","../node_modules/css-gradient-parser/src/radial.ts","../node_modules/satori/src/parser/shape.ts","../node_modules/@shuding/opentype.js/node_modules/.pnpm/fflate@0.7.3/node_modules/fflate/esm/browser.js","../node_modules/@shuding/opentype.js/src/path.js","../node_modules/@shuding/opentype.js/src/encoding.js","../node_modules/@shuding/opentype.js/src/check.js","../node_modules/@shuding/opentype.js/src/glyph.js","../node_modules/@shuding/opentype.js/src/glyphset.js","../node_modules/@shuding/opentype.js/src/layout.js","../node_modules/@shuding/opentype.js/src/position.js","../node_modules/@shuding/opentype.js/src/substitution.js","../node_modules/@shuding/opentype.js/src/util.js","../node_modules/@shuding/opentype.js/src/parse.js","../node_modules/@shuding/opentype.js/src/tables/glyf.js","../node_modules/@shuding/opentype.js/src/hintingtt.js","../node_modules/@shuding/opentype.js/src/tokenizer.js","../node_modules/@shuding/opentype.js/src/char.js","../node_modules/@shuding/opentype.js/src/features/featureQuery.js","../node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicWord.js","../node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicSentence.js","../node_modules/@shuding/opentype.js/src/features/applySubstitution.js","../node_modules/@shuding/opentype.js/src/features/arab/arabicPresentationForms.js","../node_modules/@shuding/opentype.js/src/features/arab/arabicRequiredLigatures.js","../node_modules/@shuding/opentype.js/src/features/latn/contextCheck/latinWord.js","../node_modules/@shuding/opentype.js/src/features/latn/latinLigatures.js","../node_modules/@shuding/opentype.js/src/bidi.js","../node_modules/@shuding/opentype.js/src/font.js","../node_modules/@shuding/opentype.js/src/tables/cmap.js","../node_modules/@shuding/opentype.js/src/tables/cff.js","../node_modules/@shuding/opentype.js/src/tables/fvar.js","../node_modules/@shuding/opentype.js/src/tables/gdef.js","../node_modules/@shuding/opentype.js/src/tables/gpos.js","../node_modules/@shuding/opentype.js/src/tables/gsub.js","../node_modules/@shuding/opentype.js/src/tables/head.js","../node_modules/@shuding/opentype.js/src/tables/hhea.js","../node_modules/@shuding/opentype.js/src/tables/hmtx.js","../node_modules/@shuding/opentype.js/src/tables/kern.js","../node_modules/@shuding/opentype.js/src/tables/ltag.js","../node_modules/@shuding/opentype.js/src/tables/loca.js","../node_modules/@shuding/opentype.js/src/tables/maxp.js","../node_modules/@shuding/opentype.js/src/tables/os2.js","../node_modules/@shuding/opentype.js/src/tables/post.js","../node_modules/@shuding/opentype.js/src/types.js","../node_modules/@shuding/opentype.js/src/tables/meta.js","../node_modules/@shuding/opentype.js/src/opentype.js","../node_modules/satori/src/yoga/yoga-prebuilt.ts","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/corePluginList.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/stubs/defaultConfig.stub.js","../node_modules/satori/src/vendor/twrnc/log.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/colors.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/defaults.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toPath.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/satori/node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../node_modules/satori/src/vendor/twrnc/deprecate.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/parser.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/processor.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/index.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/satori/node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/color.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/lib/regex.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/satori/src/vendor/twrnc/picocolors.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/featureFlags.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/resolveConfig.js","../node_modules/satori/src/yoga/index.ts","../node_modules/satori/src/vendor/parse-css-dimension/index.js","../node_modules/satori/src/utils.ts","../node_modules/satori/src/handler/image.ts","../node_modules/satori/src/handler/preprocess.ts","../node_modules/satori/src/handler/presets.ts","../node_modules/satori/src/handler/inheritable.ts","../node_modules/satori/src/handler/compute.ts","../node_modules/satori/src/builder/transform.ts","../node_modules/satori/src/builder/shadow.ts","../node_modules/satori/src/builder/text-decoration.ts","../node_modules/satori/src/text/characters.ts","../node_modules/satori/src/text/measurer.ts","../node_modules/satori/src/text/processor.ts","../node_modules/satori/src/text/index.ts","../node_modules/satori/src/builder/gradient/utils.ts","../node_modules/satori/src/builder/gradient/linear.ts","../node_modules/satori/src/builder/gradient/radial.ts","../node_modules/satori/src/builder/background-image.ts","../node_modules/satori/src/builder/border-radius.ts","../node_modules/satori/src/builder/border.ts","../node_modules/satori/src/builder/content-mask.ts","../node_modules/satori/src/builder/clip-path.ts","../node_modules/satori/src/builder/overflow.ts","../node_modules/satori/src/builder/mask-image.ts","../node_modules/satori/src/builder/rect.ts","../node_modules/satori/node_modules/.pnpm/emoji-regex@10.2.1/node_modules/emoji-regex/index.mjs","../node_modules/satori/src/language.ts","../node_modules/satori/src/layout.ts","../node_modules/satori/src/font.ts","../node_modules/satori/src/builder/svg.ts","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/create.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/types.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/helpers.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/styles.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/cache.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-size.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/line-height.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/spacing.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/screens.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-family.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/color.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/borders.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/inset.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/flex.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/width-height.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/letter-spacing.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/opacity.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/shadow.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/ClassParser.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/parse-inputs.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/plugin.js","../node_modules/satori/src/handler/tailwind.ts","../node_modules/satori/src/satori.ts","../src/emitter.tsx","../src/theme.ts","../src/emoji.ts"],"names":["exports","bits","lengths","d","offs","m","decode","l","v","max","parse","x","matchString","matchColor","noopToken","valueForTypeToken","regExpToken","transform","aspectRatio","border","borderWidth","borderColor","directionFactory","keyFor","parseShadowOffset","parseShadow","boxShadow","flex","flexFlow","fontFamily","font","fontWeight","fontVariant","placeContent","textDecoration","textDecorationLine","textShadow","oneOfType","xyTransformFactory","transforms","background","shadowOffset","textShadowOffset","TokenStream","transformRawValue","baseTransformShorthandValue","getStylesForProperty","getPropertyName","index","number","E","_","T","N","O","u","r","e","k","a","i","n","f","t","b","o","c","s","A","h","p","w","y","G","R","g","Z","W","V","B","I","X","L","F","C","S","P","Y","U","M","H","Q","z","j","D","J","K","q","$","rr","re","ra","ri","rn","rf","rb","rk","rA","rl","rd","rh","rp","rN","rw","rG","rX","rL","r_","rF","rC","rY","rH","rz","rD","rx","rJ","rK","rq","r$","r0","r2","r1","r4","r3","r8","r9","r7","er","ei","ef","et","eb","eo","ek","rP","rS","rM","rU","rZ","rW","eu","ro","rV","rs","rQ","rc","ry","ru","rO","rg","rt","rB","rv","rm","rE","rj","r5","rI","rR","rT","el","ec","readingTime","require_reading_time","$hJqJp$base64js","$hJqJp$unicodetrie","percentage","hex2Rgb","colorName","import_css_to_react_native","split","input","separator","result","parenCount","resolveStops","stops","color","offset","isHint","resolveLength","REGEX","value","unit","parseLinearGradient","repeating","props","properties","orientation","resolveLinearOrientation","angle","rgExtentKeyword","positionKeyword","isRgExtentKeyword","isPositionKeyWord","extendPosition","res","parseRadialGradient","isColor","prefix","shape","size","position","le","st","sl","bl","bt","tl","let","const","arguments","cmap","path","parseGlyph","buildPath","parseCFFCharstring","langSysTable","pair","loca","ci","this","subtable","gsub","singleSubstitutionFormat1","singleSubstitutionFormat2","chainingSubstitutionFormat3","ligatureSubstitutionFormat1","getContextParams","check","HintingTrueType","meta","code","charString","gdef","subtableParsers","parseLookup1","parseLookup2","parseLookup3","parseLookup4","parseLookup5","glyphCount","substCount","parseLookup6","parseLookup7","parseLookup8","head","hhea","maxp","os2","post","yoga_prebuilt_exports","__export","getYogaModule","initYoga","init_yoga_prebuilt","__esmMin","require_negateValue","__commonJSMin","_default","sign","require_corePluginList","require_configurePlugins","pluginConfig","plugins","pluginName","require_defaultConfig_stub","module","colors","theme","breakpoints","log_exports","log_default","init_log","key","messages","require_colors","_log","_interopRequireDefault","obj","warn","version","from","to","require_defaults","defaults","target","sources","source","ref","k1","ref1","require_toPath","toPath","openBrackets","closedBrackets","require_normalizeConfig","normalizeConfig","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","config","value1","content","purge","safelist","_prefix","extract","ref2","ref3","ref4","ref5","ref6","ref7","ref8","ref9","extractors","defaultExtractor","extensions","extractor","extension","transformers","file","require_isPlainObject","isPlainObject","prototype","require_cloneDeep","cloneDeep","child","require_unesc","unesc","gobbleHex","str","lower","hex","spaceTerminated","valid","codePoint","isSurrogate","CONTAINS_ESCAPE","needToProcess","ret","gobbled","require_getProp","getProp","_len","_key","prop","require_ensureObject","ensureObject","require_stripComments","stripComments","commentStart","lastEnd","commentEnd","require_util","_unesc","_getProp","_ensureObject","_stripComments","require_node","_util","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","cloneNode","parent","cloned","type","Node","opts","_proto","overrides","name","valueEscaped","originalValue","originalEscaped","line","column","rawSpace","raw","require_types","TAG","STRING","SELECTOR","ROOT","PSEUDO","NESTING","ID","COMMENT","COMBINATOR","CLASS","ATTRIBUTE","UNIVERSAL","require_container","_node","types","_createForOfIteratorHelperLoose","allowArrayLike","it","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr","len","arr2","_inheritsLoose","subClass","superClass","_setPrototypeOf","Container","_Node","_this","selector","id","_iterator","_step","node","oldNode","newNode","oldIndex","col","found","foundChild","callback","_this2","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","current","memo","require_root","_container","_types","Root","_Container","message","options","handler","require_selector","Selector","require_cssesc","object","hasOwnProperty","merge","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","string","quote","isIdentifier","firstChar","output","counter","length","character","extra","$0","$1","$2","require_className","_cssesc","ClassName","escaped","require_comment","Comment","require_id","require_namespace","Namespace","namespace","ns","require_tag","_namespace","Tag","_Namespace","require_string","String","require_pseudo","Pseudo","params","require_deprecate","fn","args","require_attribute","unescapeValue","_CSSESC_QUOTE_OPTIONS","deprecate","WRAPPED_IN_QUOTES","warnOfDeprecatedValueAssignment","warnOfDeprecatedQuotedAssignment","warnOfDeprecatedConstructor","deprecatedUsage","quoteMark","unescaped","handleDeprecatedContructorOpts","_unescapeValue","Attribute","cssescopts","CSSESC_QUOTE_OPTIONS","numSingleQuotes","numDoubleQuotes","pref","quoteValue","rawValue","attrSpaces","spaces","rawSpaces","spaceName","concat","defaultAttrConcat","count","attributeSpaces","operatorSpaces","operator","valueSpaces","insensitiveSpaces","attrValue","qm","_unescapeValue2","require_universal","Universal","require_combinator","Combinator","require_nesting","Nesting","require_sortAscending","sortAscending","list","require_tokenTypes","ampersand","asterisk","at","comma","colon","semicolon","openParenthesis","closeParenthesis","openSquare","closeSquare","dollar","tilde","caret","plus","equals","pipe","greaterThan","space","singleQuote","doubleQuote","slash","bang","backslash","cr","feed","newline","tab","comment","word","combinator","require_tokenize","tokenize","_unescapable","_wordDelimiters","unescapable","wordDelimiters","hexChars","consumeWord","css","start","next","consumeEscape","hexDigits","FIELDS","tokens","_css","end","endColumn","endLine","escapePos","last","lines","nextLine","nextOffset","tokenType","unclosed","what","fix","require_parser","_root","_selector","_className","_comment","_id","_tag","_string","_pseudo","_attribute","_universal","_combinator","_nesting","_sortAscending","_tokenize","_WHITESPACE_TOKENS","_Object$assign","WHITESPACE_TOKENS","WHITESPACE_EQUIV_TOKENS","tokenStart","token","tokenEnd","getSource","startLine","startColumn","getTokenSource","getTokenSourceSpan","startToken","endToken","unescapeProp","indexesOf","array","item","indexes","uniqs","Parser","rule","rootSource","errorOptions","attr","startingToken","pos","spaceBefore","commentBefore","lastAdded","spaceAfterMeaningfulToken","prevContent","existingComment","oldRawValue","_rawValue","_unescaped","_oldRawValue","oldValue","insensitive","lastComment","rawLastComment","lastValue","rawLastValue","stopPosition","startPosition","nodes","firstToken","lastToken","requiredSpace","rawSpaceBefore","nameRaw","raws","nextSigTokenPos","_this$convertWhitespa","spaceOrDescendantSelectorNodes","_this$convertWhitespa2","_space","_rawSpace","_this$convertWhitespa3","_space2","_rawSpace2","before","nextContent","unbalanced","parenStart","parenValue","parenEnd","pseudoStr","first","nextToken","firstCallback","hasClass","escapedDot","isKeyframesPercent","hasId","interpolations","hashIndex","indices","ind","sourceIndex","classNameOpts","idOpts","tagOpts","throwOnParenthesis","description","an","required","searchPosition","require_processor","_parser","Processor","func","merged","parser","resolve","reject","root","require_constructors","attribute","className","nesting","pseudo","tag","universal","require_guards","isNode","isPseudoElement","isPseudoClass","isContainer","isNamespace","_IS_TYPE","IS_TYPE","isNodeType","isAttribute","isClassName","isCombinator","isComment","isNesting","isPseudo","isRoot","isSelector","isString","isTag","isUniversal","require_selectors","_constructors","_guards","require_dist","_processor","selectors","processor","require_escapeCommas","escapeCommas","require_color_name","require_color","_export","all","parseColor","formatColor","_colorName","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","match","part","mode","alpha","hasAlpha","require_withAlphaVariable","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","require_regex","pattern","withoutCapturing","any","optional","zeroOrMore","nestedBrackets","escape","REGEX_SPECIAL","REGEX_HAS_SPECIAL","toSource","open","close","depth","require_splitAtTopLevelOnly","splitAtTopLevelOnly","_regex","SPECIALS","lastIndex","separatorIndex","separatorStart","separatorLength","matchesSeparator","atEndOfSeparator","matchesFullSeparator","require_parseBoxShadowValue","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","parts","seen","shadows","require_dataTypes","normalize","url","lineWidth","image","gradient","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","cssFunctions","COMMA","UNDERSCORE","fullMatch","characterBefore","lengthUnits","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","require_pluginUtils","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","coerceValue","_postcssSelectorParser","_escapeCommas","_withAlphaVariable","_dataTypes","_negateValue","updateClass","sel","updatedClass","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","splitAlpha","slashIdx","opacityValue","tailwindConfig","normalizedColor","guess","typeMap","supportedTypes","splitAtFirst","delim","idx","arbitraryValue","explicitType","require_toColorValue","toColorValue","maybeFunction","require_resolveConfig","resolveConfig","_corePluginList","_configurePlugins","_defaultConfigStub","_colors","_defaults","_toPath","_normalizeConfig","_isPlainObject","_cloneDeep","_pluginUtils","_toColorValue","isFunction","isObject","mergeWith","customizer","configUtils","scale","negativeScale","negativeValue","screens","valueToResolve","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","toPaths","matches","newPath","resolveFunctionKeys","resolvePath","val","normalized","extractPluginConfigs","configs","allConfigs","plugin","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","picocolors_exports","picocolors_default","init_picocolors","require_featureFlags","flagEnabled","issueFlagNotices","_picocolors","featureFlags","flag","experimentalFlagsEnabled","changes","require_getAllConfigs","getAllConfigs","_defaultConfigStubJs","_featureFlags","preset","features","experimentals","feature","require_resolve_config","_resolveConfig","_getAllConfigs","defaultConfigs","yogaInstance","initializationPromise","getYoga","mod","yoga","isReactElement","isClass","hasDangerouslySetInnerHTMLProp","normalizeChildren","children","flattend","lengthToNumber","baseFontSize","baseLength","inheritedStyle","calcDegree","deg","multiply","m1","m2","field","map","fallback","errorIfNotAllowedForProperty","_v","wordSegmenter","graphemeSegmenter","wordSeparators","point","segment","granularity","locale","seg","segmented","previousWord","nextWord","buildXMLString","attrs","attrString","createLRU","store","set","keyToDelete","get","entry","clear","parseViewBox","viewBox","toString","isNumber","isUndefined","splitByBreakOpportunities","wordBreak","breaker","LineBreaker","bk","words","requiredBreaks","midline","letter","splitEffects","AVIF","WEBP","APNG","PNG","JPEG","GIF","SVG","parseJPEG","buf","view","parseGIF","parsePNG","inflightRequests","ALLOWED_IMAGE_TYPES","arrayBufferToBase64","buffer","binary","bytes","base64ToArrayBuffer","base64","binaryString","parseSvgImageSize","src","data","svgTag","viewBoxStr","width","height","ratio","arrayBufferToDataUri","imageSize","imageType","detectContentType","resolveImageData","newSrc","decodedURI","encodingType","dataString","utf8Src","base64Src","cached","promise","err","detectAPNG","dv","off","isAPNG","chars","ATTRIBUTE_MAPPING","SVGSymbols","translateSVGNodeToSVGString","inheritedColor","style","restProps","currentColor","styles","preProcessNode","walk","SVGNodeToImage","viewbox","viewBoxSize","DEFAULT_DISPLAY","presets_default","inheritable","parseUnit","handleWord","unitIsHorizontal","parsedUnit","parseTransformOrigin","valueParser","getMaskProperty","parseMask","maskImage","common","optOutPx","keepNumber","handleFallbackColor","rawInput","purify","num","handleSpecialCase","horizontal","vertical","vh","vv","purified","full","parseBoxShadow","symbols","replaced","symbol","values","getErrorHint","RGB_SLASH","normalizeColor","expand","serializedStyle","getCurrentColor","preprocess","resolvedStyle","backgrounds","parseElementStyle","calcBaseFontSize","textShadowRadius","inheritedSize","refineHSL","cssColorParse","convertCurrentColorToActualValue","compute","definedStyle","Yoga","resolvedSrc","imageWidth","imageHeight","extraHorizontal","extraVertical","contentBoxWidth","contentBoxHeight","isAbsoluteContentSize","baseMatrix","resolveTransforms","matrix","transformMatrix","rad","left","top","isInheritingTransform","transformOrigin","xOrigin","yOrigin","container","opacity","buildText","filter","clipPathId","debug","decorationShape","shapeProps","escapeHTML","shiftPath","dx","dy","command","SCALE","buildDropShadow","shadowCount","effects","right","bottom","grow","innerShadow","shadowStyle","sid","maskId","shapeWithSpread","finalShape","buildDecoration","ascender","textDecorationColor","textDecorationStyle","fontSize","dasharray","stringFromCode","Space","Tab","HorizontalEllipsis","genMeasurer","engine","isImage","letterSpacing","measureGrapheme","grapheme","measureGraphemeArray","graphemes","measureText","text","textTransform","whiteSpace","processTextTransform","processedContent","shouldCollapseTabsAndSpaces","allowSoftWrap","processWhiteSpace","allowBreakWord","processWordBreak","lineLimit","blockEllipsis","processTextOverflow","textOverflow","lineClamp","WebkitLineClamp","WebkitBoxOrient","overflow","display","parseLineClamp","shouldKeepLinebreak","regex1","regex2","match1","match2","skippedWordWhenFindingMissingFont","shouldSkipWhenFindingMissingFont","buildTextNodes","context","parentStyle","embedFont","graphemeImages","canLoadAdditionalAssets","textAlign","lineHeight","textWrap","cssFilter","tabSize","_inheritedBackgroundClipTextPath","flexShrink","textContainer","createTextContainerNode","wordsMissingFont","tabWidth","calc","currentWidth","tabCount","detectTabs","originWidth","textBeforeTab","textAfterTab","textWidthBeforeTab","offsetBeforeTab","afterTrimEndWidth","baselines","lineSegmentNumber","texts","wordPositionInLayout","flow","maxWidth","lineIndex","currentLineHeight","currentBaselineOffset","prevLineEndingSpacesWidth","forceBreak","endingSpacesWidth","_word","lineEndingSpacesWidth","allowedToPutAtBeginning","allowedToJustify","willWrap","glyphHeight","_texts","_text","_width","_isImage","measuredTextSize","containerWidth","mHeight","backgroundClipDef","overflowMaskId","containerLeft","containerTop","containerHeight","parentContainerInnerWidth","textShadowColor","mergedPath","skippedLine","decorationLines","wordBuffer","bufferedOffset","layout","nextLayout","isLastDisplayedBeforeEllipsis","topOffset","leftOffset","extendedWidth","remainingWidth","segments","gutter","baselineOfLine","baselineOfWord","heightOfWord","baselineDelta","calcEllipsis","baseWidth","subset","resolvedWidth","char","ellipsisWidth","_blockEllipsis","spaceWidth","isNotLastLine","nextLineText","finalizedSegment","finalizedLeftOffset","finalizedWidth","deco","normalizeStops","totalLength","colorStops","stop","lastStop","previousStop","nextStop","buildLinearGradient","repeatX","repeatY","dimensions","offsets","inheritableStyle","points","xys","resolveXYFromDirection","calcNormalPoint","calcPercentage","resolveRepeatingCycle","gradientId","patternId","defs","dir","x1","y1","x2","y2","tmp","dfs","p1","p2","sx","sy","ex","ey","buildRadialGradient","_a","xDelta","yDelta","cx","cy","calcRadialGradient","spread","calcRadius","calcPos","endingShape","centerAxis","fx","fy","isSizeAllLength","toAbsoluteValue","base","parseLengthPairs","defaultX","defaultY","backgroundImage","repeat","dimensionsWithoutFallback","resolvedHeight","svgArcCenterOffset","resolveSize","limit","makeSmaller","resolveRadius","sides","singleValue","radiusZeroOrNull","_radius","getBorderRadiusClipPath","borderRadiusPath","borderType","rectClipId","radius","partialSides","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","singleAbsValueTopLeftCorner","singleAbsValueTopRightCorner","singleAbsValueBottomLeftCorner","singleAbsValueBottomRightCorner","getArc","c0","arc0","arc1","compareBorderDirections","getBorderClipPath","currentClipPathId","borderPath","asContentMask","maskBorderOnly","directions","direction","fullBorder","currentStyle","_i","ni","nd","contentMask","borderOnly","offsetLeft","offsetTop","offsetRight","offsetBottom","contentArea","regexMap","createShapeParser","parseCircle","resolvePosition","parseEllipse","parsePath","fillRule","resolveFillRule","parsePolygon","parseInset","inset","radiusMap","genClipPathId","genClipPath","buildClipPath","clipPath","rest","currentClipPath","overflowClipPath","genMaskImageId","buildMaskImage","miId","mask","def","rect","fills","backgroundShapes","mi","backgroundClip","clip","fill","borderClip","imageBorderRadius","preserveAspectRatio","emoji_regex_default","emojiRegex","specialCode","locales","isValidLocale","detectLanguageCode","languages","lang","normalizeLocale","element","getTwStyles","iter","tw","_newLocale","newLocale","twStyles","computedStyle","newInheritableStyle","mutateRefValue","normalizedChildren","iterators","segmentsMissingFont","childrenRenderResult","baseRenderResult","depsRenderResult","childrenNode","SUFFIX_WHEN_LANG_NOT_SET","compareFont","weight","matchedWeight","matchedStyle","nextWeight","nextStyle","FontLoader","fontOptions","matchedFont","weight1","style1","weight2","style2","fontOption","_lang","opentype","originalCharToGlyphIndex","_name","fontStyle","face","getNormal","getUnknown","keys","specifiedLangFonts","nonSpecifiedLangFonts","additionalFonts","getLangFromFontName","cachedFontResolver","resolveFont","_fonts","_font","resolvedFont","useOS2Table","_b","descender","_lineGap","asc","contentHeight","brokenChars","originalStringToGlyphs","glyphs","anotherFont","glyph","scaledCommand","unpatch","svg","import_resolveConfig","PLATFORMS","isPlatform","ORIENTATIONS","isOrientation","ConfigType","Unit","complete","parseNumericValue","fractions","numerator","denominator","parsedNumerator","parsedDenominator","getCompleteStyle","styleVal","parseStyleVal","mergeStyle","getStyle","toStyleVal","isNegative","device","toPx","DIR_MAP","getDirection","parseAndConsumeDirection","utilityFragment","parseUnconfigged","unconfiggedStyleVal","unconfiggedStyle","consoleWarn","noopWarn","defaultStyles","styles_default","Cache","customStyles","ir","configValue","fontSizeStyle","calculateLineHeight","parseValue","spacing","numericValue","unconfigged","spacingStyle","pixels","screenData","acc","screen","minPx","maxPx","minA","maxA","minB","maxB","order","firstFamily","shorthandOpacity","findColorInConfigRecursive","addOpacity","STYLE_PROPS","opacityProp","colorOpacity","hexToRgba","removeOpacityHelpers","orig","MATCH_SHORT_HEX","MATCH_FULL_HEX","configColor","colorNameStart","colorNameRest","subConfig","colorType","colorStyle","arbitraryWidth","borderRadius","arbitrary","insetDir","insetStyle","flexGrowShrink","configKey","flexBasis","widthHeight","minMaxWidthHeight","relativeLetterSpacing","ems","parsedConfig","parsedArbitrary","shadowOpacity","widthStr","heightStr","offsetValue","ClassParser","platform","_c","_d","_e","_f","prefixes","widthBreakpoints","breakpointOrder","windowWidth","min","spacingDirection","elevation","zIndex","windowDims","amount","checkDimension","parsedAmount","bound","begin","parseInputs","inputs","classNames","unique","classes","getAddedUtilities","callPluginFunction","pluginFn","added","utilities","core","notImplemented","create","customConfig","withContent","pluginUtils","customStringUtils","customStyleUtils","util","deriveCacheGroup","cacheGroup","contextCaches","getCache","existing","dependents","ordered","userStyle","joined","utility","styleIr","customStyle","orderedStyle","dependent","error","styleObj","tailwindFn","strings","prefixMatches","newDimensions","newFontScale","newPixelDensity","newColorScheme","defaultShadows","addUtilities","createTw","getTw","fontCache","satori","definedWidth","definedHeight","processedWordsMissingFonts","languageCodes","convertToLanguageCodes","_segment","asset","computedWidth","computedHeight","wordsByCode","fs"],"mappings":"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A;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,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AA,EAAK,MAAI6Q,EAAAA,EACZ,CAAA;AACD,EAAA,IAAMA,KAAW,CACb,WAAA,EACA,aACA,eAAA,EACA,eAAA,EACA,cACA,UAAA,EACA,OAAA,EACA,WAAA,EACA,QAAA,EACA,SACA,YAAA,EACA,iBAAA,EACA,iBACA,SAAA,EACA,cAAA,EACA,cACA,OAAA,EACA,OAAA,EACA,QAAA,EACA,WAAA,EACA,WACA,aAAA,EACA,QAAA,EACA,aACA,WAAA,EACA,OAAA,EACA,YACA,UAAA,EACA,MAAA,EACA,YAAA,EACA,UAAA,EACA,aACA,aAAA,EACA,gBAAA,EACA,iBACA,iBAAA,EACA,WAAA,EACA,UACA,MAAA,EACA,OAAA,EACA,WAAA,EACA,WAAA,EACA,UACA,aAAA,EACA,YAAA,EACA,UACA,gBAAA,EACA,iBAAA,EACA,kBACA,cAAA,EACA,eAAA,EACA,mBAAA,EACA,eAAA,EACA,cACA,SAAA,EACA,aAAA,EACA,eACA,YAAA,EACA,iBAAA,EACA,gBACA,cAAA,EACA,qBAAA,EACA,kBAAA,EACA,eAAA,EACA,YACA,cAAA,EACA,YAAA,EACA,gBACA,YAAA,EACA,gBAAA,EACA,gBACA,KAAA,EACA,OAAA,EACA,aAAA,EACA,aAAA,EACA,eACA,eAAA,EACA,WAAA,EACA,aACA,aAAA,EACA,UAAA,EACA,sBACA,gBAAA,EACA,cAAA,EACA,YAAA,EACA,WAAA,EACA,gBACA,aAAA,EACA,aAAA,EACA,eACA,eAAA,EACA,iBAAA,EACA,qBACA,iBAAA,EACA,oBAAA,EACA,oBAAA,EACA,gBAAA,EACA,wBACA,gBAAA,EACA,oBAAA,EACA,oBACA,kBAAA,EACA,MAAA,EACA,UACA,aAAA,EACA,WAAA,EACA,gBAAA,EACA,SAAA,EACA,aACA,YAAA,EACA,eAAA,EACA,cACA,UAAA,EACA,YAAA,EACA,iBACA,WAAA,EACA,oBAAA,EACA,YAAA,EACA,eAAA,EACA,aACA,aAAA,EACA,gBAAA,EACA,uBACA,qBAAA,EACA,yBAAA,EACA,uBACA,eAAA,EACA,kBAAA,EACA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","file":"index.js","sourcesContent":["var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\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.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\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 DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\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>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + 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 SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst 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>>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.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\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 index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\nvar uLower = \"u\".charCodeAt(0);\nvar uUpper = \"U\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar isUnicodeRange = /^[a-f0-9?-]+$/i;\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next,\n quote,\n prev,\n token,\n escape,\n escapePos,\n whitespacePos,\n parenthesesOpenPos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n prev.sourceEndIndex += token.length;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash &&\n value.charCodeAt(next + 1) !== star &&\n (!parent ||\n (parent && parent.type === \"function\" && parent.value !== \"calc\")))\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n token.sourceEndIndex = token.unclosed ? next : next + 1;\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n next = value.indexOf(\"*/\", pos);\n\n token = {\n type: \"comment\",\n sourceIndex: pos,\n sourceEndIndex: next + 2\n };\n\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n token.sourceEndIndex = next;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Operation within calc\n } else if (\n (code === slash || code === star) &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\"\n ) {\n token = value[pos];\n tokens.push({\n type: \"word\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token\n });\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n parenthesesOpenPos = pos;\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(parenthesesOpenPos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (parenthesesOpenPos < whitespacePos) {\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: whitespacePos + 1,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n sourceEndIndex: next,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n token.sourceEndIndex = next;\n }\n } else {\n token.after = \"\";\n token.nodes = [];\n }\n pos = next + 1;\n token.sourceEndIndex = token.unclosed ? next : pos;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n token.sourceEndIndex = pos + 1;\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n parent.sourceEndIndex += after.length;\n after = \"\";\n balanced -= 1;\n stack[stack.length - 1].sourceEndIndex = pos;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === star &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === slash &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else if (\n (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&\n plus === token.charCodeAt(1) &&\n isUnicodeRange.test(token.slice(2))\n ) {\n tokens.push({\n type: \"unicode-range\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n stack[pos].sourceEndIndex = value.length;\n }\n\n return stack[0].nodes;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes, custom);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\n// Check if three code points would start a number\n// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number\nfunction likeNumber(value) {\n var code = value.charCodeAt(0);\n var nextCode;\n\n if (code === plus || code === minus) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n var nextNextCode = value.charCodeAt(2);\n\n if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code === dot) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code >= 48 && code <= 57) {\n return true;\n }\n\n return false;\n}\n\n// Consume a number\n// https://www.w3.org/TR/css-syntax-3/#consume-number\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var code;\n var nextCode;\n var nextNextCode;\n\n if (length === 0 || !likeNumber(value)) {\n return false;\n }\n\n code = value.charCodeAt(pos);\n\n if (code === plus || code === minus) {\n pos++;\n }\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n\n if (code === dot && nextCode >= 48 && nextCode <= 57) {\n pos += 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n nextNextCode = value.charCodeAt(pos + 2);\n\n if (\n (code === exp || code === EXP) &&\n ((nextCode >= 48 && nextCode <= 57) ||\n ((nextCode === plus || nextCode === minus) &&\n nextNextCode >= 48 &&\n nextNextCode <= 57))\n ) {\n pos += nextCode === plus || nextCode === minus ? 3 : 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n return {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n };\n};\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","'use strict';\n\nmodule.exports = function (obj) {\n\tif (typeof obj === 'string') { return camelCase(obj); }\n\treturn walk(obj);\n};\n\nfunction walk(obj) {\n\tif (!obj || typeof obj !== 'object') { return obj; }\n\tif (isDate(obj) || isRegex(obj)) { return obj; }\n\tif (isArray(obj)) { return map(obj, walk); }\n\treturn reduce(objectKeys(obj), function (acc, key) {\n\t\tvar camel = camelCase(key);\n\t\tacc[camel] = walk(obj[key]);\n\t\treturn acc;\n\t}, {});\n}\n\nfunction camelCase(str) {\n\treturn str.replace(/[_.-](\\w|$)/g, function (_, x) {\n\t\treturn x.toUpperCase();\n\t});\n}\n\nvar isArray = Array.isArray || function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Array]';\n};\n\nvar isDate = function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar isRegex = function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar has = Object.prototype.hasOwnProperty;\nvar objectKeys = Object.keys || function (obj) {\n\tvar keys = [];\n\tfor (var key in obj) {\n\t\tif (has.call(obj, key)) { keys.push(key); }\n\t}\n\treturn keys;\n};\n\nfunction map(xs, f) {\n\tif (xs.map) { return xs.map(f); }\n\tvar res = [];\n\tfor (var i = 0; i < xs.length; i++) {\n\t\tres.push(f(xs[i], i));\n\t}\n\treturn res;\n}\n\nfunction reduce(xs, f, acc) {\n\tif (xs.reduce) { return xs.reduce(f, acc); }\n\tfor (var i = 0; i < xs.length; i++) {\n\t\tacc = f(acc, xs[i], i);\n\t}\n\treturn acc;\n}\n","{\n \"black\": \"#000000\",\n \"silver\": \"#c0c0c0\",\n \"gray\": \"#808080\",\n \"white\": \"#ffffff\",\n \"maroon\": \"#800000\",\n \"red\": \"#ff0000\",\n \"purple\": \"#800080\",\n \"fuchsia\": \"#ff00ff\",\n \"green\": \"#008000\",\n \"lime\": \"#00ff00\",\n \"olive\": \"#808000\",\n \"yellow\": \"#ffff00\",\n \"navy\": \"#000080\",\n \"blue\": \"#0000ff\",\n \"teal\": \"#008080\",\n \"aqua\": \"#00ffff\",\n \"orange\": \"#ffa500\",\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkgrey\": \"#a9a9a9\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkslategrey\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dimgrey\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"greenyellow\": \"#adff2f\",\n \"grey\": \"#808080\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred\": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgray\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightslategrey\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370db\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"oldlace\": \"#fdf5e6\",\n \"olivedrab\": \"#6b8e23\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#db7093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"slategrey\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellowgreen\": \"#9acd32\",\n \"rebeccapurple\": \"#663399\"\n}\n","'use strict'\n\nmodule.exports = require('./colors.json')\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar parse = require('postcss-value-parser');\n\nvar parse__default = _interopDefault(parse);\n\nvar camelizeStyleName = _interopDefault(require('camelize'));\n\nvar cssColorKeywords = _interopDefault(require('css-color-keywords'));\n\nvar matchString = function matchString(node) {\n if (node.type !== 'string') return null;\n return node.value.replace(/\\\\([0-9a-f]{1,6})(?:\\s|$)/gi, function (match, charCode) {\n return String.fromCharCode(parseInt(charCode, 16));\n }).replace(/\\\\/g, '');\n};\n\nvar hexColorRe = /^(#(?:[0-9a-f]{3,4}){1,2})$/i;\nvar cssFunctionNameRe = /^(rgba?|hsla?|hwb|lab|lch|gray|color)$/;\n\nvar matchColor = function matchColor(node) {\n if (node.type === 'word' && (hexColorRe.test(node.value) || node.value in cssColorKeywords || node.value === 'transparent')) {\n return node.value;\n } else if (node.type === 'function' && cssFunctionNameRe.test(node.value)) {\n return parse.stringify(node);\n }\n\n return null;\n};\n\nvar noneRe = /^(none)$/i;\nvar autoRe = /^(auto)$/i;\nvar identRe = /(^-?[_a-z][_a-z0-9-]*$)/i; // Note if these are wrong, you'll need to change index.js too\n\nvar numberRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)$/i; // Note lengthRe is sneaky: you can omit units for 0\n\nvar lengthRe = /^(0$|(?:[+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)(?=px$))/i;\nvar unsupportedUnitRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?(ch|em|ex|rem|vh|vw|vmin|vmax|cm|mm|in|pc|pt))$/i;\nvar angleRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?(?:deg|rad))$/i;\nvar percentRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?%)$/i;\n\nvar noopToken = function noopToken(predicate) {\n return function (node) {\n return predicate(node) ? '' : null;\n };\n};\n\nvar valueForTypeToken = function valueForTypeToken(type) {\n return function (node) {\n return node.type === type ? node.value : null;\n };\n};\n\nvar regExpToken = function regExpToken(regExp, transform) {\n if (transform === void 0) {\n transform = String;\n }\n\n return function (node) {\n if (node.type !== 'word') return null;\n var match = node.value.match(regExp);\n if (match === null) return null;\n var value = transform(match[1]);\n return value;\n };\n};\n\nvar SPACE = noopToken(function (node) {\n return node.type === 'space';\n});\nvar SLASH = noopToken(function (node) {\n return node.type === 'div' && node.value === '/';\n});\nvar COMMA = noopToken(function (node) {\n return node.type === 'div' && node.value === ',';\n});\nvar WORD = valueForTypeToken('word');\nvar NONE = regExpToken(noneRe);\nvar AUTO = regExpToken(autoRe);\nvar NUMBER = regExpToken(numberRe, Number);\nvar LENGTH = regExpToken(lengthRe, Number);\nvar UNSUPPORTED_LENGTH_UNIT = regExpToken(unsupportedUnitRe);\nvar ANGLE = regExpToken(angleRe, function (angle) {\n return angle.toLowerCase();\n});\nvar PERCENT = regExpToken(percentRe);\nvar IDENT = regExpToken(identRe);\nvar STRING = matchString;\nvar COLOR = matchColor;\nvar LINE = regExpToken(/^(none|underline|line-through)$/i);\n\nvar aspectRatio = function aspectRatio(tokenStream) {\n var aspectRatio = tokenStream.expect(NUMBER);\n\n if (tokenStream.hasTokens()) {\n tokenStream.expect(SLASH);\n aspectRatio /= tokenStream.expect(NUMBER);\n }\n\n return {\n aspectRatio: aspectRatio\n };\n};\n\nvar BORDER_STYLE = regExpToken(/^(solid|dashed|dotted)$/);\nvar defaultBorderWidth = 1;\nvar defaultBorderColor = 'black';\nvar defaultBorderStyle = 'solid';\n\nvar border = function border(tokenStream) {\n var borderWidth;\n var borderColor;\n var borderStyle;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n borderWidth: 0,\n borderColor: 'black',\n borderStyle: 'solid'\n };\n }\n\n var partsParsed = 0;\n\n while (partsParsed < 3 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (borderWidth === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n borderWidth = tokenStream.lastValue;\n } else if (borderColor === undefined && tokenStream.matches(COLOR)) {\n borderColor = tokenStream.lastValue;\n } else if (borderStyle === undefined && tokenStream.matches(BORDER_STYLE)) {\n borderStyle = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (borderWidth === undefined) borderWidth = defaultBorderWidth;\n if (borderColor === undefined) borderColor = defaultBorderColor;\n if (borderStyle === undefined) borderStyle = defaultBorderStyle;\n return {\n borderWidth: borderWidth,\n borderColor: borderColor,\n borderStyle: borderStyle\n };\n};\n\nvar directionFactory = function directionFactory(_ref) {\n var _ref$types = _ref.types,\n types = _ref$types === void 0 ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types,\n _ref$directions = _ref.directions,\n directions = _ref$directions === void 0 ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,\n _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === void 0 ? '' : _ref$prefix,\n _ref$suffix = _ref.suffix,\n suffix = _ref$suffix === void 0 ? '' : _ref$suffix;\n return function (tokenStream) {\n var _ref2;\n\n var values = []; // borderWidth doesn't currently allow a percent value, but may do in the future\n\n values.push(tokenStream.expect.apply(tokenStream, types));\n\n while (values.length < 4 && tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n values.push(tokenStream.expect.apply(tokenStream, types));\n }\n\n tokenStream.expectEmpty();\n var top = values[0],\n _values$ = values[1],\n right = _values$ === void 0 ? top : _values$,\n _values$2 = values[2],\n bottom = _values$2 === void 0 ? top : _values$2,\n _values$3 = values[3],\n left = _values$3 === void 0 ? right : _values$3;\n\n var keyFor = function keyFor(n) {\n return \"\" + prefix + directions[n] + suffix;\n };\n\n return _ref2 = {}, _ref2[keyFor(0)] = top, _ref2[keyFor(1)] = right, _ref2[keyFor(2)] = bottom, _ref2[keyFor(3)] = left, _ref2;\n };\n};\n\nvar parseShadowOffset = function parseShadowOffset(tokenStream) {\n var width = tokenStream.expect(LENGTH);\n var height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width;\n tokenStream.expectEmpty();\n return {\n width: width,\n height: height\n };\n};\n\nvar parseShadow = function parseShadow(tokenStream) {\n var offsetX;\n var offsetY;\n var radius;\n var color;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n offset: {\n width: 0,\n height: 0\n },\n radius: 0,\n color: 'black'\n };\n }\n\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n\n if (offsetX === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n offsetX = tokenStream.lastValue;\n tokenStream.expect(SPACE);\n offsetY = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n radius = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (color === undefined && tokenStream.matches(COLOR)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n didParseFirst = true;\n }\n\n if (offsetX === undefined) tokenStream[\"throw\"]();\n return {\n offset: {\n width: offsetX,\n height: offsetY\n },\n radius: radius !== undefined ? radius : 0,\n color: color !== undefined ? color : 'black'\n };\n};\n\nvar boxShadow = function boxShadow(tokenStream) {\n var _parseShadow = parseShadow(tokenStream),\n offset = _parseShadow.offset,\n radius = _parseShadow.radius,\n color = _parseShadow.color;\n\n return {\n shadowOffset: offset,\n shadowRadius: radius,\n shadowColor: color,\n shadowOpacity: 1\n };\n};\n\nvar defaultFlexGrow = 1;\nvar defaultFlexShrink = 1;\nvar defaultFlexBasis = 0;\n\nvar flex = function flex(tokenStream) {\n var flexGrow;\n var flexShrink;\n var flexBasis;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto'\n };\n }\n\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) {\n return {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto'\n };\n }\n\n tokenStream.rewind();\n var partsParsed = 0;\n\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (flexGrow === undefined && tokenStream.matches(NUMBER)) {\n flexGrow = tokenStream.lastValue;\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE) && tokenStream.matches(NUMBER)) {\n flexShrink = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (flexBasis === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT)) {\n flexBasis = tokenStream.lastValue;\n } else if (flexBasis === undefined && tokenStream.matches(AUTO)) {\n flexBasis = 'auto';\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (flexGrow === undefined) flexGrow = defaultFlexGrow;\n if (flexShrink === undefined) flexShrink = defaultFlexShrink;\n if (flexBasis === undefined) flexBasis = defaultFlexBasis;\n return {\n flexGrow: flexGrow,\n flexShrink: flexShrink,\n flexBasis: flexBasis\n };\n};\n\nvar FLEX_WRAP = regExpToken(/(nowrap|wrap|wrap-reverse)/);\nvar FLEX_DIRECTION = regExpToken(/(row|row-reverse|column|column-reverse)/);\nvar defaultFlexWrap = 'nowrap';\nvar defaultFlexDirection = 'row';\n\nvar flexFlow = function flexFlow(tokenStream) {\n var flexWrap;\n var flexDirection;\n var partsParsed = 0;\n\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (flexWrap === undefined && tokenStream.matches(FLEX_WRAP)) {\n flexWrap = tokenStream.lastValue;\n } else if (flexDirection === undefined && tokenStream.matches(FLEX_DIRECTION)) {\n flexDirection = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (flexWrap === undefined) flexWrap = defaultFlexWrap;\n if (flexDirection === undefined) flexDirection = defaultFlexDirection;\n return {\n flexWrap: flexWrap,\n flexDirection: flexDirection\n };\n};\n\nvar fontFamily = function fontFamily(tokenStream) {\n var fontFamily;\n\n if (tokenStream.matches(STRING)) {\n fontFamily = tokenStream.lastValue;\n } else {\n fontFamily = tokenStream.expect(IDENT);\n\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n var nextIdent = tokenStream.expect(IDENT);\n fontFamily += \" \" + nextIdent;\n }\n }\n\n tokenStream.expectEmpty();\n return {\n fontFamily: fontFamily\n };\n};\n\nvar NORMAL = regExpToken(/^(normal)$/);\nvar STYLE = regExpToken(/^(italic)$/);\nvar WEIGHT = regExpToken(/^([1-9]00|bold)$/);\nvar VARIANT = regExpToken(/^(small-caps)$/);\nvar defaultFontStyle = 'normal';\nvar defaultFontWeight = 'normal';\nvar defaultFontVariant = [];\n\nvar font = function font(tokenStream) {\n var fontStyle;\n var fontWeight;\n var fontVariant; // let fontSize;\n\n var lineHeight; // let fontFamily;\n\n var numStyleWeightVariantMatched = 0;\n\n while (numStyleWeightVariantMatched < 3 && tokenStream.hasTokens()) {\n if (tokenStream.matches(NORMAL)) ;else if (fontStyle === undefined && tokenStream.matches(STYLE)) {\n fontStyle = tokenStream.lastValue;\n } else if (fontWeight === undefined && tokenStream.matches(WEIGHT)) {\n fontWeight = tokenStream.lastValue;\n } else if (fontVariant === undefined && tokenStream.matches(VARIANT)) {\n fontVariant = [tokenStream.lastValue];\n } else {\n break;\n }\n tokenStream.expect(SPACE);\n numStyleWeightVariantMatched += 1;\n }\n\n var fontSize = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n\n if (tokenStream.matches(SLASH)) {\n lineHeight = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n }\n\n tokenStream.expect(SPACE);\n\n var _fontFamily = fontFamily(tokenStream),\n fontFamily$1 = _fontFamily.fontFamily;\n\n if (fontStyle === undefined) fontStyle = defaultFontStyle;\n if (fontWeight === undefined) fontWeight = defaultFontWeight;\n if (fontVariant === undefined) fontVariant = defaultFontVariant;\n var out = {\n fontStyle: fontStyle,\n fontWeight: fontWeight,\n fontVariant: fontVariant,\n fontSize: fontSize,\n fontFamily: fontFamily$1\n };\n if (lineHeight !== undefined) out.lineHeight = lineHeight;\n return out;\n};\n\nvar fontVariant = function fontVariant(tokenStream) {\n var values = [tokenStream.expect(IDENT)];\n\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n values.push(tokenStream.expect(IDENT));\n }\n\n return {\n fontVariant: values\n };\n};\n\nvar ALIGN_CONTENT = regExpToken(/(flex-(?:start|end)|center|stretch|space-(?:between|around))/);\nvar JUSTIFY_CONTENT = regExpToken(/(flex-(?:start|end)|center|space-(?:between|around|evenly))/);\n\nvar placeContent = function placeContent(tokenStream) {\n var alignContent = tokenStream.expect(ALIGN_CONTENT);\n var justifyContent;\n\n if (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n justifyContent = tokenStream.expect(JUSTIFY_CONTENT);\n } else {\n justifyContent = 'stretch';\n }\n\n tokenStream.expectEmpty();\n return {\n alignContent: alignContent,\n justifyContent: justifyContent\n };\n};\n\nvar STYLE$1 = regExpToken(/^(solid|double|dotted|dashed)$/);\nvar defaultTextDecorationLine = 'none';\nvar defaultTextDecorationStyle = 'solid';\nvar defaultTextDecorationColor = 'black';\n\nvar textDecoration = function textDecoration(tokenStream) {\n var line;\n var style;\n var color;\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n\n if (line === undefined && tokenStream.matches(LINE)) {\n var lines = [tokenStream.lastValue.toLowerCase()];\n tokenStream.saveRewindPoint();\n\n if (lines[0] !== 'none' && tokenStream.matches(SPACE) && tokenStream.matches(LINE)) {\n lines.push(tokenStream.lastValue.toLowerCase()); // Underline comes before line-through\n\n lines.sort().reverse();\n } else {\n tokenStream.rewind();\n }\n\n line = lines.join(' ');\n } else if (style === undefined && tokenStream.matches(STYLE$1)) {\n style = tokenStream.lastValue;\n } else if (color === undefined && tokenStream.matches(COLOR)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n didParseFirst = true;\n }\n\n return {\n textDecorationLine: line !== undefined ? line : defaultTextDecorationLine,\n textDecorationColor: color !== undefined ? color : defaultTextDecorationColor,\n textDecorationStyle: style !== undefined ? style : defaultTextDecorationStyle\n };\n};\n\nvar textDecorationLine = function textDecorationLine(tokenStream) {\n var lines = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n lines.push(tokenStream.expect(LINE).toLowerCase());\n didParseFirst = true;\n }\n\n lines.sort().reverse();\n return {\n textDecorationLine: lines.join(' ')\n };\n};\n\nvar textShadow = function textShadow(tokenStream) {\n var _parseShadow2 = parseShadow(tokenStream),\n offset = _parseShadow2.offset,\n radius = _parseShadow2.radius,\n color = _parseShadow2.color;\n\n return {\n textShadowOffset: offset,\n textShadowRadius: radius,\n textShadowColor: color\n };\n};\n\nvar oneOfType = function oneOfType(tokenType) {\n return function (functionStream) {\n var value = functionStream.expect(tokenType);\n functionStream.expectEmpty();\n return value;\n };\n};\n\nvar singleNumber = oneOfType(NUMBER);\nvar singleLength = oneOfType(LENGTH);\nvar singleAngle = oneOfType(ANGLE);\n\nvar xyTransformFactory = function xyTransformFactory(tokenType) {\n return function (key, valueIfOmitted) {\n return function (functionStream) {\n var _ref3, _ref4;\n\n var x = functionStream.expect(tokenType);\n var y;\n\n if (functionStream.hasTokens()) {\n functionStream.expect(COMMA);\n y = functionStream.expect(tokenType);\n } else if (valueIfOmitted !== undefined) {\n y = valueIfOmitted;\n } else {\n // Assumption, if x === y, then we can omit XY\n // I.e. scale(5) => [{ scale: 5 }] rather than [{ scaleX: 5 }, { scaleY: 5 }]\n return x;\n }\n\n functionStream.expectEmpty();\n return [(_ref3 = {}, _ref3[key + \"Y\"] = y, _ref3), (_ref4 = {}, _ref4[key + \"X\"] = x, _ref4)];\n };\n };\n};\n\nvar xyNumber = xyTransformFactory(NUMBER);\nvar xyLength = xyTransformFactory(LENGTH);\nvar xyAngle = xyTransformFactory(ANGLE);\nvar partTransforms = {\n perspective: singleNumber,\n scale: xyNumber('scale'),\n scaleX: singleNumber,\n scaleY: singleNumber,\n translate: xyLength('translate', 0),\n translateX: singleLength,\n translateY: singleLength,\n rotate: singleAngle,\n rotateX: singleAngle,\n rotateY: singleAngle,\n rotateZ: singleAngle,\n skewX: singleAngle,\n skewY: singleAngle,\n skew: xyAngle('skew', '0deg')\n};\n\nvar transform = function transform(tokenStream) {\n var transforms = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n var functionStream = tokenStream.expectFunction();\n var functionName = functionStream.functionName;\n var transformedValues = partTransforms[functionName](functionStream);\n\n if (!Array.isArray(transformedValues)) {\n var _ref5;\n\n transformedValues = [(_ref5 = {}, _ref5[functionName] = transformedValues, _ref5)];\n }\n\n transforms = transformedValues.concat(transforms);\n didParseFirst = true;\n }\n\n return {\n transform: transforms\n };\n};\n\nvar background = function background(tokenStream) {\n return {\n backgroundColor: tokenStream.expect(COLOR)\n };\n};\n\nvar borderColor = directionFactory({\n types: [COLOR],\n prefix: 'border',\n suffix: 'Color'\n});\nvar borderRadius = directionFactory({\n directions: ['TopLeft', 'TopRight', 'BottomRight', 'BottomLeft'],\n prefix: 'border',\n suffix: 'Radius'\n});\nvar borderWidth = directionFactory({\n prefix: 'border',\n suffix: 'Width'\n});\nvar margin = directionFactory({\n types: [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT, AUTO],\n prefix: 'margin'\n});\nvar padding = directionFactory({\n prefix: 'padding'\n});\n\nvar fontWeight = function fontWeight(tokenStream) {\n return {\n fontWeight: tokenStream.expect(WORD) // Also match numbers as strings\n\n };\n};\n\nvar shadowOffset = function shadowOffset(tokenStream) {\n return {\n shadowOffset: parseShadowOffset(tokenStream)\n };\n};\n\nvar textShadowOffset = function textShadowOffset(tokenStream) {\n return {\n textShadowOffset: parseShadowOffset(tokenStream)\n };\n};\n\nvar transforms = {\n aspectRatio: aspectRatio,\n background: background,\n border: border,\n borderColor: borderColor,\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n boxShadow: boxShadow,\n flex: flex,\n flexFlow: flexFlow,\n font: font,\n fontFamily: fontFamily,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n margin: margin,\n padding: padding,\n placeContent: placeContent,\n shadowOffset: shadowOffset,\n textShadow: textShadow,\n textShadowOffset: textShadowOffset,\n textDecoration: textDecoration,\n textDecorationLine: textDecorationLine,\n transform: transform\n};\nvar propertiesWithoutUnits;\n\nif (process.env.NODE_ENV !== 'production') {\n propertiesWithoutUnits = ['aspectRatio', 'elevation', 'flexGrow', 'flexShrink', 'opacity', 'shadowOpacity', 'zIndex'];\n}\n\nvar devPropertiesWithUnitsRegExp = propertiesWithoutUnits != null ? new RegExp(propertiesWithoutUnits.join('|')) : null;\nvar SYMBOL_MATCH = 'SYMBOL_MATCH';\n\nvar TokenStream =\n/*#__PURE__*/\nfunction () {\n function TokenStream(nodes, parent) {\n this.index = 0;\n this.nodes = nodes;\n this.functionName = parent != null ? parent.value : null;\n this.lastValue = null;\n this.rewindIndex = -1;\n }\n\n var _proto = TokenStream.prototype;\n\n _proto.hasTokens = function hasTokens() {\n return this.index <= this.nodes.length - 1;\n };\n\n _proto[SYMBOL_MATCH] = function () {\n if (!this.hasTokens()) return null;\n var node = this.nodes[this.index];\n\n for (var i = 0; i < arguments.length; i += 1) {\n var tokenDescriptor = i < 0 || arguments.length <= i ? undefined : arguments[i];\n var value = tokenDescriptor(node);\n\n if (value !== null) {\n this.index += 1;\n this.lastValue = value;\n return value;\n }\n }\n\n return null;\n };\n\n _proto.matches = function matches() {\n return this[SYMBOL_MATCH].apply(this, arguments) !== null;\n };\n\n _proto.expect = function expect() {\n var value = this[SYMBOL_MATCH].apply(this, arguments);\n return value !== null ? value : this[\"throw\"]();\n };\n\n _proto.matchesFunction = function matchesFunction() {\n var node = this.nodes[this.index];\n if (node.type !== 'function') return null;\n var value = new TokenStream(node.nodes, node);\n this.index += 1;\n this.lastValue = null;\n return value;\n };\n\n _proto.expectFunction = function expectFunction() {\n var value = this.matchesFunction();\n return value !== null ? value : this[\"throw\"]();\n };\n\n _proto.expectEmpty = function expectEmpty() {\n if (this.hasTokens()) this[\"throw\"]();\n };\n\n _proto[\"throw\"] = function _throw() {\n throw new Error(\"Unexpected token type: \" + this.nodes[this.index].type);\n };\n\n _proto.saveRewindPoint = function saveRewindPoint() {\n this.rewindIndex = this.index;\n };\n\n _proto.rewind = function rewind() {\n if (this.rewindIndex === -1) throw new Error('Internal error');\n this.index = this.rewindIndex;\n this.lastValue = null;\n };\n\n return TokenStream;\n}();\n/* eslint-disable no-param-reassign */\n// Note if this is wrong, you'll need to change tokenTypes.js too\n\n\nvar numberOrLengthRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)(?:px)?$/i;\nvar numberOnlyRe = /^[+-]?(?:\\d*\\.\\d*|[1-9]\\d*)(?:e[+-]?\\d+)?$/i;\nvar boolRe = /^true|false$/i;\nvar nullRe = /^null$/i;\nvar undefinedRe = /^undefined$/i; // Undocumented export\n\nvar transformRawValue = function transformRawValue(propName, value) {\n if (process.env.NODE_ENV !== 'production') {\n var needsUnit = !devPropertiesWithUnitsRegExp.test(propName);\n var isNumberWithoutUnit = numberOnlyRe.test(value);\n\n if (needsUnit && isNumberWithoutUnit) {\n // eslint-disable-next-line no-console\n console.warn(\"Expected style \\\"\" + propName + \": \" + value + \"\\\" to contain units\");\n }\n\n if (!needsUnit && value !== '0' && !isNumberWithoutUnit) {\n // eslint-disable-next-line no-console\n console.warn(\"Expected style \\\"\" + propName + \": \" + value + \"\\\" to be unitless\");\n }\n }\n\n var numberMatch = value.match(numberOrLengthRe);\n if (numberMatch !== null) return Number(numberMatch[1]);\n var boolMatch = value.match(boolRe);\n if (boolMatch !== null) return boolMatch[0].toLowerCase() === 'true';\n var nullMatch = value.match(nullRe);\n if (nullMatch !== null) return null;\n var undefinedMatch = value.match(undefinedRe);\n if (undefinedMatch !== null) return undefined;\n return value;\n};\n\nvar baseTransformShorthandValue = function baseTransformShorthandValue(propName, value) {\n var ast = parse__default(value);\n var tokenStream = new TokenStream(ast.nodes);\n return transforms[propName](tokenStream);\n};\n\nvar transformShorthandValue = process.env.NODE_ENV === 'production' ? baseTransformShorthandValue : function (propName, value) {\n try {\n return baseTransformShorthandValue(propName, value);\n } catch (e) {\n throw new Error(\"Failed to parse declaration \\\"\" + propName + \": \" + value + \"\\\"\");\n }\n};\n\nvar getStylesForProperty = function getStylesForProperty(propName, inputValue, allowShorthand) {\n var _ref6;\n\n var isRawValue = allowShorthand === false || !(propName in transforms);\n var value = inputValue.trim();\n var propValues = isRawValue ? (_ref6 = {}, _ref6[propName] = transformRawValue(propName, value), _ref6) : transformShorthandValue(propName, value);\n return propValues;\n};\n\nvar getPropertyName = function getPropertyName(propName) {\n var isCustomProp = /^--\\w+/.test(propName);\n\n if (isCustomProp) {\n return propName;\n }\n\n return camelizeStyleName(propName);\n};\n\nvar index = function index(rules, shorthandBlacklist) {\n if (shorthandBlacklist === void 0) {\n shorthandBlacklist = [];\n }\n\n return rules.reduce(function (accum, rule) {\n var propertyName = getPropertyName(rule[0]);\n var value = rule[1];\n var allowShorthand = shorthandBlacklist.indexOf(propertyName) === -1;\n return Object.assign(accum, getStylesForProperty(propertyName, value, allowShorthand));\n }, {});\n};\n\nexports[\"default\"] = index;\nexports.getPropertyName = getPropertyName;\nexports.getStylesForProperty = getStylesForProperty;\nexports.transformRawValue = transformRawValue;\n","/*!\n * https://github.com/gilmoreorless/css-background-parser\n * Copyright © 2015 Gilmore Davidson under the MIT license: http://gilmoreorless.mit-license.org/\n */\n(function (exports) {\n\n function BackgroundList(backgrounds) {\n if (!(this instanceof BackgroundList)) {\n return new BackgroundList();\n }\n this.backgrounds = backgrounds || [];\n }\n\n BackgroundList.prototype.toString = function () {\n return this.backgrounds.join(', ');\n };\n\n\n function Background(props) {\n if (!(this instanceof Background)) {\n return new Background(props);\n }\n props = props || {};\n var bg = this;\n\n function defprop(name, defaultValue) {\n bg[name] = (name in props) ? props[name] : defaultValue;\n }\n\n // http://www.w3.org/TR/css3-background/#backgrounds\n defprop('color', '');\n defprop('image', 'none');\n defprop('attachment', 'scroll');\n defprop('clip', 'border-box');\n defprop('origin', 'padding-box');\n defprop('position', '0% 0%');\n defprop('repeat', 'repeat');\n defprop('size', 'auto');\n }\n\n Background.prototype.toString = function () {\n var list = [\n this.image,\n this.repeat,\n this.attachment,\n this.position + ' / ' + this.size,\n this.origin,\n this.clip\n ];\n if (this.color) {\n list.unshift(this.color);\n }\n return list.join(' ');\n };\n\n exports.BackgroundList = BackgroundList;\n exports.Background = Background;\n\n\n function parseImages(cssText) {\n var images = [];\n var tokens = /[,\\(\\)]/;\n var parens = 0;\n var buffer = '';\n\n if (cssText == null) {\n return images;\n }\n\n while (cssText.length) {\n var match = tokens.exec(cssText);\n if (!match) {\n break;\n }\n var char = match[0];\n var ignoreChar = false;\n switch (char) {\n case ',':\n if (!parens) {\n images.push(buffer.trim());\n buffer = '';\n ignoreChar = true;\n }\n break;\n case '(':\n parens++;\n break;\n case ')':\n parens--;\n break;\n }\n\n var index = match.index + 1;\n buffer += cssText.slice(0, ignoreChar ? index - 1 : index);\n cssText = cssText.slice(index);\n }\n\n if (buffer.length || cssText.length) {\n images.push((buffer + cssText).trim());\n }\n\n return images;\n }\n\n // Helper for .map()\n function trim(str) {\n return str.trim();\n }\n\n function parseSimpleList(cssText) {\n return (cssText || '').split(',').map(trim);\n }\n\n exports.parseElementStyle = function (styleObject) {\n var list = new BackgroundList();\n if (styleObject == null) {\n return list;\n }\n\n var bgImage = parseImages(styleObject.backgroundImage);\n var bgColor = styleObject.backgroundColor;\n var bgAttachment = parseSimpleList(styleObject.backgroundAttachment);\n var bgClip = parseSimpleList(styleObject.backgroundClip);\n var bgOrigin = parseSimpleList(styleObject.backgroundOrigin);\n var bgPosition = parseSimpleList(styleObject.backgroundPosition);\n var bgRepeat = parseSimpleList(styleObject.backgroundRepeat);\n var bgSize = parseSimpleList(styleObject.backgroundSize);\n var background;\n\n for (var i = 0, ii = bgImage.length; i < ii; i++) {\n background = new Background({\n image: bgImage[i],\n attachment: bgAttachment[i % bgAttachment.length],\n clip: bgClip[i % bgClip.length],\n origin: bgOrigin[i % bgOrigin.length],\n position: bgPosition[i % bgPosition.length],\n repeat: bgRepeat[i % bgRepeat.length],\n size: bgSize[i % bgSize.length]\n });\n if (i === ii - 1) {\n background.color = bgColor;\n }\n list.backgrounds.push(background);\n }\n\n return list;\n };\n\n // exports.parseCssString = function (cssString) {\n // return new Background();\n // };\n\n // exports.parseBackgroundValue = function (cssString) {\n // return new Background();\n // };\n\n})((function (root) {\n // CommonJS\n if (typeof module !== 'undefined' && module.exports !== undefined) return module.exports;\n // Global `cssBgParser`\n return (root.cssBgParser = {});\n})(this));\n","const VALUES_REG = /,(?![^\\(]*\\))/\nconst PARTS_REG = /\\s(?![^(]*\\))/\nconst LENGTH_REG = /^[0-9]+[a-zA-Z%]+?$/\n\nconst parseValue = str => {\n const parts = str.split(PARTS_REG)\n const inset = parts.includes('inset')\n const last = parts.slice(-1)[0]\n const color = !isLength(last) ? last : undefined\n\n const nums = parts\n .filter(n => n !== 'inset')\n .filter(n => n !== color)\n .map(toNum)\n const [ offsetX, offsetY, blurRadius, spreadRadius ] = nums\n\n return {\n inset,\n offsetX,\n offsetY,\n blurRadius,\n spreadRadius,\n color\n }\n}\n\nconst stringifyValue = obj => {\n const {\n inset,\n offsetX = 0,\n offsetY = 0,\n blurRadius = 0,\n spreadRadius,\n color\n } = obj || {}\n\n return [\n (inset ? 'inset' : null),\n offsetX,\n offsetY,\n blurRadius ,\n spreadRadius,\n color\n ].filter(v => v !== null && v !== undefined)\n .map(toPx)\n .map(s => ('' + s).trim())\n .join(' ')\n}\n\nconst isLength = v => v === '0' || LENGTH_REG.test(v)\nconst toNum = v => {\n if (!/px$/.test(v) && v !== '0') return v\n const n = parseFloat(v)\n return !isNaN(n) ? n : v\n}\nconst toPx = n => typeof n === 'number' && n !== 0 ? (n + 'px') : n\n\nconst parse = str => str.split(VALUES_REG).map(s => s.trim()).map(parseValue)\nconst stringify = arr => arr.map(stringifyValue).join(', ')\n\nmodule.exports = {\n parse,\n stringify\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nconst hexCharacters = 'a-f\\\\d';\nconst match3or4Hex = `#?[${hexCharacters}]{3}[${hexCharacters}]?`;\nconst match6or8Hex = `#?[${hexCharacters}]{6}([${hexCharacters}]{2})?`;\nconst nonHexChars = new RegExp(`[^#${hexCharacters}]`, 'gi');\nconst validHexSize = new RegExp(`^${match3or4Hex}$|^${match6or8Hex}$`, 'i');\n\nmodule.exports = (hex, options = {}) => {\n\tif (typeof hex !== 'string' || nonHexChars.test(hex) || !validHexSize.test(hex)) {\n\t\tthrow new TypeError('Expected a valid hex string');\n\t}\n\n\thex = hex.replace(/^#/, '');\n\tlet alphaFromHex = 1;\n\n\tif (hex.length === 8) {\n\t\talphaFromHex = Number.parseInt(hex.slice(6, 8), 16) / 255;\n\t\thex = hex.slice(0, 6);\n\t}\n\n\tif (hex.length === 4) {\n\t\talphaFromHex = Number.parseInt(hex.slice(3, 4).repeat(2), 16) / 255;\n\t\thex = hex.slice(0, 3);\n\t}\n\n\tif (hex.length === 3) {\n\t\thex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n\t}\n\n\tconst number = Number.parseInt(hex, 16);\n\tconst red = number >> 16;\n\tconst green = (number >> 8) & 255;\n\tconst blue = number & 255;\n\tconst alpha = typeof options.alpha === 'number' ? options.alpha : alphaFromHex;\n\n\tif (options.format === 'array') {\n\t\treturn [red, green, blue, alpha];\n\t}\n\n\tif (options.format === 'css') {\n\t\tconst alphaString = alpha === 1 ? '' : ` / ${Number((alpha * 100).toFixed(2))}%`;\n\t\treturn `rgb(${red} ${green} ${blue}${alphaString})`;\n\t}\n\n\treturn {red, green, blue, alpha};\n};\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","var YGEnums={},ALIGN_AUTO=YGEnums.ALIGN_AUTO=0,ALIGN_FLEX_START=YGEnums.ALIGN_FLEX_START=1,ALIGN_CENTER=YGEnums.ALIGN_CENTER=2,ALIGN_FLEX_END=YGEnums.ALIGN_FLEX_END=3,ALIGN_STRETCH=YGEnums.ALIGN_STRETCH=4,ALIGN_BASELINE=YGEnums.ALIGN_BASELINE=5,ALIGN_SPACE_BETWEEN=YGEnums.ALIGN_SPACE_BETWEEN=6,ALIGN_SPACE_AROUND=YGEnums.ALIGN_SPACE_AROUND=7,DIMENSION_WIDTH=YGEnums.DIMENSION_WIDTH=0,DIMENSION_HEIGHT=YGEnums.DIMENSION_HEIGHT=1,DIRECTION_INHERIT=YGEnums.DIRECTION_INHERIT=0,DIRECTION_LTR=YGEnums.DIRECTION_LTR=1,DIRECTION_RTL=YGEnums.DIRECTION_RTL=2,DISPLAY_FLEX=YGEnums.DISPLAY_FLEX=0,DISPLAY_NONE=YGEnums.DISPLAY_NONE=1,EDGE_LEFT=YGEnums.EDGE_LEFT=0,EDGE_TOP=YGEnums.EDGE_TOP=1,EDGE_RIGHT=YGEnums.EDGE_RIGHT=2,EDGE_BOTTOM=YGEnums.EDGE_BOTTOM=3,EDGE_START=YGEnums.EDGE_START=4,EDGE_END=YGEnums.EDGE_END=5,EDGE_HORIZONTAL=YGEnums.EDGE_HORIZONTAL=6,EDGE_VERTICAL=YGEnums.EDGE_VERTICAL=7,EDGE_ALL=YGEnums.EDGE_ALL=8,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=YGEnums.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=0,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=YGEnums.EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=1,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=YGEnums.EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=2,FLEX_DIRECTION_COLUMN=YGEnums.FLEX_DIRECTION_COLUMN=0,FLEX_DIRECTION_COLUMN_REVERSE=YGEnums.FLEX_DIRECTION_COLUMN_REVERSE=1,FLEX_DIRECTION_ROW=YGEnums.FLEX_DIRECTION_ROW=2,FLEX_DIRECTION_ROW_REVERSE=YGEnums.FLEX_DIRECTION_ROW_REVERSE=3,GUTTER_COLUMN=YGEnums.GUTTER_COLUMN=0,GUTTER_ROW=YGEnums.GUTTER_ROW=1,GUTTER_ALL=YGEnums.GUTTER_ALL=2,JUSTIFY_FLEX_START=YGEnums.JUSTIFY_FLEX_START=0,JUSTIFY_CENTER=YGEnums.JUSTIFY_CENTER=1,JUSTIFY_FLEX_END=YGEnums.JUSTIFY_FLEX_END=2,JUSTIFY_SPACE_BETWEEN=YGEnums.JUSTIFY_SPACE_BETWEEN=3,JUSTIFY_SPACE_AROUND=YGEnums.JUSTIFY_SPACE_AROUND=4,JUSTIFY_SPACE_EVENLY=YGEnums.JUSTIFY_SPACE_EVENLY=5,LOG_LEVEL_ERROR=YGEnums.LOG_LEVEL_ERROR=0,LOG_LEVEL_WARN=YGEnums.LOG_LEVEL_WARN=1,LOG_LEVEL_INFO=YGEnums.LOG_LEVEL_INFO=2,LOG_LEVEL_DEBUG=YGEnums.LOG_LEVEL_DEBUG=3,LOG_LEVEL_VERBOSE=YGEnums.LOG_LEVEL_VERBOSE=4,LOG_LEVEL_FATAL=YGEnums.LOG_LEVEL_FATAL=5,MEASURE_MODE_UNDEFINED=YGEnums.MEASURE_MODE_UNDEFINED=0,MEASURE_MODE_EXACTLY=YGEnums.MEASURE_MODE_EXACTLY=1,MEASURE_MODE_AT_MOST=YGEnums.MEASURE_MODE_AT_MOST=2,NODE_TYPE_DEFAULT=YGEnums.NODE_TYPE_DEFAULT=0,NODE_TYPE_TEXT=YGEnums.NODE_TYPE_TEXT=1,OVERFLOW_VISIBLE=YGEnums.OVERFLOW_VISIBLE=0,OVERFLOW_HIDDEN=YGEnums.OVERFLOW_HIDDEN=1,OVERFLOW_SCROLL=YGEnums.OVERFLOW_SCROLL=2,POSITION_TYPE_STATIC=YGEnums.POSITION_TYPE_STATIC=0,POSITION_TYPE_RELATIVE=YGEnums.POSITION_TYPE_RELATIVE=1,POSITION_TYPE_ABSOLUTE=YGEnums.POSITION_TYPE_ABSOLUTE=2,PRINT_OPTIONS_LAYOUT=YGEnums.PRINT_OPTIONS_LAYOUT=1,PRINT_OPTIONS_STYLE=YGEnums.PRINT_OPTIONS_STYLE=2,PRINT_OPTIONS_CHILDREN=YGEnums.PRINT_OPTIONS_CHILDREN=4,UNIT_UNDEFINED=YGEnums.UNIT_UNDEFINED=0,UNIT_POINT=YGEnums.UNIT_POINT=1,UNIT_PERCENT=YGEnums.UNIT_PERCENT=2,UNIT_AUTO=YGEnums.UNIT_AUTO=3,WRAP_NO_WRAP=YGEnums.WRAP_NO_WRAP=0,WRAP_WRAP=YGEnums.WRAP_WRAP=1,WRAP_WRAP_REVERSE=YGEnums.WRAP_WRAP_REVERSE=2;let CONSTANTS=YGEnums;var wrapAsm=E=>{function _(E,_,T){let N=E[_];E[_]=function(...E){return T.call(this,N,...E)}}for(let T of[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"]){let N={[YGEnums.UNIT_POINT]:E.Node.prototype[T],[YGEnums.UNIT_PERCENT]:E.Node.prototype[`${T}Percent`],[YGEnums.UNIT_AUTO]:E.Node.prototype[`${T}Auto`]};_(E.Node.prototype,T,function(E,..._){let I,L;let O=_.pop();if(\"auto\"===O)I=YGEnums.UNIT_AUTO,L=void 0;else if(\"object\"==typeof O)I=O.unit,L=O.valueOf();else if(I=\"string\"==typeof O&&O.endsWith(\"%\")?YGEnums.UNIT_PERCENT:YGEnums.UNIT_POINT,L=parseFloat(O),!Number.isNaN(O)&&Number.isNaN(L))throw Error(`Invalid value ${O} for ${T}`);if(!N[I])throw Error(`Failed to execute \"${T}\": Unsupported unit '${O}'`);return void 0!==L?N[I].call(this,..._,L):N[I].call(this,..._)})}function T(_){return E.MeasureCallback.implement({measure:(...E)=>{let{width:T,height:N}=_(...E);return{width:T??NaN,height:N??NaN}}})}function N(_){return E.DirtiedCallback.implement({dirtied:_})}return _(E.Node.prototype,\"setMeasureFunc\",function(E,_){return _?E.call(this,T(_)):this.unsetMeasureFunc()}),_(E.Node.prototype,\"setDirtiedFunc\",function(E,_){E.call(this,N(_))}),_(E.Config.prototype,\"free\",function(){E.Config.destroy(this)}),_(E.Node,\"create\",(_,T)=>T?E.Node.createWithConfig(T):E.Node.createDefault()),_(E.Node.prototype,\"free\",function(){E.Node.destroy(this)}),_(E.Node.prototype,\"freeRecursive\",function(){for(let E=0,_=this.getChildCount();E<_;++E)this.getChild(0).freeRecursive();this.free()}),_(E.Node.prototype,\"calculateLayout\",function(E,_=NaN,T=NaN,N=YGEnums.DIRECTION_LTR){return E.call(this,_,T,N)}),{Config:E.Config,Node:E.Node,...YGEnums}};export{OVERFLOW_HIDDEN as $,ALIGN_AUTO as A,FLEX_DIRECTION_ROW as B,FLEX_DIRECTION_ROW_REVERSE as C,DIMENSION_WIDTH as D,EDGE_LEFT as E,FLEX_DIRECTION_COLUMN as F,GUTTER_COLUMN as G,GUTTER_ROW as H,GUTTER_ALL as I,JUSTIFY_FLEX_START as J,JUSTIFY_CENTER as K,JUSTIFY_FLEX_END as L,JUSTIFY_SPACE_BETWEEN as M,JUSTIFY_SPACE_AROUND as N,JUSTIFY_SPACE_EVENLY as O,LOG_LEVEL_ERROR as P,LOG_LEVEL_WARN as Q,LOG_LEVEL_INFO as R,LOG_LEVEL_DEBUG as S,LOG_LEVEL_VERBOSE as T,LOG_LEVEL_FATAL as U,MEASURE_MODE_UNDEFINED as V,MEASURE_MODE_EXACTLY as W,MEASURE_MODE_AT_MOST as X,NODE_TYPE_DEFAULT as Y,NODE_TYPE_TEXT as Z,OVERFLOW_VISIBLE as _,ALIGN_FLEX_START as a,OVERFLOW_SCROLL as a0,POSITION_TYPE_STATIC as a1,POSITION_TYPE_RELATIVE as a2,POSITION_TYPE_ABSOLUTE as a3,PRINT_OPTIONS_LAYOUT as a4,PRINT_OPTIONS_STYLE as a5,PRINT_OPTIONS_CHILDREN as a6,UNIT_UNDEFINED as a7,UNIT_POINT as a8,UNIT_PERCENT as a9,UNIT_AUTO as aa,WRAP_NO_WRAP as ab,WRAP_WRAP as ac,WRAP_WRAP_REVERSE as ad,ALIGN_CENTER as b,ALIGN_FLEX_END as c,ALIGN_STRETCH as d,ALIGN_BASELINE as e,ALIGN_SPACE_BETWEEN as f,ALIGN_SPACE_AROUND as g,DIMENSION_HEIGHT as h,DIRECTION_INHERIT as i,DIRECTION_LTR as j,DIRECTION_RTL as k,DISPLAY_FLEX as l,DISPLAY_NONE as m,EDGE_TOP as n,EDGE_RIGHT as o,EDGE_BOTTOM as p,EDGE_START as q,EDGE_END as r,EDGE_HORIZONTAL as s,EDGE_VERTICAL as t,EDGE_ALL as u,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS as v,wrapAsm as w,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE as x,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN as y,FLEX_DIRECTION_COLUMN_REVERSE as z};\n","import{w as r}from\"./wrapAsm-f766f97f.js\";export{A as ALIGN_AUTO,e as ALIGN_BASELINE,b as ALIGN_CENTER,c as ALIGN_FLEX_END,a as ALIGN_FLEX_START,g as ALIGN_SPACE_AROUND,f as ALIGN_SPACE_BETWEEN,d as ALIGN_STRETCH,h as DIMENSION_HEIGHT,D as DIMENSION_WIDTH,i as DIRECTION_INHERIT,j as DIRECTION_LTR,k as DIRECTION_RTL,l as DISPLAY_FLEX,m as DISPLAY_NONE,u as EDGE_ALL,p as EDGE_BOTTOM,r as EDGE_END,s as EDGE_HORIZONTAL,E as EDGE_LEFT,o as EDGE_RIGHT,q as EDGE_START,n as EDGE_TOP,t as EDGE_VERTICAL,x as EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE,y as EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN,v as EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,F as FLEX_DIRECTION_COLUMN,z as FLEX_DIRECTION_COLUMN_REVERSE,B as FLEX_DIRECTION_ROW,C as FLEX_DIRECTION_ROW_REVERSE,I as GUTTER_ALL,G as GUTTER_COLUMN,H as GUTTER_ROW,K as JUSTIFY_CENTER,L as JUSTIFY_FLEX_END,J as JUSTIFY_FLEX_START,N as JUSTIFY_SPACE_AROUND,M as JUSTIFY_SPACE_BETWEEN,O as JUSTIFY_SPACE_EVENLY,S as LOG_LEVEL_DEBUG,P as LOG_LEVEL_ERROR,U as LOG_LEVEL_FATAL,R as LOG_LEVEL_INFO,T as LOG_LEVEL_VERBOSE,Q as LOG_LEVEL_WARN,X as MEASURE_MODE_AT_MOST,W as MEASURE_MODE_EXACTLY,V as MEASURE_MODE_UNDEFINED,Y as NODE_TYPE_DEFAULT,Z as NODE_TYPE_TEXT,$ as OVERFLOW_HIDDEN,a0 as OVERFLOW_SCROLL,_ as OVERFLOW_VISIBLE,a3 as POSITION_TYPE_ABSOLUTE,a2 as POSITION_TYPE_RELATIVE,a1 as POSITION_TYPE_STATIC,a6 as PRINT_OPTIONS_CHILDREN,a4 as PRINT_OPTIONS_LAYOUT,a5 as PRINT_OPTIONS_STYLE,aa as UNIT_AUTO,a9 as UNIT_PERCENT,a8 as UNIT_POINT,a7 as UNIT_UNDEFINED,ab as WRAP_NO_WRAP,ac as WRAP_WRAP,ad as WRAP_WRAP_REVERSE}from\"./wrapAsm-f766f97f.js\";var yoga=(()=>{var r=\"undefined\"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(e={}){u||(u=void 0!==e?e:{}),u.ready=new Promise(function(r,e){s=r,A=e});var a,i,n=Object.assign({},u),f=\"\";\"undefined\"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf(\"blob:\")?f.substr(0,f.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):\"\";var t=u.print||console.log.bind(console),b=u.printErr||console.warn.bind(console);function o(){}function k(r){this.exports=function(r){for(var e,a=new Uint8Array(123),i=25;i>=0;--i)a[48+i]=52+i,a[65+i]=i,a[97+i]=26+i;function n(r,e,i){for(var n,f,t=0,b=e,o=i.length,k=e+(3*o>>2)-(\"=\"==i[o-2])-(\"=\"==i[o-1]);t>4,b>2),b>2]=l[L>>2]+1,L=3&l[r+24>>2],r$=(0|i)<=1?1:i,rf=L||r$,s[r+300|0]=252&d[r+300|0]|3&rf,L=r+252|0,i=((0|rf)!=1)<<3,S=rP(r,rL=(0|rf)==2?3:2,b),p[L+i>>2]=S,_=L,L=((0|rf)==1)<<3,Q=rS(r,rL,b),p[_+L>>2]=Q,H=rP(r,0,b),p[r+256>>2]=H,C=rS(r,0,b),p[r+264>>2]=C,eb=(F=r+268|0)+i|0,eo=rM(r,rL),p[eb>>2]=eo,eb=L+F|0,eo=rU(r,rL),p[eb>>2]=eo,X=rM(r,0),p[r+272>>2]=X,P=rU(r,0),p[r+280>>2]=P,eb=(_=i)+(i=r+284|0)|0,eo=rZ(r,rL,b),p[eb>>2]=eo,eb=i+L|0,eo=rW(r,rL,b),p[eb>>2]=eo,O=rZ(r,0,b),p[r+288>>2]=O,D=rW(r,0,b),p[r+296>>2]=D,S=w(S+Q),Q=w(H+C),i=l[r+8>>2]){H=w(w(w(p[r+284>>2]+p[r+292>>2])+p[r+268>>2])+p[r+276>>2]),a=f?w(a-Q):w(NaN),X=w(w(O+D)+X),e=O=n?w(e-S):w(NaN);i:if(e==e){if((e=w(O-H))!=e){e=w(0);break i}e=eu(e,w(0))}S=w(X+P),X=a;n:if(a==a){if((X=w(a-S))!=X){X=w(0);break n}X=eu(X,w(0))}if(!((0|n)!=1|(0|f)!=1)){i=(e=ro(r,2,O,b))!=e,X=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));f:{if(!(i|X!=X)){e=eu(e,X);break f}e=i?X:e}p[r+516>>2]=e,i=(e=ro(r,0,a,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));t:{if(!(i|a!=a)){e=eu(e,a);break t}e=i?a:e}p[r+520>>2]=e;break r}b:{if(16&d[r+4|0]){eY[0|i](I+24|0,r,e,n,X,f,0);break b}eY[0|i](I+24|0,r,e,n,X,f)}l[h+20>>2]=l[h+20>>2]+1,l[(i=(N<<2)+h|0)+24>>2]=l[i+24>>2]+1,e=w(H+p[I+24>>2]),i=(e=ro(r,2,n?(0|n)==2?e:O:e,b))!=e,X=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));o:{if(!(i|X!=X)){e=eu(e,X);break o}e=i?X:e}p[r+516>>2]=e,e=w(S+p[I+28>>2]),i=(e=ro(r,0,f?(0|f)==2?e:a:e,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));k:{if(!(i|a!=a)){e=eu(e,a);break k}e=i?a:e}p[r+520>>2]=e;break r}if(i=l[r+556>>2],N=l[r+560>>2],(0|i)==(0|N)){Q=w(a-Q),i=(e=ro(r,2,-3&n?w(e-S):w(w(w(p[r+284>>2]+p[r+292>>2])+p[r+268>>2])+p[r+276>>2]),b))!=e,a=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));c:{if(!(i|a!=a)){e=eu(e,a);break c}e=i?a:e}p[r+516>>2]=e,i=(e=ro(r,0,-3&f?Q:w(w(w(O+D)+X)+P),o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));u:{if(!(i|a!=a)){e=eu(e,a);break u}e=i?a:e}p[r+520>>2]=e;break r}s:if(!c){if(O=w(e-S),X=w(a-Q),!((0|n)==2&O<=w(0)|!(!(X<=w(0))|(0|f)!=2)&X==X)&((0|n)!=1|(0|f)!=1))break s;i=(e=ro(r,2,O==O?(0|n)==2&&O>2]=e,i=(e=ro(r,0,X!=X?w(0):(0|f)==2&&X>2]=e;break r}for(rd=(rr=N-i|0)>>2;L=l[i>>2],l[L+552>>2]!=(0|r)&&(F=l[r+568>>2],L=rV(l[F>>2],d[F+8|0],L,r,U,0),l[i>>2]=L,l[L+552>>2]=r),U=U+1|0,(0|N)!=(0|(i=i+4|0)););s[r+300|0]=251&d[r+300|0],U=3,i=(rH=l[r+24>>2])>>>2&3;d:{h:{v:{if((0|rf)==2){N=0;p:switch(i-2|0){case 0:break d;case 1:break p;default:break v}U=2;break d}if(U=2,N=0,i>>>0>1)break h}N=U}U=i}r0=w(e-S),rh=w(w(rZ(r,U,b)+rM(r,U))+w(rW(r,U,b)+rU(r,U))),D=w(rZ(r,N,b)+rM(r,N)),rb=w(D+w(rW(r,N,b)+rU(r,N))),C=rs(r,0,r0,(rk=U>>>0>1)?rh:rb,b),J=rs(r,1,r2=w(a-Q),rk?rb:rh,o),K=rk?J:C,Q=rk?C:J,rp=l[r+560>>2],L=l[r+556>>2],x=rk?n:f;m:if((0|x)==1){if((0|L)==(0|rp))break a;for(i=0,F=L;;){_=i,i=l[F>>2];N:{if(!rQ(i)){i=_;break N}if(Y=0,_||!(_=l[i+552>>2]))break m;w:{y:{a=p[i+32>>2];E:if((a==a||(X=w(0),(a=p[i+28>>2])>w(0)))&&(X=a,a!=a))break y;if(w(y(X))>2])!=a){if(s[i+4|0]<0){a=w(1);break w}if(a=w(0),!((e=p[i+28>>2])>2],rc(M),F=l[M+24>>2];G:{if(4194304&F){if(function r(e,a){var i=0,n=0,f=0,t=0,b=0,o=0;for(re=i=re-320|0,l[(i=n=ry(i,0,288))+16>>2]=2143289344,l[i+20>>2]=2143289344,ry(i+24|0,0,49),l[i+80>>2]=2143289344,t=i+288|0,f=i+96|0;l[(i=f)+16>>2]=-1082130432,l[i+20>>2]=-1082130432,l[i+8>>2]=0,l[i+12>>2]=0,l[i>>2]=-1082130432,l[i+4>>2]=-1082130432,(0|t)!=(0|(f=i+24|0)););if(l[n+312>>2]=-1082130432,l[n+316>>2]=-1082130432,l[n+304>>2]=0,l[n+308>>2]=0,l[n+296>>2]=-1082130432,l[n+300>>2]=-1082130432,l[n+288>>2]=2143289344,l[n+292>>2]=2143289344,ru(e+228|0,n,320),l[e+244>>2]=0,l[e+248>>2]=0,s[e+4|0]=1|d[e+4|0],f=l[e+556>>2],b=l[e+560>>2],(0|f)!=(0|b))for(;i=l[f>>2],l[i+552>>2]!=(0|e)&&(t=l[e+568>>2],i=rV(l[t>>2],d[t+8|0],i,e,o,a),l[f>>2]=i,l[i+552>>2]=e,i=l[f>>2]),r(i,a),o=o+1|0,(0|b)!=(0|(f=f+4|0)););re=n+320|0}(M,0),F=1|(i=d[M+4|0]),s[M+4|0]=F,!(4&i))break G;s[M+4|0]=251&F;break G}if(c&&(rO(M,(i=3&F)||ra,Q,K,C),F=l[M+24>>2]),(196608&F)==131072)break G;R:{if((0|Y)==(0|M)){l[Y+308>>2]=0,l[Y+304>>2]=m,a=w(0);break R}_=(rF=l[r+24>>2])>>>2&3;g:{Z:if((0|rf)==2){i=3;W:switch(_-2|0){case 0:break g;case 1:break W;default:break Z}i=2;break g}i=_}O=(rA=i>>>0>1)?C:J,a=w(0),e=p[M+40>>2];V:{B:{_=l[M+40>>2];T:if((0|_)!=2139156720){if((0|_)==2140081935)break B;j=4276;I:{if((0|_)!=2141891242){if(e==e)break I;j=4268}a=p[j>>2];X:{O:switch(0|(_=l[j+4>>2])){case 0:case 3:break O;default:break X}if(e=w(NaN),!(p[M+28>>2]>w(0)))break V;ri=(j=s[M+4|0]<0)?2143289344:0,_=j?3:1,E=ri,t[2]=E,a=u()}switch(e=w(NaN),_-1|0){case 0:break B;case 1:break T;default:break V}}if(G=(-1073741825&_)+536870912|0,t[2]=G,a=u(),!(1073741824&_))break B}e=w(w(O*a)*w(.009999999776482582));break V}e=a}a=p[M+572>>2],_=0;L:{_:switch(0|($=l[M+576>>2])){case 0:case 3:break L;default:break _}if(S=p[M+572>>2],!((0|$)!=1|S!=S)){if(a>2],j=0;F:{C:switch(0|(q=l[M+584>>2])){case 0:case 3:break F;default:break C}if(P=p[M+580>>2],!((0|q)!=1|P!=P)){if(S>2],(!d[l[M+568>>2]+20|0]|l[M+304>>2]==(0|m))&a==a)break S;if(!((a=w(w(rZ(M,i,C)+rM(M,i))+w(rW(M,i,C)+rU(M,i))))<=e)&ea){a=e;break P}a=a!=a?e:a;break P}if(l[I+360>>2]=2143289344,l[I+24>>2]=2143289344,ri=0,l[I+356>>2]=0,l[I+352>>2]=0,P=w(rP(M,2,C)+rS(M,2,C)),H=rP(M,0,C),z=rS(M,0,C),O=w(NaN),rl=0,e=w(NaN),_){M:{H:switch($-1|0){case 0:e=a;break M;case 1:break H;default:break M}e=w(w(C*a)*w(.009999999776482582))}l[I+356>>2]=1,e=w(P+e),p[I+24>>2]=e,rl=1}if(H=w(H+z),j){a=w(NaN);Q:{z:switch(q-1|0){case 0:a=S;break Q;case 1:break z;default:break Q}a=w(w(J*S)*w(.009999999776482582))}l[I+352>>2]=1,O=w(H+a),p[I+360>>2]=O,ri=1}$=i>>>0<2,q=3145728&rF;j:{D:{x:{if(!(!rA&(0|q)==2097152)){if(rw|(0|q)==2097152)break D;if(e!=e)break x;break D}if(rw|e==e)break j}rl=2,l[I+356>>2]=2,p[I+24>>2]=C,e=C}J:{if(!(!$&(0|q)==2097152)){if((0|q)==2097152|J!=J)break j;if(O!=O)break J;break j}if(O==O|J!=J)break j}ri=2,l[I+352>>2]=2,p[I+360>>2]=J,O=J}q=(a=p[M+224>>2])!=a;K:if(!q){q:{if(!(rA|(0|rl)!=1)){l[I+352>>2]=1,p[I+360>>2]=H+w(w(e-P)/a);break q}if($|(0|ri)!=1)break K;l[I+356>>2]=1,p[I+24>>2]=w(w(O-H)*a)+P}ri=1,rl=1}F=(F=F>>>13&7)||rF>>>10&7;$:if(!((0|F)==5|(0|rl)==1|(rA|(_|rN))|(0|F)!=4)){if(l[I+356>>2]=1,p[I+24>>2]=C,q)break $;ri=1,l[I+352>>2]=1,p[I+360>>2]=w(C-P)/a}rr:if(!($|(0|f)!=1|J!=J|j|(0|F)!=4|(0|ri)==1)){if(l[I+352>>2]=1,p[I+360>>2]=J,q)break rr;l[I+356>>2]=1,p[I+24>>2]=w(J-H)*a}if(rg(M,2,C,C,I+356|0,I+24|0),rg(M,0,J,C,I+352|0,I+360|0),rt(M,p[I+24>>2],p[I+360>>2],rf,l[I+356>>2],l[I+352>>2],C,J,0,5,A,h,v,m),F=(e=p[(M+(l[(i<<2)+4252>>2]<<2)|0)+516>>2])!=e,a=w(w(rZ(M,i,C)+rM(M,i))+w(rW(M,i,C)+rU(M,i))),!(F|a!=a)){a=eu(e,a);break P}a=F?a:e}p[M+308>>2]=a}l[M+304>>2]=m}X=w(X+w(a+w(rP(M,U,C)+rS(M,U,C))))}if((0|rp)==(0|(L=L+4|0)))break}break e}l[I>>2]=3023,rB(r,I),eX(),k()}l[I+16>>2]=3105,rB(r,I+16|0),eX(),k()}X=w(0)}e=w(X+w(0)),rz=rk?o:b,rC=rk?b:o,rr>>>0>=5&&(e=w(w(rv(r,U,K)*w(rd-1>>>0))+e)),i=e>Q,rp=786432&rH,rG=(0|x)==2&&rp&&i?1:x,r8=(rw=(0|(M=rk?f:n))==1)&(1^c),rk=U>>>0<2,r9=-3&M,rF=r+208|0,q=(f=N<<2)+4220|0,r7=!rp&rw,er=(0|M)!=1|c,rA=(L=U<<2)+4220|0,r_=L+4252|0,ei=(rl=K==K)<<1,$=f+4252|0,ef=!x|!i,rH=I+52|0,r1=rv(r,N,K),F=0,i=0,ri=0;re:{for(;;){j=i,ry(I+24|0,0,44),i=l[r+560>>2],f=l[r+556>>2];ra:if((0|i)!=(0|f)){if((0|(i=i-f|0))<0)break re;if(L=en(I+360|0,i>>2,0,rH),i=l[I+44>>2],f=l[I+48>>2]-i|0,f=rm(l[I+364>>2]-f|0,i,f),i=l[I+44>>2],l[I+364>>2]=i,l[I+44>>2]=f,_=l[I+368>>2],Y=l[I+372>>2],f=l[I+48>>2],l[I+368>>2]=f,x=l[I+52>>2],l[I+48>>2]=_,l[I+52>>2]=Y,l[I+372>>2]=x,l[L>>2]=i,(0|i)!=(0|f)&&(l[I+368>>2]=f+((i-f|0)+3&-4)),!i)break ra;rE(i)}f=(Y=l[r+24>>2])>>>2&3;ri:{rn:if((0|((i=3&Y)||r$))==2){i=3;rf:switch(f-2|0){case 0:break ri;case 1:break rf;default:break rn}i=2;break ri}i=f}X=rv(r,i,C),L=F,_=l[r+560>>2],f=l[r+556>>2];rt:if(!(L>>>0>=_-f>>2>>>0))for(x=786432&Y,a=w(0);;){if(_-f>>2>>>0<=L>>>0)break re;if(Y=l[(L<<2)+f>>2],!(4194304&(rr=l[Y+24>>2])|(196608&rr)==131072)){if(l[Y+548>>2]=j,e=rP(Y,i,C),O=rS(Y,i,C),f=l[I+24>>2],S=(0|L)==(0|F)?w(0):X,e=w(e+O),O=p[Y+308>>2],P=ro(Y,i,O,rC),!(f?!(w(S+w(e+w(a+P)))>Q)|!x:1))break rt;if(l[I+24>>2]=f+1,S=w(S+w(e+P)),p[I+28>>2]=S+p[I+28>>2],rQ(Y)){rb:{if(l[Y+552>>2]){if((e=p[Y+32>>2])!=e&&(e=(e=p[Y+28>>2])>w(0)?e:w(0)),p[I+32>>2]=e+p[I+32>>2],(e=p[Y+36>>2])==e)break rb;if(s[Y+4|0]<0){e=w(1);break rb}if(e=w(0),!((P=p[Y+28>>2])>2]=p[I+32>>2]+w(0)}p[I+36>>2]=p[I+36>>2]-w(e*O)}f=l[I+48>>2];ro:{if((0|f)!=l[I+52>>2]){l[f>>2]=Y,l[I+48>>2]=f+4;break ro}if((_=(rr=(f=f-l[I+44>>2]|0)>>2)+1|0)>>>0>=1073741824)break re;if(ra=f>>>1|0,rr=en(I+360|0,f>>>0>=2147483644?1073741823:_>>>0>>0?ra:_,rr,rH),l[l[I+368>>2]>>2]=Y,l[I+368>>2]=l[I+368>>2]+4,f=l[I+44>>2],_=l[I+48>>2]-f|0,_=rm(l[I+364>>2]-_|0,f,_),f=l[I+44>>2],l[I+364>>2]=f,l[I+44>>2]=_,Y=l[I+368>>2],ra=l[I+372>>2],_=l[I+48>>2],l[I+368>>2]=_,rN=l[I+52>>2],l[I+48>>2]=Y,l[I+52>>2]=ra,l[I+372>>2]=rN,l[rr>>2]=f,(0|f)!=(0|_)&&(l[I+368>>2]=_+((f-_|0)+3&-4)),!f)break ro;rE(f)}f=l[r+556>>2],_=l[r+560>>2],a=w(a+S)}if(!((L=L+1|0)>>>0<_-f>>2>>>0))break}!((z=p[I+32>>2])>w(0))|!(z>2]=1065353216,z=w(1)),!((rn=p[I+36>>2])>w(0))|!(rn>2]=1065353216,rn=w(1)),l[I+40>>2]=L,H=p[I+28>>2],x=l[I+24>>2],ri&&rE(ri),S=p[I+56>>2],rr=l[I+48>>2],ri=l[I+44>>2];rk:{rc:{ru:{rs:if((0|rG)!=1){a=w(0),e=p[rF>>2];rA:{rl:{i=l[rF>>2];rd:if((0|i)!=2139156720){if((0|i)==2140081935)break rl;f=4276;rh:{if((0|i)!=2141891242){if(e==e)break rh;f=4268}switch(a=p[f>>2],e=w(NaN),l[f+4>>2]-1|0){case 0:break rl;case 1:break rd;default:break rA}}if(R=(-1073741825&i)+536870912|0,t[2]=R,a=u(),!(1073741824&i))break rl}e=w(w(a*b)*w(.009999999776482582));break rA}e=a}a=w(0),X=p[r+216>>2];rv:{rp:{i=l[r+216>>2];rm:if((0|i)!=2139156720){if((0|i)==2140081935)break rp;f=4276;rN:{if((0|i)!=2141891242){if(X==X)break rN;f=4268}switch(a=p[f>>2],X=w(NaN),l[f+4>>2]-1|0){case 0:break rp;case 1:break rm;default:break rv}}if(g=(-1073741825&i)+536870912|0,t[2]=g,a=u(),!(1073741824&i))break rp}X=w(w(a*b)*w(.009999999776482582));break rv}X=a}a=w(0),O=p[r+212>>2];rw:{ry:{i=l[r+212>>2];rE:if((0|i)!=2139156720){if((0|i)==2140081935)break ry;f=4276;rG:{if((0|i)!=2141891242){if(O==O)break rG;f=4268}switch(a=p[f>>2],P=w(NaN),l[f+4>>2]-1|0){case 0:break ry;case 1:break rE;default:break rw}}if(Z=(-1073741825&i)+536870912|0,t[2]=Z,a=u(),!(1073741824&i))break ry}P=w(w(a*o)*w(.009999999776482582));break rw}P=a}a=w(0),O=p[r+220>>2];rR:{rg:{i=l[r+220>>2];rZ:if((0|i)!=2139156720){if((0|i)==2140081935)break rg;f=4276;rW:{if((0|i)!=2141891242){if(O==O)break rW;f=4268}switch(a=p[f>>2],O=w(NaN),l[f+4>>2]-1|0){case 0:break rg;case 1:break rZ;default:break rR}}if(W=(-1073741825&i)+536870912|0,t[2]=W,a=u(),!(1073741824&i))break rg}O=w(w(a*o)*w(.009999999776482582));break rR}O=a}if((a=w(((i=U>>>0>1)?e:P)-rh))==a&a>H||(a=w((i?X:O)-rh))==a&a>2]+11|0])break rs;if(a=H,!l[r+552>>2]|z==w(0))break rc;e=p[r+32>>2];rV:{rB:{if(e==e){a=e;break rB}if(!((a=p[r+28>>2])>w(0)))break rV}if(a!=a){a=Q;break rc}e=p[r+32>>2]}if(e!=e&&(a=H,!((e=p[r+28>>2])>w(0)))||(a=Q,e!=w(0)))break rc;a=H;break rc}a=Q}if(a!=a)break rc;S=w(a-H);break rk}if(!(H>2])+308>>2],a=ro(i,U,H,rC);rI:{if(S>2];rX:{if(!Y){X=w(0);break rX}if((X=p[i+36>>2])==X)break rX;if(s[i+4|0]<0){X=w(1);break rX}if(X=w(0),!((e=p[i+28>>2])w(0)|e>2])==a)break rL;if(s[i+4|0]<0){a=w(1);break rL}if(a=w(0),!((X=p[i+28>>2])w(0))|!l[i+552>>2]||(X=p[i+32>>2])!=X&&!((X=p[i+28>>2])>w(0))||!(Xw(0)))break rI;_=(e=ro(i,U,P=w(w(w(S/z)*X)+a),Q))!=e,H=w(w(rZ(i,U,C)+rM(i,U))+w(rW(i,U,C)+rU(i,U)));r_:{if(!(_|H!=H)){e=eu(e,H);break r_}e=_?H:e}if(P!=P|e!=e|e==P)break rI;z=w(z-X),O=w(O+w(e-a))}if((0|rr)==(0|(f=f+4|0)))break}for(H=w(S-O),rD=w(H/rn),rx=w(H/z),rK=!(ra=rw&(!(12&d[r+26|0])|ef)),rN=l[$>>2],P=w(0),_=ri;;){f=l[_>>2],a=ro(f,U,p[f+308>>2],rC);rF:{rC:{if(H>2]){e=w(0);break rS}if((e=p[f+36>>2])==e)break rS;if(s[f+4|0]<0){e=w(1);break rS}if(e=w(0),!((X=p[f+28>>2])w(0))|!l[f+552>>2]||(e=p[f+32>>2])!=e&&!((e=p[f+28>>2])>w(0))||!(ew(0)))break rF;e=w(w(rx*e)+a)}if(i=(e=ro(f,U,e,Q))!=e,X=w(w(rZ(f,U,C)+rM(f,U))+w(rW(f,U,C)+rU(f,U))),!(i|X!=X)){X=eu(e,X);break rF}X=i?X:e}e=rP(f,U,C),O=rS(f,U,C),z=rP(f,N,C),rq=rS(f,N,C),O=w(e+O),r4=w(X+O),p[I+352>>2]=r4,l[I+344>>2]=1,z=w(z+rq),e=p[f+224>>2];rP:{if(e==e){l[I+348>>2]=1,O=w(r4-O),p[I+356>>2]=z+(rk?w(O*e):w(O/e)),O=p[(Y=f+(rN<<3)|0)+572>>2],i=l[Y+576>>2],e=p[Y+572>>2];break rP}e=p[(Y=f+(rN<<3)|0)+572>>2];rY:{rU:{rM:{rH:{rQ:{rz:{rj:{rD:{rx:{if(!rl){O=p[Y+572>>2],i=l[Y+576>>2];break rx}O=p[Y+572>>2];rJ:{rK:{rq:{r$:switch(0|(i=l[Y+576>>2])){case 0:case 3:break rq;default:break r$}if(!((0|i)!=1|e!=e)){if(!(ra&O>2]>>>13&7)||(Y=l[r+24>>2]>>>10&7),(0|Y)!=4||(ea(I+24|0,f,N),3==l[I+28>>2]))break rJ;if(ee(I+360|0,f,N),3!=l[I+364>>2])break rD}e=O}switch(0|i){case 0:case 3:break rz;default:break rj}}l[I+348>>2]=1;break rU}if(!((0|i)!=1|e!=e)){if((e=O)>2]=ei;break rU}e=w(NaN);r0:switch(i-1|0){case 1:break rH;case 0:break r0;default:break rM}e=O;break rM}e=w(w(K*O)*w(.009999999776482582))}e=w(z+e),p[I+356>>2]=e,l[I+348>>2]=(rw|(0|i)!=2)&e==e;break rY}p[I+356>>2]=K}e=O}rg(f,U,Q,C,I+344|0,I+352|0),rg(f,N,K,C,I+348|0,I+356|0);r2:{r1:{r4:{r3:switch(0|i){case 0:case 3:break r4;default:break r3}if(!((0|i)!=1|e!=e)){if(O>2]>>>13&7)||(i=l[r+24>>2]>>>10&7),(0|i)!=4||(ea(I+24|0,f,N),3==l[I+28>>2]))break r2;ee(I+360|0,f,N),Y=3!=l[I+364>>2];break r2}Y=0}e=p[I+352>>2],O=p[I+356>>2],z=(i=U>>>0>1)?e:O,e=i?O:e,rJ=l[I+344>>2],r3=l[I+348>>2],et=i?rJ:r3,rJ=i?r3:rJ,i=(1^Y)&c,rt(f,z,e,3&d[r+300|0],et,rJ,C,J,i,i?4:7,A,h,v,m),P=w(P+w(X-a)),i=d[r+300|0];r8:{r6:{if(4&i){Y=251&i;break r6}if(Y=251&i,i=0,!(4&d[f+300|0]))break r8}i=4}if(s[r+300|0]=i|Y,(0|rr)==(0|(_=_+4|0)))break}}S=w(S-P)}i=d[r+300|0],s[r+300|0]=251&i|(Sw(0))|(0|rG)!=2)){P=w(0),a=w(0);r9:{r7:{e=p[(i=rF+(l[r_>>2]<<2)|0)>>2],f=(0|(i=l[i>>2]))==2139156720;er:{if(!f){if(_=(0|i)==2140081935)break r7;if((Y=(0|i)==2141891242)|e!=e)break r5;if(_)break r7;if(Y)break r5;if(V=(-1073741825&i)+536870912|0,t[2]=V,a=u(),!(1073741824&i))break er}a=w(w(rC*a)*w(.009999999776482582))}if(a!=a)break r5;a=w(0);ee:if(!f){if((0|i)==2140081935)break r7;f=4276;ea:{if((0|i)!=2141891242){if(e==e)break ea;f=4268}switch(a=p[f>>2],X=w(NaN),l[f+4>>2]-1|0){case 0:break r7;case 1:break ee;default:break r9}}if(B=(-1073741825&i)+536870912|0,t[2]=B,a=u(),!(1073741824&i))break r7}X=w(w(rC*a)*w(.009999999776482582));break r9}X=a}if((e=w(w(w(X-O)-rD)-w(Q-S)))!=e)break r5;P=eu(e,w(0));break r5}P=S}Y=L>>>0<=F>>>0;ei:{if(!Y){for(rr=l[r+556>>2],ra=(i=l[r+560>>2]-rr>>2)>>>0>>0?F:i,_=0,i=F;;){if((0|i)==(0|ra))break re;if(f=l[rr+(i<<2)>>2],(196608&l[f+24>>2])!=131072&&(ea(rN=I+24|0,f,U),rK=l[I+28>>2],ee(rN,f,U),_=(((0|rK)==3)+_|0)+(3==l[I+28>>2])|0),(0|L)==(0|(i=i+1|0)))break}if(z=w(0),a=H,_)break ei}z=w(0),_=0,a=H;en:switch((l[r+24>>2]>>>4&7)-1|0){case 0:z=w(P*w(.5));break ei;case 1:z=P;break ei;case 2:if(x>>>0<2)break ei;a=w(H+w((eo=w(0),ek=eu(P,w(0)),((eb=P!=P)?eo:ek)/w(x-1>>>0))));break ei;case 4:z=w(P/w(x+1>>>0)),a=w(H+z);break ei;case 3:break en;default:break ei}z=w(w(P*w(.5))/w(x>>>0)),a=w(w(z+z)+H)}if(e=w(O+z),S=w(0),x=rj(r),Y)a=w(0);else{for(rr=L-1|0,rx=w(P/w(0|_)),O=w(0),X=w(0),i=F;;){if(f=l[r+556>>2],l[r+560>>2]-f>>2>>>0<=i>>>0)break re;_=(f=l[f+(i<<2)>>2])+228|0,ru(I+24|0,_,320),a=w(a-((0|i)==(0|rr)?H:w(0))),ra=l[f+24>>2];ef:if(!(4194304&ra)){et:{if((196608&ra)==131072){if(!r5(f,U))break et;if(!c)break ef;P=rI(f,U,Q),rn=rM(r,U),rq=rP(f,U,C),p[_+(l[rA>>2]<<2)>>2]=rq+w(P+rn);break ef}if(ea(I+360|0,f,U),e=w(e+(3==l[I+364>>2]?rx:w(-0))),c&&(ra=_,_=l[rA>>2]<<2,p[ra+_>>2]=e+p[_+(I+24|0)>>2]),ee(I+360|0,f,U),e=w(e+(3==l[I+364>>2]?rx:w(-0))),!er){e=w(e+w(w(a+w(rP(f,U,C)+rS(f,U,C)))+p[I+104>>2])),S=K;break ef}if(e=w(e+w(a+w(p[(_=f+516|0)+(l[r_>>2]<<2)>>2]+w(rP(f,U,C)+rS(f,U,C))))),x){P=rR(f),rn=rP(f,0,C),P=w(P+rn),rn=w(w(p[f+520>>2]+w(rP(f,0,C)+rS(f,0,C)))-P),f=O!=O;eb:{if(!(f|P!=P)){O=eu(O,P);break eb}O=f?P:O}if(!((f=X!=X)|rn!=rn)){X=eu(X,rn);break ef}X=f?rn:X;break ef}if(!((P=w(p[_+(l[$>>2]<<2)>>2]+w(rP(f,N,C)+rS(f,N,C))))!=P|(f=S!=S))){S=eu(S,P);break ef}S=f?P:S;break ef}if(!c)break ef;P=p[(f=l[rA>>2]<<2)+(I+24|0)>>2],eb=f+_|0,eo=w(z+w(P+rM(r,U))),p[eb>>2]=eo}if((0|L)==(0|(i=i+1|0)))break}a=w(X+O)}if(O=x?a:S,P=K,!r9){i=(a=ro(r,N,w(rb+O),rz))!=a,X=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N)));eo:{if(!(i|X!=X)){a=eu(a,X);break eo}a=i?X:a}P=w(a-rb)}i=(a=ro(r,N,w(rb+(r7?K:O)),rz))!=a,X=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N)));ek:{if(!(i|X!=X)){a=eu(a,X);break ek}a=i?X:a}if(X=w(a-rb),!(!c|Y))for(;;){if(i=l[r+556>>2],l[r+560>>2]-i>>2>>>0<=F>>>0)break re;i=l[i+(F<<2)>>2],f=l[i+24>>2];ec:if(!(4194304&f)){if((196608&f)==131072){if(f=l[q>>2],r5(i,N)&&(a=w(w(rI(i,N,K)+rM(r,N))+rP(i,N,C)),p[(i+(f<<2)|0)+228>>2]=a,a==a))break ec;eb=i+(f<<2)|0,eo=w(rM(r,N)+rP(i,N,C)),p[eb+228>>2]=eo;break ec}(f=f>>>13&7)||(f=l[r+24>>2]>>>10&7);eu:{es:{eA:{if((0|f)==5){f=8&l[r+24>>2]?5:1;break eA}if((0|f)!=4||(ea(I+24|0,i,N),f=4,3==l[I+28>>2]))break eA;if(ee(I+360|0,i,N),_=l[$>>2],3==l[I+364>>2])break es;O=p[(_=i+(_<<3)|0)+572>>2];el:{ed:switch(0|(f=l[_+576>>2])){case 0:case 3:break el;default:break ed}if(S=p[_+572>>2],!((0|f)!=1|S!=S)){if(a=D,O>2]<<2)|0)+516>>2],a=(a=p[i+224>>2])==a?w(w(rP(i,N,C)+rS(i,N,C))+(rk?w(O*a):w(O/a))):X,p[I+360>>2]=a,eb=I,eo=w(O+w(rP(i,U,C)+rS(i,U,C))),p[eb+24>>2]=eo,l[I+356>>2]=1,l[I+352>>2]=1,rg(i,U,Q,C,I+356|0,I+24|0),rg(i,N,K,C,I+352|0,I+360|0),O=p[I+360>>2],S=p[I+24>>2],a=(f=U>>>0>1)?O:S,O=f?S:O,f=(0|rp)!=0&(896&l[r+24>>2])!=512,rt(i,O,a,rf,!(f&rk|O!=O),(!f|rk)&a==a,C,J,1,2,A,h,v,m),a=D;break eu}_=l[$>>2]}a=p[((_<<2)+i|0)+516>>2],O=rP(i,N,C),S=rS(i,N,C),ea(I+24|0,i,N),O=w(P-w(a+w(O+S)));eh:if(3==l[I+28>>2]){if(ee(I+360|0,i,N),3!=l[I+364>>2])break eh;a=w(O*w(.5)),a=w(D+(eo=w(0),ek=eu(a,w(0)),(eb=a!=a)?eo:ek));break eu}if(ee(I+24|0,i,N),a=D,3==l[I+28>>2])break eu;if(ea(I+24|0,i,N),3==l[I+28>>2]){a=w(D+(eo=w(0),ek=eu(O,w(0)),(eb=O!=O)?eo:ek));break eu}ev:switch(f-1|0){case 1:a=w(D+w(O*w(.5)));break eu;case 0:break eu;default:break ev}a=w(D+O)}p[(i=i+(l[q>>2]<<2)|0)+228>>2]=a+w(rX+p[i+228>>2])}if((0|(F=F+1|0))==(0|L))break}a=w((j?r1:w(0))+X),i=rY!=rY,e=w(rD+e);ep:{if(!(i|e!=e)){rY=eu(rY,e);break ep}rY=i?e:rY}if(rX=w(rX+a),i=j+1|0,F=L,!(L>>>0>>0))break}em:if(c&&(rp||rj(r))){O=w(0);eN:{ew:if(K==K){e=w(K-rX);ey:switch((l[r+24>>2]>>>7&7)-2|0){case 0:D=w(D+w(e*w(.5)));break ew;case 2:if(!(K>rX))break ew;O=w(e/w(i>>>0));break ew;case 5:if(K>rX){if(D=w(D+w(e/w(i<<1>>>0))),i>>>0<2)break ew;O=w(e/w(i>>>0));break eN}D=w(D+w(e*w(.5)));break ew;case 4:if(!(K>rX)|i>>>0<2)break ew;O=w(e/w(j>>>0));break eN;case 1:break ey;default:break ew}D=w(D+e)}if(!i)break em}for(_=0,i=0,f=0;;){if(S=w(0),a=w(0),e=w(0),X=w(0),L=i,i>>>0>>0){eE:{for(;;){if(f=l[r+556>>2],l[r+560>>2]-f>>2>>>0<=L>>>0)break re;F=l[f+(L<<2)>>2],Y=l[F+24>>2];eG:if(!(4194304&Y|(196608&Y)==131072)){if(f=L,l[F+548>>2]!=(0|_))break eE;e=p[(F+(l[$>>2]<<2)|0)+516>>2];eR:if(e>=w(0)){if(f=a!=a,e=w(e+w(rP(F,N,C)+rS(F,N,C))),!(f|e!=e)){a=eu(a,e);break eR}a=f?e:a}if((f=Y>>>13&7)||(f=l[r+24>>2]>>>10&7),!(8&d[r+24|0])|(0|f)!=5)break eG;e=rR(F),P=rP(F,0,C),e=w(e+P),P=w(w(p[F+520>>2]+w(rP(F,0,C)+rS(F,0,C)))-e),f=a!=a,F=X!=X;eg:{if(!(F|e!=e)){X=eu(X,e);break eg}X=F?e:X}F=S!=S;eZ:{if(!(F|P!=P)){S=eu(S,P);break eZ}S=F?P:S}if(!(f|(e=w(X+S))!=e)){a=eu(a,e);break eG}a=f?e:a}if((0|rd)==(0|(L=L+1|0)))break}f=rd}e=a}if(P=w(D+(_?r1:w(0))),a=w(O+e),D=w(P+a),i>>>0>>0)for(H=w(P+X);;){if(L=l[r+556>>2],l[r+560>>2]-L>>2>>>0<=i>>>0)break re;F=l[L+(i<<2)>>2],L=l[F+24>>2];eW:if(!(4194304&L|(196608&L)==131072)){(L=L>>>13&7)||(L=l[r+24>>2]>>>10&7);eV:{eB:switch(L-1|0){case 4:if(8&d[r+24|0])break eV;case 0:e=rP(F,N,C),p[(F+(l[q>>2]<<2)|0)+228>>2]=P+e;break eW;case 2:e=rS(F,N,C),p[(L=F+228|0)+(l[q>>2]<<2)>>2]=w(D-e)-p[(L+(l[$>>2]<<2)|0)+288>>2];break eW;case 1:p[(L=F+228|0)+(l[q>>2]<<2)>>2]=P+w(w(a-p[(L+(l[$>>2]<<2)|0)+288>>2])*w(.5));break eW;case 3:break eB;default:break eW}e=rP(F,N,C),p[(F+(l[q>>2]<<2)|0)+228>>2]=P+e,e=p[(L=Y=F+(l[$>>2]<<3)|0)+572>>2];eT:{eI:switch(0|(L=l[L+576>>2])){case 0:case 3:break eT;default:break eI}if(X=p[Y+572>>2],!((0|L)!=1|X!=X)){if(e>>0>=2){S=a,e=p[F+516>>2],X=w(e+w(rP(F,U,C)+rS(F,U,C)));break eX}S=w(p[F+520>>2]+w(rP(F,N,C)+rS(F,N,C))),e=p[F+516>>2],X=a}eO:{eL:{if(!(X!=X|e!=e)){if(w(y(w(X-e)))>2])!=e)|S!=S)){if(!(w(y(w(S-e)))>2]=eo}if((0|f)==(0|(i=i+1|0)))break}if(L=(0|_)!=(0|j),_=_+1|0,i=f,!L)break}}_=r+516|0,i=(e=ro(r,2,r0,b))!=e,a=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));e_:{if(!(i|a!=a)){e=eu(e,a);break e_}e=i?a:e}p[_>>2]=e,i=(e=ro(r,0,r2,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));eF:{if(!(i|a!=a)){e=eu(e,a);break eF}e=i?a:e}p[r+520>>2]=e;eC:{eS:{eP:if(!rG||!((0|(i=l[r+24>>2]>>>20&3))==2|(0|rG)!=2)){if(i=(e=ro(r,U,rY,rC))!=e,a=w(w(rZ(r,U,b)+rM(r,U))+w(rW(r,U,b)+rU(r,U))),!(i|a!=a)){e=eu(e,a);break eS}e=i?a:e;break eS}if((0|rG)!=2|(0|i)!=2)break eC;i=(a=w(rh+Q))!=a,e=ro(r,U,rY,rC);eY:{if(!(i|e!=e)){e=es(a,e);break eY}e=i?e:a}if(!((i=e!=e)|rh!=rh)){e=eu(e,rh);break eS}e=i?rh:e}p[_+(l[r_>>2]<<2)>>2]=e}eU:{eM:{eH:if(!M||(f=(0|M)!=2,i=l[r+24>>2]>>>20&3,!(f|(0|i)==2))){if(i=(e=ro(r,N,w(rb+rX),rz))!=e,a=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N))),!(i|a!=a)){e=eu(e,a);break eM}e=i?a:e;break eM}if(f|(0|i)!=2)break eU;i=(a=w(rb+K))!=a,e=ro(r,N,w(rb+rX),rz);eQ:{if(!(i|e!=e)){e=es(a,e);break eQ}e=i?e:a}if(!((i=e!=e)|rb!=rb)){e=eu(e,rb);break eM}e=i?rb:e}p[_+(l[$>>2]<<2)>>2]=e}ez:if(c){if(i=l[r+560>>2],F=l[r+556>>2],(786432&l[r+24>>2])==524288){for(f=rd>>>0<=1?1:rd,c=i-F>>2,i=0;L=0,L=i>>>0>>0?l[(i<<2)+F>>2]:L,(196608&l[L+24>>2])!=131072&&(Y=(L=L+228|0)+(l[q>>2]<<2)|0,j=l[$>>2]<<2,p[Y>>2]=w(p[j+_>>2]-p[Y>>2])-p[(L+j|0)+288>>2]),(0|f)!=(0|(i=i+1|0)););F=l[r+556>>2],i=l[r+560>>2]}if((0|i)!=(0|F))for(j=((U>>>0>1?rG:n)|0)!=0;;){c=l[F>>2];ej:if((4390912&l[c+24>>2])==131072){a=C,Q=J,d[l[r+568>>2]+21|0]&&(Q=p[r+520>>2],a=p[r+516>>2]),n=l[r+24>>2]>>>2&3;eD:{ex:{if((0|rf)==2){f=0,L=3;eJ:switch(n-2|0){case 0:break eD;case 1:break eJ;default:break ex}L=2;break eD}if(f=0,n>>>0<=1)break ex;L=n;break eD}L=n,f=rL}o=w(rP(c,2,a)+rS(c,2,a)),O=rP(c,0,a),S=rS(c,0,a),e=p[c+572>>2];eK:{eq:{e$:switch(0|(n=l[c+576>>2])){case 0:case 3:break eq;default:break e$}b=p[c+572>>2];e0:{if(!((0|n)!=1|b!=b)){if(X=e,!(e>2]-w(rM(r,2)+rU(r,2)))-w(rI(c,2,a)+rT(c,2,a))),a))!=e,b=w(w(rZ(c,2,a)+rM(c,2))+w(rW(c,2,a)+rU(c,2))),!(n|b!=b)){X=eu(e,b);break eK}X=n?b:e}S=w(O+S);e4:{e3:{e8:{e6:{e5:{e9:{e7:{Y=X!=X,b=p[c+580>>2];ar:{ae:{aa:switch(0|(n=l[c+584>>2])){case 0:case 3:break ae;default:break aa}e=p[c+580>>2];ai:{if(!((0|n)!=1|e!=e)){if(!((e=b)>2]-w(rM(r,0)+rU(r,0)))-w(rI(c,0,Q)+rT(c,0,Q))),Q))!=e,b=w(w(rZ(c,0,a)+rM(c,0))+w(rW(c,0,a)+rU(c,0))),!(n|b!=b)){e=eu(e,b);break ar}e=n?b:e}if((0|Y)==(e!=e|0)||(O=p[c+224>>2])!=O)break e5;if(X!=X){X=w(w(w(e-S)*O)+o);break e5}if(e==e)break e5;break e9}if((O=p[c+224>>2])!=O)break e6}e=w(S+w(w(X-o)/O))}if(X!=X)break e8;if(e==e)break e4}n=0;break e3}n=1}Y=a>w(0),b=(x=n&j&L>>>0<2)&&Y?a:X,n^=1,rt(c,b,e,rf,x&&Y?2:n,e==e,b,e,0,6,A,h,v,m),X=w(p[c+516>>2]+eW(c,2,a)),e=w(p[c+520>>2]+eW(c,0,a))}rt(c,X,e,rf,1,1,X,e,1,1,A,h,v,m),o=(n=L>>>0<2)?a:Q,b=d[(Y=l[r+568>>2])+22|0]?o:a;ab:{ao:{ak:if(!(!r6(c,L)||r5(c,L))){x=l[(L<<2)+4252>>2]<<2,e=w(w(w(w(p[x+_>>2]-p[(c+x|0)+516>>2])-rU(r,L))-rS(c,L,b))-rT(c,L,n?Q:a));break ao}if(!(r5(c,L)|(112&l[r+24>>2])!=16)){n=l[(L<<2)+4252>>2]<<2,e=w(w(p[n+_>>2]-p[(n+c|0)+516>>2])*w(.5));break ao}if(!(r5(c,L)|(112&l[r+24>>2])!=32)){n=l[(L<<2)+4252>>2]<<2,e=w(p[n+_>>2]-p[(n+c|0)+516>>2]);break ao}if(!d[Y+21|0]||!r5(c,L))break ab;e=p[_+(l[(L<<2)+4252>>2]<<2)>>2],e=w(w(rI(c,L,e)+rM(r,L))+rP(c,L,e))}p[(c+(l[(L<<2)+4220>>2]<<2)|0)+228>>2]=e}ac:{au:if(!(!r6(c,f)||r5(c,f))){n=l[(f<<2)+4252>>2]<<2,e=w(w(w(w(p[n+_>>2]-p[(n+c|0)+516>>2])-rU(r,f))-rS(c,f,b))-rT(c,f,o));break ac}as:if(!r5(c,f)){if((n=l[c+24>>2]>>>13&7)||(n=l[r+24>>2]>>>10&7),(0|n)!=2)break as;n=l[(f<<2)+4252>>2]<<2,e=w(w(p[n+_>>2]-p[(n+c|0)+516>>2])*w(.5));break ac}aA:if(!r5(c,f)){L=l[c+24>>2]>>>13&7,n=l[r+24>>2],L=L||n>>>10&7;al:{if(!((0|L)!=5|8&n)){if((786432&n)==524288)break al;break aA}if(((786432&n)==524288|0)==((0|L)==3|0))break aA}n=l[(f<<2)+4252>>2]<<2,e=w(p[n+_>>2]-p[(n+c|0)+516>>2]);break ac}if(!d[Y+21|0]||!r5(c,f))break ej;e=p[_+(l[(f<<2)+4252>>2]<<2)>>2],e=w(w(rI(c,f,e)+rM(r,f))+rP(c,f,e))}p[(c+(l[(f<<2)+4220>>2]<<2)|0)+228>>2]=e}if((0|(F=F+4|0))==(0|i))break}if(!((N|U)&1))break ez;for(f=1&N,c=1&U,A=rd>>>0<=1?1:rd,h=(N<<2)+4236|0,v=(U<<2)+4236|0,m=l[r+556>>2],N=l[r+560>>2]-m>>2,i=0;;){if((0|i)==(0|N))break re;r=l[m+(i<<2)>>2];ad:if(!(64&d[r+26|0])){if(c&&(n=r+228|0,L=l[r_>>2]<<2,p[n+(l[v>>2]<<2)>>2]=w(p[L+_>>2]-p[(n+L|0)+288>>2])-p[n+(l[rA>>2]<<2)>>2]),!f)break ad;r=r+228|0,n=l[$>>2]<<2,p[r+(l[h>>2]<<2)>>2]=w(p[n+_>>2]-p[(r+n|0)+288>>2])-p[r+(l[q>>2]<<2)>>2]}if((0|A)==(0|(i=i+1|0)))break}}if(!ri)break r;rE(ri);break r}T(),k()}re=I+384|0}function rn(){var r=0,e=0;B(6952,6953,6954,0,4284,17,4287,0,4287,0,2528,4289,18),l[(r=eo(8))>>2]=8,l[r+4>>2]=1,g(6952,2873,6,4304,4328,19,0|r,1),B(6956,6957,6958,6952,4284,20,4284,21,4284,22,2e3,4289,23),l[(r=eo(4))>>2]=24,g(6956,2358,2,4336,4344,25,0|r,0),W(6952,1397,2,4348,4356,26,27),W(6952,2978,3,4436,4448,28,29),B(6976,6977,6978,0,4284,30,4287,0,4287,0,2544,4289,31),l[(r=eo(8))>>2]=8,l[r+4>>2]=1,g(6976,3244,2,4456,4344,32,0|r,1),B(6979,6980,6981,6976,4284,33,4284,34,4284,35,2023,4289,36),l[(r=eo(4))>>2]=37,g(6979,2358,2,4464,4344,38,0|r,0),W(6976,1397,2,4472,4356,39,40),W(6976,2978,3,4436,4448,28,41),B(6982,6983,6984,0,4284,42,4287,0,4287,0,2812,4289,43),P(6982,1,4520,4284,44,45),W(6982,2866,1,4520,4284,44,45),W(6982,1128,2,4524,4344,46,47),l[(r=eo(8))+4>>2]=0,l[r>>2]=48,g(6982,3185,4,4544,4560,49,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=50,g(6982,1980,3,4568,4580,51,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=52,g(6982,1951,3,4588,4600,53,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=54,g(6982,1799,3,4588,4600,53,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=55,g(6982,3215,3,4608,4448,56,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=57,g(6982,1925,2,4620,4356,58,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=59,g(6982,1784,2,4620,4356,58,0|r,0),_(6985,1270,4628,60,4289,61),eh(1731,0),eh(1611,8),eh(2144,16),eh(2454,24),eh(2560,32),eh(1617,40),L(6985),_(6955,2849,4628,62,4289,63),ed(2560,0),ed(1617,8),L(6955),_(6986,2860,4628,64,4289,65),l[(r=eo(4))>>2]=8,l[(e=eo(4))>>2]=8,X(6986,2854,7018,4630,66,0|r,7018,4634,67,0|e),l[(r=eo(4))>>2]=0,l[(e=eo(4))>>2]=0,X(6986,1606,7011,4356,68,0|r,7011,4600,69,0|e),L(6986),B(6987,6988,6989,0,4284,70,4287,0,4287,0,2973,4289,71),P(6987,1,4640,4284,72,73),W(6987,1592,1,4640,4284,72,73),W(6987,2802,2,4644,4356,74,75),W(6987,1128,2,4652,4344,76,77),l[(r=eo(8))+4>>2]=0,l[r>>2]=78,g(6987,1752,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=80,g(6987,2956,3,4660,4600,81,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=82,g(6987,2881,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=84,g(6987,2334,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=86,g(6987,1484,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=87,g(6987,1355,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=88,g(6987,1817,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=89,g(6987,2823,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=90,g(6987,2378,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=91,g(6987,2163,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=92,g(6987,1319,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=93,g(6987,2412,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=94,g(6987,1503,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=95,g(6987,2235,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=96,g(6987,1219,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=97,g(6987,1136,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=98,g(6987,1158,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=100,g(6987,1845,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=101,g(6987,1464,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=102,g(6987,2218,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=103,g(6987,1195,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=104,g(6987,2500,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=105,g(6987,2590,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=106,g(6987,1539,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=107,g(6987,2249,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=108,g(6987,1650,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=109,g(6987,1427,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=110,g(6987,2204,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=111,g(6987,2608,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=112,g(6987,1555,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=113,g(6987,1670,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=114,g(6987,1444,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=115,g(6987,2566,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=116,g(6987,1520,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=117,g(6987,1624,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=118,g(6987,1407,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=119,g(6987,2304,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=120,g(6987,2092,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=121,g(6987,2718,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=122,g(6987,1574,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=123,g(6987,2187,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=124,g(6987,2897,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=126,g(6987,2346,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=128,g(6987,1371,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=129,g(6987,1831,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=130,g(6987,2836,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=131,g(6987,2395,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=132,g(6987,2175,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=133,g(6987,1337,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=134,g(6987,2422,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=135,g(6987,1858,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=137,g(6987,1207,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=139,g(6987,2514,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=140,g(6987,2599,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=141,g(6987,1660,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=142,g(6987,2620,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=143,g(6987,1683,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=144,g(6987,2578,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=145,g(6987,1637,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=146,g(6987,2319,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=147,g(6987,2102,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=149,g(6987,1231,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=150,g(6987,1147,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=151,g(6987,2729,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=152,g(6987,2194,3,4780,4792,153,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=154,g(6987,2985,4,4800,4560,155,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=156,g(6987,3006,3,4816,4600,157,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=158,g(6987,1292,2,4828,4356,159,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=160,g(6987,1387,2,4836,4356,161,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=162,g(6987,2997,3,4844,4448,163,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=164,g(6987,2913,2,4856,4356,165,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=166,g(6987,2933,3,4864,4600,167,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=168,g(6987,3308,3,4876,4600,169,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=170,g(6987,3306,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=171,g(6987,3325,3,4888,4600,172,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=173,g(6987,3323,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=174,g(6987,1118,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=175,g(6987,1110,2,4900,4356,176,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=177,g(6987,1243,5,4912,4932,178,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=179,g(6987,1736,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=180,g(6987,1714,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=181,g(6987,2148,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=182,g(6987,2461,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=183,g(6987,2632,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=184,g(6987,1696,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=185,g(6987,1259,2,4940,4356,186,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=187,g(6987,2432,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=188,g(6987,2112,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=189,g(6987,2740,3,4760,4772,148,0|r,0)}function rf(r,e,a,i,n,f,t){var b=0,o=0,k=0,c=0,u=0,h=0,v=0,p=0,w=0,y=0,E=0,G=0,R=0,g=0,Z=0,W=0,V=0,B=0,T=0,I=0;re=k=re-80|0,l[k+76>>2]=e,B=k+55|0,R=k+56|0;r:{e:{a:{i:{n:for(;;){if(c=e,(2147483647^w)<(0|b))break i;w=b+w|0;f:{t:{b:{if(o=d[0|(b=c)])for(;;){o:{e=255&o;k:{if(!e){e=b;break k}if((0|e)!=37)break o;for(o=b;;){if(37!=d[o+1|0]){e=o;break k}if(b=b+1|0,u=d[o+2|0],o=e=o+2|0,(0|u)!=37)break}}if((0|(b=b-c|0))>(0|(V=2147483647^w)))break i;if(r&&rF(r,c,b),b)continue n;l[k+76>>2]=e,b=e+1|0,E=-1,!eO(o=s[e+1|0])|36!=d[e+2|0]||(E=o-48|0,g=1,b=e+3|0),l[k+76>>2]=b,p=0,e=(o=s[0|b])-32|0;c:{if(e>>>0>31){u=b;break c}if(u=b,!(75913&(e=1<>2]=u,p|=e,(e=(o=s[b+1|0])-32|0)>>>0>=32)break c;if(b=u,!(75913&(e=1<>2]=10,o=u+3|0,g=1,y=l[((s[u+1|0]<<3)+i|0)-384>>2];break s}if(g)break b;if(o=u+1|0,!r){l[k+76>>2]=o,g=0,y=0;break u}e=l[a>>2],l[a>>2]=e+4,g=0,y=l[e>>2]}if(l[k+76>>2]=o,(0|y)>=0)break u;y=0-y|0,p|=8192;break u}if((0|(y=ei(k+76|0)))<0)break i;o=l[k+76>>2]}b=0,v=-1;A:{if(46!=d[0|o]){e=o,G=0;break A}if(42==d[o+1|0]){e=s[o+2|0];l:{if(!(!eO(e)|36!=d[o+3|0])){l[((e<<2)+n|0)-192>>2]=10,e=o+4|0,v=l[((s[o+2|0]<<3)+i|0)-384>>2];break l}if(g)break b;if(e=o+2|0,v=0,!r)break l;o=l[a>>2],l[a>>2]=o+4,v=l[o>>2]}l[k+76>>2]=e,G=(-1^v)>>>31|0;break A}l[k+76>>2]=o+1,v=ei(k+76|0),e=l[k+76>>2],G=1}for(;;){if(h=b,u=28,Z=e,(b=s[0|e])-123>>>0<4294967238)break a;if(e=Z+1|0,!((b=d[(b+N(h,58)|0)+4895|0])-1>>>0<8))break}l[k+76>>2]=e;d:{h:{if((0|b)!=27){if(!b)break a;if((0|E)>=0){l[(E<<2)+n>>2]=b,o=l[(b=(E<<3)+i|0)+4>>2],l[k+64>>2]=l[b>>2],l[k+68>>2]=o;break h}if(!r)break f;rN(k- -64|0,b,a,t);break d}if((0|E)>=0)break a}if(b=0,!r)continue n}o=-65537&p,p=8192&p?o:p,E=0,W=1166,u=R;v:{p:{m:{N:{w:{y:{E:{G:{R:{g:{Z:{W:{V:{B:{T:{I:switch(b=s[0|Z],(b=h&&(15&b)==3?-33&b:b)-88|0){case 11:break v;case 9:case 13:case 14:case 15:break p;case 27:break E;case 12:case 17:break g;case 23:break Z;case 0:case 32:break W;case 24:break V;case 22:break B;case 29:break T;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break t;default:break I}X:switch(b-65|0){case 0:case 4:case 5:case 6:break p;case 2:break w;case 1:case 3:break t;default:break X}if((0|b)==83)break y;break t}o=l[k+64>>2],h=l[k+68>>2],b=1166;break R}b=0;O:switch(255&h){case 0:case 1:case 6:l[l[k+64>>2]>>2]=w;continue n;case 2:c=l[k+64>>2],l[c>>2]=w,l[c+4>>2]=w>>31;continue n;case 3:A[l[k+64>>2]>>1]=w;continue n;case 4:s[l[k+64>>2]]=w;continue n;case 7:break O;default:continue n}c=l[k+64>>2],l[c>>2]=w,l[c+4>>2]=w>>31;continue n}v=v>>>0<=8?8:v,p|=8,b=120}if(c=R,o=l[k+64>>2],h=l[k+68>>2],o|h)for(T=32&b;s[0|(c=c-1|0)]=T|d[(15&o)+5424|0],I=!h&o>>>0>15|(0|h)!=0,Z=h,h=h>>>4|0,o=(15&Z)<<28|o>>>4,I;);if(!(8&p)|!(l[k+64>>2]|l[k+68>>2]))break G;W=(b>>>4|0)+1166|0,E=2;break G}if(b=R,h=c=l[k+68>>2],o=l[k+64>>2],c|o)for(;s[0|(b=b-1|0)]=7&o|48,Z=!h&o>>>0>7|(0|h)!=0,h=(c=h)>>>3|0,o=(7&c)<<29|o>>>3,Z;);if(c=b,!(8&p))break G;v=(0|(b=R-c|0))<(0|v)?v:b+1|0;break G}if(o=l[k+64>>2],h=b=l[k+68>>2],(0|b)<0){h=c=0-(h+((0|o)!=0)|0)|0,o=0-o|0,l[k+64>>2]=o,l[k+68>>2]=c,E=1,b=1166;break R}if(2048&p){E=1,b=1167;break R}b=(E=1&p)?1168:1166}W=b,c=rK(o,h,R)}if((0|v)<0?G:0)break i;if(p=G?-65537&p:p,b=l[k+64>>2],o=l[k+68>>2],!((b|o)!=0|v)){c=R,v=0;break t}v=(0|(b=!(b|o)+(R-c|0)|0))<(0|v)?v:b;break t}p=0,u=(0|(h=G=v>>>0>=2147483647?2147483647:v))!=0;L:{_:{b=c=(b=l[k+64>>2])||4208;F:{C:{S:if(!(!(3&b)|!h))for(;;){if(!(p=d[0|b]))break C;if(u=(0|(h=h-1|0))!=0,!(3&(b=b+1|0)))break S;if(!h)break}if(!u)break _;P:{if(!(!d[0|b]|h>>>0<4))for(;;){if((-1^(u=l[b>>2]))&u-16843009&-2139062144)break P;if(b=b+4|0,!((h=h-4|0)>>>0>3))break}if(!h)break _}u=0;break F}u=1}for(;;){if(!u){p=d[0|b],u=1;continue}if(!p)break L;if(b=b+1|0,!(h=h-1|0))break _;u=0}}b=0}if(u=(b=b?b-c|0:G)+c|0,(0|v)>=0){p=o,v=b;break t}if(p=o,v=b,d[0|u])break i;break t}if(v){o=l[k+64>>2];break N}b=0,er(r,32,y,0,p);break m}l[k+12>>2]=0,l[k+8>>2]=l[k+64>>2],o=k+8|0,l[k+64>>2]=o,v=-1}b=0;Y:{for(;;){if(!(c=l[o>>2]))break Y;if(!((u=(0|(c=el(k+4|0,c)))<0)|c>>>0>v-b>>>0)){if(o=o+4|0,v>>>0>(b=b+c|0)>>>0)continue;break Y}break}if(u)break e}if(u=61,(0|b)<0)break a;if(er(r,32,y,b,p),!b){b=0;break m}for(u=0,o=l[k+64>>2];;){if(!(c=l[o>>2])||(u=(c=el(k+4|0,c))+u|0)>>>0>b>>>0)break m;if(rF(r,k+4|0,c),o=o+4|0,!(b>>>0>u>>>0))break}}er(r,32,y,b,8192^p),b=(0|b)<(0|y)?y:b;continue n}if((0|v)<0?G:0)break i;if(u=61,(0|(b=0|eY[0|f](r,m[k+64>>3],y,v,p,b)))>=0)continue n;break a}s[k+55|0]=l[k+64>>2],v=1,c=B,p=o;break t}o=d[b+1|0],b=b+1|0}if(r)break r;if(!g)break f;for(b=1;;){if(r=l[(b<<2)+n>>2]){if(rN((b<<3)+i|0,r,a,t),w=1,(0|(b=b+1|0))!=10)continue;break r}break}if(w=1,b>>>0>=10)break r;for(;;){if(l[(b<<2)+n>>2])break b;if((0|(b=b+1|0))==10)break}break r}u=28;break a}if((0|(v=(0|v)>(0|(h=u-c|0))?v:h))>(2147483647^E))break i;if(u=61,(0|V)<(0|(b=(0|(o=v+E|0))<(0|y)?y:o)))break a;er(r,32,b,o,p),rF(r,W,E),er(r,48,b,o,65536^p),er(r,48,v,h,0),rF(r,c,h),er(r,32,b,o,8192^p);continue}break}w=0;break r}u=61}l[1761]=u}w=-1}return re=k+80|0,w}function rt(r,e,a,i,n,f,t,b,o,k,c,u,A,h){var m=w(0),E=0,G=0,R=0,g=w(0),Z=0,W=0,V=0,B=w(0);r:((l[r+312>>2]!=(0|h)?4&d[r+4|0]:0)||(Z=0,l[r+316>>2]!=(0|i)))&&(l[r+540>>2]=-1082130432,l[r+544>>2]=-1082130432,l[r+532>>2]=0,l[r+536>>2]=0,l[r+524>>2]=-1082130432,l[r+528>>2]=-1082130432,l[r+320>>2]=0,Z=1);W=A+1|0;e:{a:{i:{n:{if(l[r+8>>2]){if(g=rP(r,2,t),B=rS(r,2,t),m=w(rP(r,0,t)+rS(r,0,t)),A=r+524|0,g=w(g+B),rA(n,e,f,a,l[r+532>>2],p[A>>2],l[r+536>>2],p[r+528>>2],p[r+540>>2],p[r+544>>2],g,m,c))break i;if(!(G=l[r+320>>2]))break n;for(E=r+324|0;;){if(rA(n,e,f,a,l[(A=E+N(R,24)|0)+8>>2],p[A>>2],l[A+12>>2],p[A+4>>2],p[A+16>>2],p[A+20>>2],g,m,c))break i;if((0|G)==(0|(R=R+1|0)))break}break n}if(!o){if(!(V=l[r+320>>2]))break n;for(G=r+324|0;;){m=p[(A=(E=N(R,24))+G|0)>>2];f:{t:{if(!(m!=m|e!=e)){if(w(y(w(m-e)))>2];b:{if(!(m!=m|a!=a)){if(w(y(w(m-a)))>2]!=(0|n))break f;if(l[E+12>>2]==(0|f))break i}if((0|V)==(0|(R=R+1|0)))break}break n}m=p[(A=r+524|0)>>2];o:{if(!(m!=m|e!=e)){if(w(y(w(m-e)))>2]==(0|n)&&l[r+536>>2]==(0|f)?A:0,A=(m=p[r+528>>2])!=m,G=a!=a;k:{if(A|G){A&=G;break k}A=w(y(w(m-a)))>2]=i;break a}if(!(!A|Z)){p[r+516>>2]=p[A+16>>2],p[r+520>>2]=p[A+20>>2],l[(i=(o?12:16)+u|0)>>2]=l[i>>2]+1,i=0;break e}if(ri(r,e,a,i,n,f,t,b,o,c,u,W,h,k),l[r+316>>2]=i,i=1,A)break e}(i=(A=l[r+320>>2])+1|0)>>>0>v[u+8>>2]&&(l[u+8>>2]=i),(0|A)==8&&(l[r+320>>2]=0,A=0),o?i=r+524|0:(l[r+320>>2]=A+1,i=(N(A,24)+r|0)+324|0),l[i+12>>2]=f,l[i+8>>2]=n,p[i+4>>2]=a,p[i>>2]=e,p[i+16>>2]=p[r+516>>2],p[i+20>>2]=p[r+520>>2],i=1}c:if(o){if(n=l[r+520>>2],l[r+244>>2]=l[r+516>>2],l[r+248>>2]=n,f=1|(n=d[r+4|0]),s[r+4|0]=f,!(4&n))break c;s[r+4|0]=251&f}return l[r+312>>2]=h,i}function rb(r){r|=0;var e=0,a=0,i=0,n=0,f=0,t=0,b=0,o=0,k=0,c=0,u=0;b=8;r:if(!(r>>>0>4294967239)){e:{for(;;){b=b>>>0<=8?8:b,f=e=l[1731],n=l[1730],r=r>>>0<=8?8:r+3&-4;a:{if(r>>>0<=127){t=(r>>>3|0)-1|0;break a}if(i=E(r),t=((r>>>29-i^4)-(i<<2)|0)+110|0,r>>>0<=4095)break a;t=(i=((r>>>30-i^2)-(i<<1)|0)+71|0)>>>0>=63?63:i}if(a=31&t,(63&t)>>>0>=32?(i=0,e=e>>>a|0):(i=e>>>a|0,e=((1<>>a),e|i){for(;;){n=i;i:{if(e|i){o=(a=i-1|0)+1|0,f=a,f=(0|(a=e-1|0))!=-1?o:f,a=63-(i=(0|(i=E(i^f)))==32?E(e^a)+32|0:i)|0,ra=0-(i>>>0>63)|0;break i}ra=0,a=64}a=31&(f=a),(63&f)>>>0>=32?(i=0,e=n>>>a|0):(i=n>>>a|0,e=((1<>>a),o=e,e=l[(a=(t=f+t|0)<<4)+5896>>2],f=a+5888|0;n:{if((0|e)!=(0|f)){if(n=rp(e,b,r))break r;n=l[e+4>>2],l[n+8>>2]=l[e+8>>2],l[l[e+8>>2]+4>>2]=n,l[e+8>>2]=f,n=a+5892|0,l[e+4>>2]=l[n>>2],l[n>>2]=e,l[l[e+4>>2]+8>>2]=e,t=t+1|0,e=(1&i)<<31|o>>>1,i=i>>>1|0;break n}k=l[1731],n=31&(e=f=63&t),e>>>0>=32?(e=0,a=-1>>>n|0):a=(e=-1>>>n|0)|(1<>>0>=32?(e=a<>>32-n|e<>>0>=32?(e=-1<>>32-e,u=-2&a,a=31&f,f>>>0>=32?(f=0,e=e>>>a|0):(f=e>>>a|0,e=((1<>>a),e|=c,ra=n|f,l[1730]=l[1730]&e,l[1731]=ra&k,e=1^o}if(!(e|i))break}f=l[1731],n=l[1730]}f:{if(n|f){i=l[(e=(a=63-((0|(i=E(f)))==32?E(n)+32|0:i)|0)<<4)+5896>>2];t:if(!(!f&n>>>0<1073741824)){if(t=99,(0|(e=e+5888|0))==(0|i))break t;for(;;){if(!t)break t;if(n=rp(i,b,r))break r;if(t=t-1|0,i=l[i+8>>2],(0|e)==(0|i))break}i=e}if(rd(r+48|0))break f;if(!i||(0|(e=(a<<4)+5888|0))==(0|i))break e;for(;;){if(n=rp(i,b,r))break r;if(i=l[i+8>>2],(0|e)==(0|i))break}break e}if(!rd(r+48|0))break e}if(n=0,b-1&b)break r;if(!(r>>>0<=4294967239))break}break r}n=0}return 0|n}function ro(r,e,a,i){var n,f,b,o,k=w(0),c=w(0),s=0,A=w(0);r:{e:{a:{i:{n:{f:{if(e>>>0<=1){c=p[r+212>>2],e=l[r+212>>2];t:if((0|e)!=2139156720){if((0|e)==2140081935)break f;s=4276;b:{if((0|e)!=2141891242){if(c==c)break b;s=4268}switch(k=p[s>>2],c=w(NaN),l[s+4>>2]-1|0){case 0:break f;case 1:break t;default:break n}}if(n=(-1073741825&e)+536870912|0,t[2]=n,k=u(),!(1073741824&e))break f}c=w(w(k*i)*w(.009999999776482582));break n}c=p[r+208>>2];o:{k:{e=l[r+208>>2];c:if((0|e)!=2139156720){if((0|e)==2140081935)break k;s=4276;u:{if((0|e)!=2141891242){if(c==c)break u;s=4268}switch(k=p[s>>2],c=w(NaN),l[s+4>>2]-1|0){case 0:break k;case 1:break c;default:break o}}if(f=(-1073741825&e)+536870912|0,t[2]=f,k=u(),!(1073741824&e))break k}c=w(w(k*i)*w(.009999999776482582));break o}c=k}k=w(0),A=p[r+216>>2],r=l[r+216>>2];s:if((0|r)!=2139156720){if((0|r)==2140081935)break a;e=4276;A:{if((0|r)!=2141891242){if(A==A)break A;e=4268}switch(k=p[e>>2],l[e+4>>2]-1|0){case 1:break s;case 0:break i;default:break e}}if(b=(-1073741825&r)+536870912|0,t[2]=b,k=u(),!(1073741824&r))break i}k=w(w(k*i)*w(.009999999776482582));break i}c=k}k=w(0),A=p[r+220>>2],r=l[r+220>>2];l:if((0|r)!=2139156720){if((0|r)==2140081935)break a;e=4276;d:{if((0|r)!=2141891242){if(A==A)break d;e=4268}switch(k=p[e>>2],l[e+4>>2]-1|0){case 1:break l;case 0:break i;default:break e}}if(o=(-1073741825&r)+536870912|0,t[2]=o,k=u(),!(1073741824&r))break i}k=w(w(k*i)*w(.009999999776482582))}if(!(k>=w(0)))break e}if(a>k)break r}if(!(c>=w(0)))return a;k=a>2]=0,l[r+12>>2]=0,A[r+4>>1]=1,l[r>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,l[r+24>>2]=0,l[r+36>>2]=2143289344,l[r+40>>2]=2141891242,l[r+28>>2]=2143289344,l[r+32>>2]=2143289344,i=ry(r+44|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+80|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+116|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+152|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,l[r+196>>2]=0,l[(i=r+188|0)>>2]=0,l[i+4>>2]=0;l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=3;);for(l[r+24>>2]=4224,l[r+224>>2]=2143289344,l[r+216>>2]=2143289344,l[r+220>>2]=2143289344,l[r+208>>2]=2143289344,l[r+212>>2]=2143289344,l[r+200>>2]=2141891242,l[r+204>>2]=2141891242,ry(r+228|0,0,288),l[r+244>>2]=2143289344,l[r+248>>2]=2143289344,ry(r+252|0,0,49),l[r+308>>2]=2143289344,i=r+516|0,a=r+324|0;l[a+16>>2]=-1082130432,l[a+20>>2]=-1082130432,l[a+8>>2]=0,l[a+12>>2]=0,l[a>>2]=-1082130432,l[a+4>>2]=-1082130432,(0|i)!=(0|(a=a+24|0)););return l[r+548>>2]=0,l[r+552>>2]=0,l[r+516>>2]=2143289344,l[r+520>>2]=2143289344,l[r+572>>2]=2143289344,l[r+576>>2]=0,l[r+568>>2]=e,l[r+540>>2]=-1082130432,l[r+544>>2]=-1082130432,l[r+532>>2]=0,l[r+536>>2]=0,l[r+524>>2]=-1082130432,l[r+528>>2]=-1082130432,l[r+556>>2]=0,l[r+560>>2]=0,l[r+564>>2]=0,l[r+580>>2]=2143289344,l[r+584>>2]=0,d[e+10|0]&&(l[r+24>>2]=4616,s[r+4|0]=128|d[r+4|0]),r}function rc(r){var e,a,i=0,n=0,f=w(0),b=w(0),o=w(0),k=0,c=0,s=0,A=0,d=0,h=0,v=0,m=0,N=0;for(l[(k=re-16|0)+8>>2]=0,l[k+12>>2]=1,d=r+200|0,h=r+572|0,v=r+208|0,m=r+216|0,r=0;;){N=r,c=(A=l[(k+8|0)+(r<<2)>>2])<<2,f=p[(r=m+c|0)>>2];r:{e:{a:{i:{n:{f:if(!(!((s=(0|(i=l[r>>2]))==2139156720)|(0|i)==2140081935|(0|i)==2141891242)&f!=f)){b=p[(r=c+v|0)>>2],n=l[r>>2];t:{b:{if((0|n)!=2139156720){if(o=w(NaN),r=3,(0|n)==2141891242)break t;if((0|n)!=2140081935)break b;o=w(0),r=1;break t}o=w(0),r=2;break t}if(r=0,b!=b)break t;e=(-1073741825&n)+536870912|0,t[2]=e,o=u(),r=1073741824&n?2:1}n=r;o:{k:{if(!s){if(b=w(NaN),r=3,(0|i)==2141891242)break o;if((0|i)!=2140081935)break k;b=w(0),r=1;break o}b=w(0),r=2;break o}if(r=0,f!=f)break o;a=(-1073741825&i)+536870912|0,t[2]=a,b=u(),r=1073741824&i?2:1}if((0|n)!=(0|r)|!(!r|b!=b&o!=o|w(y(w(b-o)))>2],(0|(i=l[i>>2]))==2139156720)break n;if((0|i)==2140081935)break e;if((0|i)==2141891242)break a;if(f!=f)break i;r=(-1073741825&i)+536870912|0,i=1073741824&i?2:1;break r}i=2;break r}r=2143289344,i=0;break r}r=2143289344,i=3;break r}i=1}if(l[(n=(A<<3)+h|0)+4>>2]=i,l[n>>2]=r,r=1,1&N)break}}function ru(r,e,a){var i=0,n=0,f=0;if(a>>>0>=512)return x(0|r,0|e,0|a),r;n=r+a|0;r:{if(!((r^e)&3)){e:{if(!(3&r)||!a){a=r;break e}for(a=r;;){if(s[0|a]=d[0|e],e=e+1|0,!(3&(a=a+1|0)))break e;if(!(a>>>0>>0))break}}i=-4&n;a:if(!(i>>>0<64)&&!((f=i+-64|0)>>>0>>0))for(;l[a>>2]=l[e>>2],l[a+4>>2]=l[e+4>>2],l[a+8>>2]=l[e+8>>2],l[a+12>>2]=l[e+12>>2],l[a+16>>2]=l[e+16>>2],l[a+20>>2]=l[e+20>>2],l[a+24>>2]=l[e+24>>2],l[a+28>>2]=l[e+28>>2],l[a+32>>2]=l[e+32>>2],l[a+36>>2]=l[e+36>>2],l[a+40>>2]=l[e+40>>2],l[a+44>>2]=l[e+44>>2],l[a+48>>2]=l[e+48>>2],l[a+52>>2]=l[e+52>>2],l[a+56>>2]=l[e+56>>2],l[a+60>>2]=l[e+60>>2],e=e- -64|0,f>>>0>=(a=a- -64|0)>>>0;);if(a>>>0>=i>>>0)break r;for(;l[a>>2]=l[e>>2],e=e+4|0,i>>>0>(a=a+4|0)>>>0;);break r}if(n>>>0<4||(i=n-4|0)>>>0>>0){a=r;break r}for(a=r;s[0|a]=d[0|e],s[a+1|0]=d[e+1|0],s[a+2|0]=d[e+2|0],s[a+3|0]=d[e+3|0],e=e+4|0,i>>>0>=(a=a+4|0)>>>0;);}if(a>>>0>>0)for(;s[0|a]=d[0|e],e=e+1|0,(0|n)!=(0|(a=a+1|0)););return r}function rs(r,e,a,i,n){var f,b,o=w(0),k=0,c=w(0),s=w(0),A=0,d=0,h=w(0),v=w(0),m=0;if(!(d=(c=w(a-i))!=c)){a=w(0),o=p[(k=(e<<2)+r|0)+208>>2];r:{e:{k=l[k+208>>2];a:{i:if((0|k)!=2139156720){if((0|k)==2140081935)break e;A=4276;n:{if((0|k)!=2141891242){if(o==o)break n;A=4268}switch(a=p[A>>2],l[A+4>>2]-1|0){case 0:break a;case 1:break i;default:break r}}if(f=(-1073741825&k)+536870912|0,t[2]=f,a=u(),!(1073741824&k))break a}a=w(w(a*n)*w(.009999999776482582))}if(a==a)break e;break r}s=w(a-i)}a=w(0),o=p[(r=(e<<2)+r|0)+216>>2];f:{t:{e=l[r+216>>2];b:{o:if((0|e)!=2139156720){if((0|e)==2140081935)break t;r=4276;k:{if((0|e)!=2141891242){if(o==o)break k;r=4268}switch(a=p[r>>2],o=w(34028234663852886e22),l[r+4>>2]-1|0){case 0:break b;case 1:break o;default:break f}}if(b=(-1073741825&e)+536870912|0,t[2]=b,a=u(),!(1073741824&e))break b}a=w(w(a*n)*w(.009999999776482582))}if(a==a)break t;o=w(34028234663852886e22);break f}o=w(a-i)}if(h=c,v=es(c,o),!((r=(a=o!=o|d?h:v)!=a)|s!=s))return eu(a,s);c=r?s:a}return c}function rA(r,e,a,i,n,f,t,b,o,k,c,u,s){var A=w(0),l=w(0),d=0,h=0,v=w(0),m=w(0),N=w(0),E=0,G=0;if(o>2],l=b,A==w(0))break r;m=rH(+e,E=+A,0,0),N=rH(+i,E,0,0),v=rH(+f,E,0,0),l=rH(+b,E,0,0)}A=l,s=0;e:if((0|r)==(0|n)){if((G=v!=v)|(s=m!=m)){s&=G;break e}s=w(y(w(v-m)))=o))break n;break i}if(s=0,!(e=o))break i}if((n=e!=e)|(r=o!=o)){s=r&n;break i}s=w(y(w(e-o)))=k))break t;break f}if(h=0,!(e=k))break f}if((a=e!=e)|(r=k!=k)){h=r&a;break f}h=w(y(w(e-k)))>>20&2047))==2047)return(r*=1)/r;if(!(n=b<<1)&(0|(u=c<<1|b>>>31))==2145386496|u>>>0<2145386496)return!n&(0|u)==2145386496?0*r:r;r:{if(!k){if(k=0,f=b<<12,(0|(n=c<<12|b>>>20))>0|(0|n)>=0)for(;k=k-1|0,n=n<<1|f>>>31,f<<=1,(0|n)>0|(0|n)>=0;);f=31&(n=1-k|0),(63&n)>>>0>=32?(n=b<>>32-f|c<1023){for(;;){e:if(!((0|(b=n+-1048576|0))<0)&&!((n=b)|f))return 0*r;if(n=n<<1|f>>>31,f<<=1,!((0|(k=k-1|0))>1023))break}k=1023}a:if(!((0|(b=n+-1048576|0))<0)&&!((n=b)|f))return 0*r;if((0|n)==1048575|n>>>0<1048575)for(;k=k-1|0,b=n>>>0<524288,u=n<<1|f>>>31,f<<=1,n=u,b;);return A=-2147483648&c,u=n+-1048576|k<<20,s=f,c=n,s=f,f=31&(b=1-k|0),(63&b)>>>0>=32?(n=0,b=c>>>f|0):(n=c>>>f|0,b=((1<>>f),a=((f=(0|k)>0)?s:b)|0,t[0]=a,i=(f?u:n)|A,t[1]=i,+o[0]}function rd(r){var e=0,a=0,i=0,n=0,f=0;a=(i=l[1396])+(e=r+7&-8)|0;r:{e:if(!((a>>>0<=i>>>0?e:0)||a>>>0>eU()<<16>>>0&&!(0|D(0|a)))){l[1396]=a;break r}l[1761]=48,i=-1}if((0|i)!=-1){l[(a=(e=r+i|0)-16|0)+12>>2]=16,l[a>>2]=16,f=(r=l[1728])?l[r+8>>2]:0;a:{i:{if((0|f)==(0|i)){if(n=i-(-2&l[i-4>>2])|0,f=l[n-4>>2],l[r+8>>2]=e,e=-16,!(1&s[((r=n-(-2&f)|0)+l[r>>2]|0)-4|0]))break i;e=l[r+4>>2],l[e+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=e,a=a-r|0,l[r>>2]=a;break a}l[i+12>>2]=16,l[i>>2]=16,l[i+8>>2]=e,l[i+4>>2]=r,l[1728]=i,e=16}a=a-(r=e+i|0)|0,l[r>>2]=a}l[((-4&a)+r|0)-4>>2]=1|a,e=l[r>>2]-8|0;n:{if(e>>>0<=127){a=(e>>>3|0)-1|0;break n}if(n=E(e),a=((e>>>29-n^4)-(n<<2)|0)+110|0,e>>>0<=4095)break n;a=(a=((e>>>30-n^2)-(n<<1)|0)+71|0)>>>0>=63?63:a}e=a<<4,l[r+4>>2]=e+5888,e=e+5896|0,l[r+8>>2]=l[e>>2],l[e>>2]=r,l[l[r+8>>2]+4>>2]=r,e=l[1730],n=l[1731],r=31&a,(63&a)>>>0>=32?(a=1<>>32-r,l[1730]=f|e,l[1731]=a|n}return(0|i)!=-1}function rh(r,e,a){var i=0,n=0,f=0,t=0,b=0,o=0,k=0,c=0,u=0;r:{e:{a:{i:{n:{f:{t:{b:{o:{k:{if(e){if(!a)break k;break o}ra=0,r=(r>>>0)/(a>>>0)|0;break r}if(!r)break b;break t}if(!(a-1&a))break f;t=0-(f=(E(a)+33|0)-E(e)|0)|0;break i}ra=0,r=(e>>>0)/0|0;break r}if((i=32-E(e)|0)>>>0<31)break n;break a}if((0|a)==1)break e;a=31&(f=a?31-E(a-1^a)|0:32),(63&f)>>>0>=32?r=e>>>a|0:(i=e>>>a|0,r=((1<>>a),ra=i;break r}f=i+1|0,t=63-i|0}if(n=31&(i=63&f),i>>>0>=32?(i=0,b=e>>>n|0):(i=e>>>n|0,b=((1<>>n),t&=63,n=31&t,t>>>0>=32?(e=r<>>32-n|e<>>31)+((i=b<<1|e>>>31)>>>0>t>>>0)|0)>>31),b=i-k|0,i=o-(i>>>0>>0)|0,e=e<<1|r>>>31,r=c|r<<1,c=1&n,f=f-1|0;);ra=e<<1|r>>>31,r=c|r<<1;break r}r=0,e=0}ra=e}return r}function rv(r,e,a){var i,n,f=w(0),b=w(0);r:{e:{a:{if((-2&e)==2){if(e=l[r+188>>2],f=p[r+188>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f||(e=l[r+196>>2],f=p[r+196>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f))break a;break e}if(e=l[r+192>>2],f=p[r+192>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f||(f=p[r+196>>2],(0|(e=l[r+196>>2]))==2139156720|(0|e)==2140081935|(0|e)==2141891242))break a;if(f!=f)break e}f=w(0);i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break n;default:break i}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}b=w(w(f*a)*w(.009999999776482582))}return b}f=w(0)}return f}function rp(r,e,a){var i=0,n=0,f=0,t=0;if(n=((i=r+4|0)+e|0)-1&0-e,e=l[r>>2],n+a>>>0<=(e+r|0)-4>>>0){f=l[r+4>>2],l[f+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=f,(0|i)!=(0|n)&&(n=n-i|0,f=r-(-2&l[r-4>>2])|0,i=n+l[f>>2]|0,l[f>>2]=i,l[(f+(-4&i)|0)-4>>2]=i,r=r+n|0,e=e-n|0,l[r>>2]=e);r:{if(a+24>>>0<=e>>>0){i=(r+a|0)+8|0,e=(e-a|0)-8|0,l[i>>2]=e,l[(i+(-4&e)|0)-4>>2]=1|e,n=l[i>>2]-8|0;e:{if(n>>>0<=127){e=(n>>>3|0)-1|0;break e}if(f=E(n),e=((n>>>29-f^4)-(f<<2)|0)+110|0,n>>>0<=4095)break e;e=(e=((n>>>30-f^2)-(f<<1)|0)+71|0)>>>0>=63?63:e}n=e<<4,l[i+4>>2]=n+5888,n=n+5896|0,l[i+8>>2]=l[n>>2],l[n>>2]=i,l[l[i+8>>2]+4>>2]=i,n=l[1730],f=l[1731],i=31&e,(63&e)>>>0>=32?(e=1<>>32-i,i=t),l[1730]=i|n,l[1731]=e|f,e=a+8|0,l[r>>2]=e,l[((-4&e)+r|0)-4>>2]=e;break r}l[(r+e|0)-4>>2]=e}r=r+4|0}else r=0;return r}function rm(r,e,a){var i=0,n=0;r:if((0|r)!=(0|e)){if(e-(n=r+a|0)>>>0<=0-(a<<1)>>>0)return ru(r,e,a);i=(r^e)&3;e:{a:{if(r>>>0>>0){if(i){i=r;break e}if(!(3&r)){i=r;break a}for(i=r;;){if(!a)break r;if(s[0|i]=d[0|e],e=e+1|0,a=a-1|0,!(3&(i=i+1|0)))break}break a}i:if(!i){if(3&n)for(;;){if(!a)break r;if(s[0|(i=(a=a-1|0)+r|0)]=d[e+a|0],!(3&i))break}if(a>>>0<=3)break i;for(;l[(a=a-4|0)+r>>2]=l[e+a>>2],a>>>0>3;);}if(!a)break r;for(;s[(a=a-1|0)+r|0]=d[e+a|0],a;);break r}if(a>>>0<=3)break e;for(;l[i>>2]=l[e>>2],e=e+4|0,i=i+4|0,(a=a-4|0)>>>0>3;);}if(!a)break r;for(;s[0|i]=d[0|e],i=i+1|0,e=e+1|0,a=a-1|0;);}return r}function rN(r,e,a,i){r:switch(e-9|0){case 0:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=l[e>>2];return;case 6:e=l[a>>2],l[a>>2]=e+4,e=A[e>>1],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 7:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=h[e>>1],l[r+4>>2]=0;return;case 8:e=l[a>>2],l[a>>2]=e+4,e=s[0|e],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 9:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=d[0|e],l[r+4>>2]=0;return;case 16:e=l[a>>2]+7&-8,l[a>>2]=e+8,m[r>>3]=m[e>>3];return;case 17:eY[0|i](r,a);default:return;case 1:case 4:case 14:e=l[a>>2],l[a>>2]=e+4,e=l[e>>2],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 2:case 5:case 11:case 15:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=l[e>>2],l[r+4>>2]=0;return;case 3:case 10:case 12:case 13:break r}e=l[a>>2]+7&-8,l[a>>2]=e+8,a=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=a}function rw(){rr(7004,3018),$(7005,2479,1,1,0),V(7006,2139,1,-128,127),V(7007,2132,1,-128,127),V(7008,2130,1,0,255),V(7009,1286,2,-32768,32767),V(7010,1277,2,0,65535),V(7011,1315,4,-2147483648,2147483647),V(7012,1306,4,0,-1),V(7013,2658,4,-2147483648,2147483647),V(7014,2649,4,0,-1),eV(7015,1776,-2147483648,2147483647),eV(7016,1775,0,-1),C(7017,1769,4),C(7018,2966,8),S(7019,2676),S(7020,3835),O(7021,4,2663),O(7022,2,2688),O(7023,4,2703),q(7024,2484),Z(7025,0,3766),Z(7026,0,3868),Z(7027,1,3796),Z(7028,2,3398),Z(7029,3,3429),Z(7030,4,3469),Z(7031,5,3498),Z(7032,4,3905),Z(7033,5,3935),Z(7026,0,3600),Z(7027,1,3567),Z(7028,2,3666),Z(7029,3,3632),Z(7030,4,3733),Z(7031,5,3699),Z(7034,6,3536),Z(7035,7,3974)}function ry(r,e,a){var i=0,n=0,f=0,t=0;r:if(a){if(s[0|r]=e,s[(i=r+a|0)-1|0]=e,a>>>0<3||(s[r+2|0]=e,s[r+1|0]=e,s[i-3|0]=e,s[i-2|0]=e,a>>>0<7)||(s[r+3|0]=e,s[i-4|0]=e,a>>>0<9)||(n=(i=0-r&3)+r|0,e=N(255&e,16843009),l[n>>2]=e,l[(a=(i=a-i&-4)+n|0)-4>>2]=e,i>>>0<9)||(l[n+8>>2]=e,l[n+4>>2]=e,l[a-8>>2]=e,l[a-12>>2]=e,i>>>0<25)||(l[n+24>>2]=e,l[n+20>>2]=e,l[n+16>>2]=e,l[n+12>>2]=e,l[a-16>>2]=e,l[a-20>>2]=e,l[a-24>>2]=e,l[a-28>>2]=e,(a=i-(t=4&n|24)|0)>>>0<32))break r;for(i=r9(e,0,1,1),f=ra,e=n+t|0;l[e+24>>2]=i,l[e+28>>2]=f,l[e+16>>2]=i,l[e+20>>2]=f,l[e+8>>2]=i,l[e+12>>2]=f,l[e>>2]=i,l[e+4>>2]=f,e=e+32|0,(a=a-32|0)>>>0>31;);}return r}function rE(r){var e=0,a=0,i=0,n=0,f=0;if(r|=0){a=n=l[(e=r-4|0)>>2],i=e,(0|(r=-2&(f=l[r-8>>2])))!=(0|f)&&(a=l[(i=e-r|0)+4>>2],l[a+8>>2]=l[i+8>>2],l[l[i+8>>2]+4>>2]=a,a=r+n|0),(0|(e=l[(r=e+n|0)>>2]))!=l[(r+e|0)-4>>2]&&(n=l[r+4>>2],l[n+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=n,a=e+a|0),l[i>>2]=a,l[((-4&a)+i|0)-4>>2]=1|a,e=l[i>>2]-8|0;r:{if(e>>>0<=127){r=(e>>>3|0)-1|0;break r}if(a=E(e),r=((e>>>29-a^4)-(a<<2)|0)+110|0,e>>>0<=4095)break r;r=(r=((e>>>30-a^2)-(a<<1)|0)+71|0)>>>0>=63?63:r}e=r<<4,l[i+4>>2]=e+5888,e=e+5896|0,l[i+8>>2]=l[e>>2],l[e>>2]=i,l[l[i+8>>2]+4>>2]=i,e=l[1730],a=l[1731],i=31&r,(63&r)>>>0>=32?(r=1<>>32-i,l[1730]=n|e,l[1731]=r|a}}function rG(r,e,a,i,n){var f=0,t=0,b=0,o=0;re=f=re-208|0,l[f+204>>2]=a,ry(a=f+160|0,0,40),l[f+200>>2]=l[f+204>>2];r:{if((0|rf(0,e,f+200|0,f+80|0,a,i,n))<0){n=-1;break r}o=l[r+76>>2]>=0,t=l[r>>2],l[r+72>>2]<=0&&(l[r>>2]=-33&t);e:{a:{i:{if(!l[r+48>>2]){l[r+48>>2]=80,l[r+28>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,b=l[r+44>>2],l[r+44>>2]=f;break i}if(l[r+16>>2])break a}if(a=-1,ef(r))break e}a=rf(r,e,f+200|0,f+80|0,f+160|0,i,n)}if(b&&(eY[l[r+36>>2]](r,0,0),l[r+48>>2]=0,l[r+44>>2]=b,l[r+28>>2]=0,e=l[r+20>>2],l[r+16>>2]=0,l[r+20>>2]=0,a=e?a:-1),e=r,r=l[r>>2],l[e>>2]=r|32&t,n=32&r?-1:a,!o)break r}return re=f+208|0,n}function rR(r){var e=0,a=w(0),i=0,n=0,f=0,t=0,b=0,o=w(0),c=0;re=f=re-16|0,e=l[r+12>>2];r:{if(e){o=p[r+520>>2],a=p[r+516>>2];e:{if(32&d[r+4|0]){a=w(eY[0|e](r,a,o,0));break e}a=w(eY[0|e](r,a,o))}if(a==a)break r;l[f>>2]=3340,rB(r,f),eX(),k()}a:{i:{if(t=l[r+556>>2],e=l[r+560>>2],(0|t)!=(0|e)){for(c=(e=e-t>>2)>>>0<=1?1:e;;){if(n=l[(b<<2)+t>>2],!l[n+548>>2]){if((196608&(e=l[n+24>>2]))!=131072){if((e=e>>>13&7)||(e=l[r+24>>2]>>>10&7),2&d[n+4|0]|(8&d[r+24|0]?(0|e)==5:0))break i;i=i||n}if((0|c)!=(0|(b=b+1|0)))continue}break}if(i)break a}a=p[r+520>>2];break r}i=n}a=w(rR(i)+p[i+232>>2])}return re=f+16|0,a}function rg(r,e,a,i,n,f){var b,o=0,k=w(0),c=0,s=w(0);k=p[(o=(l[(e<<2)+4252>>2]<<2)+r|0)+216>>2];r:{e:{o=l[o+216>>2];a:if((0|o)!=2139156720){if((0|o)==2140081935)break e;c=4276;i:{if((0|o)!=2141891242){if(k==k)break i;c=4268}switch(s=p[c>>2],k=w(NaN),l[c+4>>2]-1|0){case 0:break e;case 1:break a;default:break r}}if(b=(-1073741825&o)+536870912|0,t[2]=b,s=u(),!(1073741824&o))break e}k=w(w(s*a)*w(.009999999776482582));break r}k=s}i=w(k+w(rP(r,e,i)+rS(r,e,i)));n:{f:{t:switch(l[n>>2]){case 1:case 2:a=p[f>>2],i=i!=i?a:a>2]=2}p[f>>2]=i}}function rZ(r,e,a){var i,n,f=w(0),b=w(0),o=0,k=w(0);r=r+116|0,o=l[(e<<2)+4220>>2];r:{if((-2&e)==2){e=rX(r,4,o,2140081935);break r}e=rY(r,o,2140081935)}e:{a:{i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break e;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break i;case 1:break n;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break i}f=w(w(f*a)*w(.009999999776482582))}if(f>=w(0))return f;if(b=f,f>2];r:{if((-2&e)==2){e=rX(r,5,o,2140081935);break r}e=rY(r,o,2140081935)}e:{a:{i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break e;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break i;case 1:break n;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break i}f=w(w(f*a)*w(.009999999776482582))}if(f>=w(0))return f;if(b=f,f>2]=0,l[e+556>>2]=0,l[e+560>>2]=0,n=l[a+556>>2],i=l[a+560>>2],(0|n)!=(0|i)){if((0|(t=i-n|0))<0)break r;for(r=eo(t),l[e+556>>2]=r,l[e+564>>2]=r+t;l[r>>2]=l[n>>2],r=r+4|0,(0|i)!=(0|(n=n+4|0)););l[e+560>>2]=r}r=l[a+572>>2],l[e+568>>2]=l[a+568>>2],l[e+572>>2]=r,l[e+584>>2]=l[a+584>>2],r=l[a+580>>2],l[e+576>>2]=l[a+576>>2],l[e+580>>2]=r,l[e+552>>2]=0}return f}T(),k()}function rB(r,e){var a=0,i=0,n=0;re=n=re-16|0,l[n+12>>2]=e;r:{e:{if(!r){e=l[n+12>>2];break e}if(e=l[n+12>>2],!(a=l[r+568>>2]))break e;if(i=l[a+4>>2],d[a+9|0]){eY[0|i](a,r,5,0,4215,e);break r}eY[0|i](a,r,5,4215,e);break r}a:{if(!d[6936]){A[(a=eo(28))+20>>1]=0,l[a+16>>2]=1065353216,A[a+10>>1]=0,A[a+12>>1]=0,l[a>>2]=0,l[a+24>>2]=0,s[a+9|0]=0,i=1,l[a+4>>2]=1,s[a+22|0]=0,l[1733]=a,s[6936]=1,l[1732]=l[1732]+1;break a}if(a=l[1733],i=l[a+4>>2],!d[a+9|0])break a;eY[0|i](a,r,5,0,4215,e);break r}eY[0|i](a,r,5,4215,e)}re=n+16|0}function rT(r,e,a){var i,n,f=w(0),b=0,o=w(0);r=r+80|0,b=l[(e<<2)+4236>>2];r:{e:{if((-2&e)==2){e=rX(r,5,b,2140081935);break e}e=rY(r,b,2140081935)}a:{i:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;n:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break n;r=4268}switch(f=p[r>>2],o=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break i;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}o=w(w(f*a)*w(.009999999776482582))}return o}return f}function rI(r,e,a){var i,n,f=w(0),b=0,o=w(0);r=r+80|0,b=l[(e<<2)+4220>>2];r:{e:{if((-2&e)==2){e=rX(r,4,b,2140081935);break e}e=rY(r,b,2140081935)}a:{i:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;n:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break n;r=4268}switch(f=p[r>>2],o=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break i;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}o=w(w(f*a)*w(.009999999776482582))}return o}return f}function rX(r,e,a,i){var n=w(0);n=p[(e=(e<<2)+r|0)>>2],e=l[e>>2];r:if(!((0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n)){if(n=p[(e=(a<<2)+r|0)>>2],(0|(e=l[e>>2]))==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n||(e=l[r+24>>2],n=p[r+24>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n)||(n=p[r+32>>2],!((0|(r=l[r+32>>2]))==2139156720|(0|r)==2140081935|(0|r)==2141891242)&&(e=i,n!=n)))break r;e=r}return e}function rO(r,e,a,i,n){var f=0,t=0,b=w(0),o=0;f=2,t=l[r+24>>2]>>>2&3;r:{e:{a:{if(!(!l[r+552>>2]|(0|e)!=2)){e=0,f=3;i:switch(t-2|0){case 0:break r;case 1:break i;default:break a}f=2;break r}if(e=0,t>>>0>1)break e}e=f}f=t}a=ey(r,f,a),i=ey(r,e,i),b=rP(r,f,n),p[(t=r+228|0)+(l[(o=f<<2)+4220>>2]<<2)>>2]=a+b,b=rS(r,f,n),p[t+(l[o+4236>>2]<<2)>>2]=a+b,a=rP(r,e,n),p[t+(l[(f=e<<2)+4220>>2]<<2)>>2]=i+a,a=rS(r,e,n),p[t+(l[f+4236>>2]<<2)>>2]=i+a}function rL(r){var e=0,a=0,i=0,n=0;if(r|=0){if(e=l[r>>2],(a=l[e+552>>2])&&(rq(a,e),l[e+552>>2]=0),i=l[e+560>>2],a=l[e+556>>2],(0|i)!=(0|a))for(n=(i=i-a>>2)>>>0<=1?1:i,i=0;l[l[a+(i<<2)>>2]+552>>2]=0,(0|n)!=(0|(i=i+1|0)););l[e+560>>2]=a,r_(e+556|0),(a=l[e+556>>2])&&(l[e+560>>2]=a,rE(a)),rE(e),e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),rE(r)}}function r_(r){var e=0,a=0,i=0,n=0,f=0;re=n=re-32|0,e=l[r>>2],a=l[r+4>>2]-e>>2;r:if(!(a>>>0>=l[r+8>>2]-e>>2>>>0)){if(a=en(n+8|0,a,a,r+8|0),e=l[r>>2],i=l[r+4>>2]-e|0,i=rm(l[a+4>>2]-i|0,e,i),e=l[r>>2],l[r>>2]=i,l[a+4>>2]=e,i=l[r+4>>2],l[r+4>>2]=l[a+8>>2],l[a+8>>2]=i,f=l[r+8>>2],l[r+8>>2]=l[a+12>>2],l[a>>2]=e,l[a+12>>2]=f,(0|e)!=(0|i)&&(l[a+8>>2]=i+((e-i|0)+3&-4)),!e)break r;rE(e)}re=n+32|0}function rF(r,e,a){var i=0,n=0,f=0;if(!(32&d[0|r]))r:{i=e,r=l[(e=r)+16>>2];e:{if(!r){if(ef(e))break e;r=l[e+16>>2]}if(f=l[e+20>>2],r-f>>>0>>0){eY[l[e+36>>2]](e,i,a);break r}a:if(!(l[e+80>>2]<0)){for(r=a;;){if(n=r,!r)break a;if(10==d[i+(r=n-1|0)|0])break}if(eY[l[e+36>>2]](e,i,n)>>>0>>0)break e;i=i+n|0,a=a-n|0,f=l[e+20>>2]}ru(f,i,a),l[e+20>>2]=l[e+20>>2]+a}}}function rC(r,e,a){var i=0,n=0,f=0;re=i=re-16|0,n=r+24|0,eY[0|e](i+8|0,n),f=l[i+12>>2];r:if((l[l[i+8>>2]>>2]&7<>f!=(0|a))for(eY[0|e](i+8|0,n),n=e=l[i+8>>2],f=l[e>>2],e=l[i+12>>2],l[n>>2]=f&(7<>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}re=i+16|0}function rS(r,e,a){var i,n,f=w(0),b=0;r=r+44|0,b=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,b,2140081935);break r}r=rY(r,b,2140081935)}e:{if((0|r)!=2139156720){if((0|r)==2140081935|(0|r)==2141891242)break e;if(i=r,t[2]=i,(f=u())!=f)return w(NaN);if(n=(-1073741825&r)+536870912|0,t[2]=n,f=u(),!(1073741824&r))break e}f=w(w(f*a)*w(.009999999776482582))}return f}function rP(r,e,a){var i,n,f=w(0),b=0;r=r+44|0,b=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,b,2140081935);break r}r=rY(r,b,2140081935)}e:{if((0|r)!=2139156720){if((0|r)==2140081935|(0|r)==2141891242)break e;if(i=r,t[2]=i,(f=u())!=f)return w(NaN);if(n=(-1073741825&r)+536870912|0,t[2]=n,f=u(),!(1073741824&r))break e}f=w(w(f*a)*w(.009999999776482582))}return f}function rY(r,e,a){var i=w(0);i=p[(e=(e<<2)+r|0)>>2],e=l[e>>2];r:if(!((0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|i==i)){if(e=l[r+28>>2],i=p[r+28>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|i==i||(i=p[r+32>>2],!((0|(r=l[r+32>>2]))==2139156720|(0|r)==2140081935|(0|r)==2141891242)&&(e=a,i!=i)))break r;e=r}return e}function rU(r,e){var a,i,n=w(0),f=0;r=r+152|0,f=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,f,2140081935);break r}r=rY(r,f,2140081935)}n=w(0);e:if((0|r)!=2139156720){if(n=w(0),(0|r)==2140081935)break e;a:if((0|r)!=2141891242&&(a=r,t[2]=a,(n=u())==n)){i=(-1073741825&r)+536870912|0,t[2]=i,n=u();break e}n=w(NaN)}return eu(n,w(0))}function rM(r,e){var a,i,n=w(0),f=0;r=r+152|0,f=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,f,2140081935);break r}r=rY(r,f,2140081935)}n=w(0);e:if((0|r)!=2139156720){if(n=w(0),(0|r)==2140081935)break e;a:if((0|r)!=2141891242&&(a=r,t[2]=a,(n=u())==n)){i=(-1073741825&r)+536870912|0,t[2]=i,n=u();break e}n=w(NaN)}return eu(n,w(0))}function rH(r,e,a,i){var n=0,f=0,t=0;r*=e,t=(n=(n=rl(r))<0?n+1:n)!=n;r:{if(!(!(1e-4>y(n))|t)){r-=n;break r}e:{if(n!=n){r-=n;break e}if(r-=n,!(1e-4>y(n+-1)))break e;r+=1;break r}if(a){r+=1;break r}if(i)break r;f=0;a:if(!t){if(f=1,n>.5)break a;f=1e-4>y(n+-.5)?1:0}r+=f}return r!=r|e!=e?w(NaN):w(r/e)}function rQ(r){var e=w(0),a=0,i=w(0);a=0;r:if((196608&l[r+24>>2])!=131072){e:if(l[r+552>>2]){e=p[r+32>>2];a:if((e==e||(e=p[r+28>>2])>w(0))&&(a=1,e!=w(0)))break r;if((e=p[r+36>>2])==e)break e;if(s[r+4|0]<0){e=w(1);break e}if(e=w(0),!((i=p[r+28>>2])>2]=2143289344,l[r+4>>2]=3;return}l[r>>2]=0,l[r+4>>2]=1;return}l[r>>2]=0,l[r+4>>2]=2;return}if(t[2]=e,(a=u())!=a){l[r>>2]=2143289344,l[r+4>>2]=0;return}l[r+4>>2]=1073741824&e?2:1,l[r>>2]=(-1073741825&e)+536870912}function rj(r){var e=0,a=0,i=0;a=l[r+24>>2];r:if(8&a){if(e=1,(7168&a)==5120||(e=0,i=l[r+560>>2],a=l[r+556>>2],(0|i)==(0|a)))break r;for(i=(r=i-a>>2)>>>0<=1?1:r,r=0;;){if(e=(196608&(e=l[l[a+(r<<2)>>2]+24>>2]))!=131072&(57344&e)==40960)break r;if((0|i)==(0|(r=r+1|0)))break}}return e}function rD(r){var e,a=0,i=w(0);a=2143289344;r:if(!(w(y(r))==w(1/0)|r!=r||(a=2139156720,rw(-.00000000000000000010842021724855044)|r==w(0)))){c(r),e=-2147483648&t[2]|1602224127,t[2]=e,i=u(),c(r>w(18446742974197924e3)?i:rw(-.00000000000000000010842021724855044)|r==w(0)))){c(r),e=-2147483648&t[2]|1610612735,t[2]=e,i=u(),c(r>w(36893485948395848e3)?i:r>2]);break r}e:{if(d[6936]){e=l[1733];break e}A[(e=eo(28))+20>>1]=0,l[e+16>>2]=1065353216,A[e+10>>1]=0,A[e+12>>1]=0,l[e>>2]=0,l[e+24>>2]=0,s[e+9|0]=0,l[e+4>>2]=1,s[e+22|0]=0,l[1733]=e,s[6936]=1,l[1732]=l[1732]+1}e=ev(e)}return l[r+4>>2]=0,l[r+8>>2]=0,l[r>>2]=e,l[e>>2]=r,r}function rK(r,e,a){var i=0,n=0,f=0;r:{if(!e){i=r;break r}for(;r=r9(i=rh(r,e,10),n=ra,246,0)+r|0,s[0|(a=a-1|0)]=48|r,f=e>>>0>9,r=i,e=n,f;);}if(i)for(;a=a-1|0,r=(i>>>0)/10|0,s[0|a]=N(r,246)+i|48,e=i>>>0>9,i=r,e;);return a}function rq(r,e){var a=0,i=0;r:{e:if(a=l[r+556>>2],i=l[r+560>>2],(0|a)!=(0|i)){for(;;){if(l[a>>2]==(0|e))break e;if((0|i)==(0|(a=a+4|0)))break}break r}if((0|a)==(0|i))break r;return e=a+4|0,rm(a,e,i-e|0),l[r+560>>2]=i-4,1}return 0}function r$(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+184>>2]!=(0|a))for(l[((e<<2)+i|0)+184>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r0(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+192>>2]!=(0|a))for(l[((e<<2)+i|0)+192>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r2(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+176>>2]!=(0|a))for(l[((e<<2)+i|0)+176>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r1(r,e){var a=0,i=0,n=0;r:if(l[(a=r+24|0)+16>>2]!=(0|e))for(i=0|eY[9](a),n=e,l[i+16>>2]=n;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r4(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+56>>2]!=(0|a))for(l[((e<<2)+i|0)+56>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r3(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+92>>2]!=(0|a))for(l[((e<<2)+i|0)+92>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r8(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+20>>2]!=(0|a))for(l[((e<<2)+i|0)+20>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r6(r,e){var a,i=0,n=w(0);r=r+80|0,i=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,i,2143289344);break r}r=rY(r,i,2143289344)}return(0|r)==2139156720|(0|r)==2140081935|(0|r)==2141891242?r=1:(a=r,t[2]=a,r=(n=u())==n),r}function r5(r,e){var a,i=0,n=w(0);r=r+80|0,i=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,i,2143289344);break r}r=rY(r,i,2143289344)}return(0|r)==2139156720|(0|r)==2140081935|(0|r)==2141891242?r=1:(a=r,t[2]=a,r=(n=u())==n),r}function r9(r,e,a,i){var n=0,f=0,t=0,b=0,o=0,k=0;return k=N(n=a>>>16|0,f=r>>>16|0),n=(65535&(f=((o=N(t=65535&a,b=65535&r))>>>16|0)+N(f,t)|0))+N(n,b)|0,ra=(N(e,a)+k|0)+N(r,i)+(f>>>16)+(n>>>16)|0,65535&o|n<<16}function r7(r,e){var a=0,i=0,n=0;re=i=re-16|0,n=-17&(a=d[r+4|0]),s[r+4|0]=n;r:{if(e){if(l[r+560>>2]!=l[r+556>>2])break r;a=8|n}else a&=231;l[r+8>>2]=e,s[r+4|0]=a,re=i+16|0;return}l[i>>2]=4059,rB(r,i),eX(),k()}function er(r,e,a,i,n){var f=0;if(re=f=re-256|0,!(73728&n|(0|a)<=(0|i))){if(ry(f,255&e,(a=(i=a-i|0)>>>0<256)?i:256),!a)for(;rF(r,f,256),(i=i-256|0)>>>0>255;);rF(r,f,i)}re=f+256|0}function ee(r,e,a){var i=0,n=w(0);r:((-2&a)!=2||(n=p[(i=e- -64|0)>>2],!((0|(i=l[i>>2]))==2139156720|(0|i)==2140081935|(0|i)==2141891242|n==n)))&&(i=l[((l[(a<<2)+4236>>2]<<2)+e|0)+44>>2]);rz(r,i)}function ea(r,e,a){var i=0,n=w(0);r:((-2&a)!=2||(i=l[e+60>>2],n=p[e+60>>2],!((0|i)==2139156720|(0|i)==2140081935|(0|i)==2141891242|n==n)))&&(i=l[((l[(a<<2)+4220>>2]<<2)+e|0)+44>>2]);rz(r,i)}function ei(r){var e=0,a=0,i=0;for(i=l[r>>2];;){if(eO(a=s[0|i])){i=i+1|0,l[r>>2]=i,e=e>>>0<=214748364?(0|(a=a-48|0))>(2147483647^(e=N(e,10)))?-1:a+e|0:-1;continue}break}return e}function en(r,e,a,i){var n=0;l[r+12>>2]=0,l[r+16>>2]=i;r:{if(e){if(e>>>0>=1073741824)break r;n=eo(e<<2)}return l[r>>2]=n,a=(a<<2)+n|0,l[r+8>>2]=a,l[r+12>>2]=(e<<2)+n,l[r+4>>2]=a,r}eP(),k()}function ef(r){var e=0;return(e=l[r+72>>2],l[r+72>>2]=e-1|e,8&(e=l[r>>2]))?(l[r>>2]=32|e,-1):(l[r+4>>2]=0,l[r+8>>2]=0,e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,l[r+16>>2]=e+l[r+48>>2],0)}function et(r,e,a,i){r|=0,e|=0,a|=0,i|=0;var n=0;n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](e,a,i)}function eb(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),0|eY[0|i](e,a)}function eo(r){var e=0;r=r||1;r:{for(;;){if(e=rb(r))break r;if(e=l[2022]){eY[0|e]();continue}break}T(),k()}return e}function ek(r,e,a){r|=0,e|=0,a|=0;var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)}function ec(r,e){r|=0,e|=0;var a=0;return a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),0|eY[0|a](e)}function eu(r,e){return(c(r),(2147483647&t[2])>>>0<=2139095040)?(c(e),(2147483647&t[2])>>>0>2139095040)?r:w(R(r,e)):e}function es(r,e){return(c(r),(2147483647&t[2])>>>0<=2139095040)?(c(e),(2147483647&t[2])>>>0>2139095040)?r:w(G(r,e)):e}function eA(r,e){r|=0,e|=0;var a=0;return re=a=re-16|0,l[a+8>>2]=e,r=0|eY[0|r](a+8|0),I(l[a+8>>2]),re=a+16|0,0|r}function el(r,e){if(!r)return 0;r:{if(!((-128&e)==57216|e>>>0<=127)){l[1761]=25,r=-1;break r}s[0|r]=e,r=1}return r}function ed(r,e){var a=0,i=0;l[(a=eo(4))>>2]=e,l[(i=eo(4))>>2]=e,X(6955,0|r,7018,4630,192,0|a,7018,4634,193,0|i)}function eh(r,e){var a=0,i=0;l[(a=eo(4))>>2]=e,l[(i=eo(4))>>2]=e,X(6985,0|r,7018,4630,190,0|a,7018,4634,191,0|i)}function ev(r){var e=0,a=0;return re=e=re-16|0,a=rk(eo(588),r),r||(l[e>>2]=2759,rB(0,e),eX(),k()),re=e+16|0,a}function ep(r,e){var a=0;r:{if(1&s[6964]){a=l[1740];break r}a=0|F(1,4400),s[6964]=1,l[1740]=a}Q(0|a,0|r,0|e,0)}function em(r,e){r|=0,e|=0;var a=0;a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),eY[0|a](e)}function eN(r){return l[(r|=0)>>2]=4508,d[r+4|0]&&ep(l[r+8>>2],1758),I(l[r+8>>2]),0|r}function ew(r){return l[(r|=0)>>2]=4388,d[r+4|0]&&ep(l[r+8>>2],1758),I(l[r+8>>2]),0|r}function ey(r,e,a){return r5(r,e)?rI(r,e,a):((a=rT(r,e,a))==a&&(a=w(-a)),a)}function eE(r){var e=0;(r|=0)&&((e=l[r>>2])&&rE(e),l[1732]=l[1732]-1,rE(r))}function eG(r,e,a){e|=0,a=+a,m[l[(r|=0)>>2]+e>>3]=a}function eR(r,e){return e|=0,+m[l[(r|=0)>>2]+e>>3]}function eg(r){(r|=0)&&eY[l[l[r>>2]+4>>2]](r)}function eZ(r){return r?(l[1761]=r,-1):0}function eW(r,e,a){return w(rP(r,e,a)+rS(r,e,a))}function eV(r,e,a,i){j(0|r,0|e,8,0,0|a,-1,0|i)}function eB(r,e){e|=0,eY[l[(r|=0)>>2]](e)}function eT(r){return 0|eY[0|(r|=0)]()}function eI(r,e){e|=0,eY[0|(r|=0)](e)}function eX(){eY[l[1470]](),eP(),k()}function eO(r){return r-48>>>0<10}function eL(r){(r|=0)&&rE(r)}function e_(r){return 0|(r|=0)}function eF(r){s[(r|=0)+4|0]=1}function eC(r){k()}function eS(){eP(),k()}function eP(){T(),k()}n(e=d,1024,\"T25seSBsZWFmIG5vZGVzIHdpdGggY3VzdG9tIG1lYXN1cmUgZnVuY3Rpb25zc2hvdWxkIG1hbnVhbGx5IG1hcmsgdGhlbXNlbHZlcyBhcyBkaXJ0eQBpc0RpcnR5AG1hcmtEaXJ0eQBkZXN0cm95AHNldERpc3BsYXkAZ2V0RGlzcGxheQBzZXRGbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAc2V0RmxleEdyb3cAZ2V0RmxleEdyb3cAc2V0T3ZlcmZsb3cAZ2V0T3ZlcmZsb3cAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AHNldEFsaWduQ29udGVudABnZXRBbGlnbkNvbnRlbnQAZ2V0UGFyZW50AGltcGxlbWVudABzZXRNYXhIZWlnaHRQZXJjZW50AHNldEhlaWdodFBlcmNlbnQAc2V0TWluSGVpZ2h0UGVyY2VudABzZXRGbGV4QmFzaXNQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHVzZUxlZ2FjeVN0cmV0Y2hCZWhhdmlvdXIAc2V0VXNlTGVnYWN5U3RyZXRjaEJlaGF2aW91cgBzZXRQb2ludFNjYWxlRmFjdG9yAE1lYXN1cmVDYWxsYmFja1dyYXBwZXIARGlydGllZENhbGxiYWNrV3JhcHBlcgBDYW5ub3QgcmVzZXQgYSBub2RlIHN0aWxsIGF0dGFjaGVkIHRvIGEgb3duZXIAc2V0Qm9yZGVyAGdldEJvcmRlcgBnZXRDb21wdXRlZEJvcmRlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRNYXJnaW5BdXRvAHNldFdpZHRoQXV0bwBTY2FsZSBmYWN0b3Igc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gemVybwBzZXRBc3BlY3RSYXRpbwBnZXRBc3BlY3RSYXRpbwBzZXRQb3NpdGlvbgBnZXRQb3NpdGlvbgBub3RpZnlPbkRlc3RydWN0aW9uAHNldEZsZXhEaXJlY3Rpb24AZ2V0RmxleERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBjcmVhdGVXaXRoQ29uZmlnAGluZgBzZXRBbGlnblNlbGYAZ2V0QWxpZ25TZWxmAFNpemUAdmFsdWUAVmFsdWUAY3JlYXRlAG1lYXN1cmUAc2V0UG9zaXRpb25UeXBlAGdldFBvc2l0aW9uVHlwZQBpc1JlZmVyZW5jZUJhc2VsaW5lAHNldElzUmVmZXJlbmNlQmFzZWxpbmUAY29weVN0eWxlAGRvdWJsZQBOb2RlAGV4dGVuZABpbnNlcnRDaGlsZABnZXRDaGlsZAByZW1vdmVDaGlsZAB2b2lkAGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodE1lYXN1cmVNb2RlIG11c3QgYmUgWUdNZWFzdXJlTW9kZVVuZGVmaW5lZABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoTWVhc3VyZU1vZGUgbXVzdCBiZSBZR01lYXN1cmVNb2RlVW5kZWZpbmVkAHNldEV4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGlzRXhwZXJpbWVudGFsRmVhdHVyZUVuYWJsZWQAZGlydGllZABDYW5ub3QgcmVzZXQgYSBub2RlIHdoaWNoIHN0aWxsIGhhcyBjaGlsZHJlbiBhdHRhY2hlZAB1bnNldE1lYXN1cmVGdW5jAHVuc2V0RGlydGllZEZ1bmMARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQAlcwoAAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAE=\"),n(e,4270,\"wH8AAAAAAADAfwMAAABpaQB2AHZp\"),n(e,4304,\"KxsAACkbAABpGwAAYxsAAGkbAABjGwAAaWlpZmlmaQBcGwAALBsAAHZpaQAtGwAAcBsAAGlpaQ==\"),n(e,4368,\"wwAAAMQAAADF\"),n(e,4388,\"wwAAAMYAAADHAAAAXBs=\"),n(e,4416,\"KxsAAGkbAABjGwAAaRsAAGMbAABwGwAAaxsAAHAbAABpaWlpAAAAAFwbAABBGwAAXBsAAEMbAABEGwAAcBs=\"),n(e,4488,\"yAAAAMkAAADK\"),n(e,4508,\"yAAAAMsAAADHAAAARxsAAFwbAABHGw==\"),n(e,4544,\"XBsAAEcbAABjGwAAXRsAAHZpaWlpAAAAXBsAAEcbAABpGwAAdmlpZgAAAABcGwAARxsAAF0bAAB2aWlpAAAAAF0bAABIGwAAYxsAAF0bAABHGwAAaQBkaWkAdmlpZAAATBsAAEwbAABHGwAAXBsAAEwbAABcGwAATBsAAEsbAABcGwAATBsAAGMbAAAAAAAAXBsAAEwbAABjGwAAahsAAHZpaWlkAAAAXBsAAEwbAABqGwAAYxsAAE0bAABKGwAATRsAAGMbAABKGwAATRsAAGobAABNGwAAahsAAE0bAABjGwAAZGlpaQAAAABpGwAATBsAAGMbAABmaWlpAAAAAFwbAABMGwAATBsAAGQbAABcGwAATBsAAEwbAABkGwAATRsAAEwbAABMGwAATBsAAEwbAABkGwAAXRsAAEwbAABcGwAATBsAAF0bAABcGwAATBsAACkbAABcGwAATBsAAEEbAABdGwAATRsAAAAAAABcGwAATBsAAGobAABqGwAAYxsAAHZpaWRkaQAASRsAAE0b\"),n(e,4960,\"GQAKABkZGQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAAZABEKGRkZAwoHAAEACQsYAAAJBgsAAAsABhkAAAAZGRk=\"),n(e,5041,\"DgAAAAAAAAAAGQAKDRkZGQANAAACAAkOAAAACQAOAAAO\"),n(e,5099,\"DA==\"),n(e,5111,\"EwAAAAATAAAAAAkMAAAAAAAMAAAM\"),n(e,5157,\"EA==\"),n(e,5169,\"DwAAAAQPAAAAAAkQAAAAAAAQAAAQ\"),n(e,5215,\"Eg==\"),n(e,5227,\"EQAAAAARAAAAAAkSAAAAAAASAAASAAAaAAAAGhoa\"),n(e,5282,\"GgAAABoaGgAAAAAAAAk=\"),n(e,5331,\"FA==\"),n(e,5343,\"FwAAAAAXAAAAAAkUAAAAAAAUAAAU\"),n(e,5389,\"Fg==\"),n(e,5401,\"FQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVG\"),n(e,5476,\"0Q==\"),n(e,5516,\"//////////8=\"),n(e,5584,\"oB8BAAAAAAAF\"),n(e,5604,\"zA==\"),n(e,5628,\"zQAAAM4AAACEGw==\"),n(e,5652,\"Ag==\"),n(e,5668,\"//////////8=\"),n(e,5736,\"BQ==\"),n(e,5748,\"zw==\"),n(e,5772,\"zQAAANAAAACYGwAAAAQ=\"),n(e,5796,\"AQ==\"),n(e,5812,\"/////wo=\"),n(e,5880,\"0g==\");var eY=((a=[null,function(r,e,a,i,n){var f,t,b,o,k,c;return(i|=0,n|=0,(a|=0)?(0|a)!=5:0)?0|rG(f=5736,t=i,b=n,2,3):0|rG(o=5592,k=i,c=n,2,3)},function(r,e,a,i,n,f){r|=0,e=+e,a|=0,i|=0,n|=0,f|=0;var b,k,c=0,u=0,A=0,h=0,v=0,p=0,m=0,w=0,E=0,G=0,R=0,g=0,Z=0,W=0,V=0,B=0,T=0,I=0,X=0;re=m=re-560|0,l[m+44>>2]=0,b=+e,o[0]=b,c=0|t[1],t[0];r:{if((0|c)<0){Z=1,I=1176,k=+(e=-e),o[0]=k,c=0|t[1],t[0];break r}if(2048&n){Z=1,I=1179;break r}I=(Z=1&n)?1182:1177,X=!Z}e:{if((2146435072&c)==2146435072){er(r,32,a,c=Z+3|0,-65537&n),rF(r,I,Z),i=32&f,rF(r,e!=e?i?2450:3390:i?2819:3394,3),er(r,32,a,c,8192^n),w=(0|a)<(0|c)?c:a;break e}V=m+16|0;a:{i:{n:{if(e=function r(e,a){var i,n,f,b=0,k=0,c=0;if(i=+e,o[0]=i,k=0|t[1],c=0|t[0],(0|(b=k>>>20&2047))!=2047){if(!b)return 0==e?b=0:(e=r(18446744073709552e3*e,a),b=l[a>>2]+-64|0),l[a>>2]=b,e;l[a>>2]=b-1022,n=0|c,t[0]=n,f=-2146435073&k|1071644672,t[1]=f,e=+o[0]}return e}(e,m+44|0),0!=(e+=e)){if(c=l[m+44>>2],l[m+44>>2]=c-1,(0|(B=32|f))!=97)break n;break a}if((0|(B=32|f))==97)break a;v=l[m+44>>2],p=(0|i)<0?6:i;break i}v=c-29|0,l[m+44>>2]=v,e*=268435456,p=(0|i)<0?6:i}for(u=R=(m+48|0)+((0|v)>=0?288:0)|0;i=e<4294967296&e>=0?~~e>>>0:0,l[u>>2]=i,u=u+4|0,0!=(e=(e-+(i>>>0))*1e9););f:{if((0|v)<=0){i=v,c=u,A=R;break f}for(A=R,i=v;;){E=(0|i)>=29?29:i,c=u-4|0;t:if(!(A>>>0>c>>>0)){for(i=0;h=l[c>>2],T=i,i=31&E,(63&E)>>>0>=32?(w=h<>>32-i,i=h<>>0>T>>>0?h+1|0:h,1e9),ra,-1e9,0)+T|0,l[c>>2]=h,A>>>0<=(c=c-4|0)>>>0;);if(!i)break t;l[(A=A-4|0)>>2]=i}for(;c=u,A>>>0>>0&&!l[(u=c-4|0)>>2];);if(i=l[m+44>>2]-E|0,l[m+44>>2]=i,u=c,!((0|i)>0))break}}if((0|i)<0)for(W=((p+25>>>0)/9|0)+1|0,G=(0|B)==102;;){w=(0|(i=0-i|0))>=9?9:i;b:{if(c>>>0<=A>>>0){u=l[A>>2];break b}for(E=1e9>>>w|0,h=-1<>2],l[u>>2]=T+(i>>>w|0),i=N(E,i&h),(u=u+4|0)>>>0>>0;);if(u=l[A>>2],!i)break b;l[c>>2]=i,c=c+4|0}if(i=w+l[m+44>>2]|0,l[m+44>>2]=i,A=(!u<<2)+A|0,u=G?R:A,c=c-u>>2>(0|W)?u+(W<<2)|0:c,!((0|i)<0))break}i=0;o:if(!(c>>>0<=A>>>0)){if(i=N(R-A>>2,9),u=10,(h=l[A>>2])>>>0<10)break o;for(;i=i+1|0,u=N(u,10),h>>>0>=u>>>0;);}if((0|(u=(p-((0|B)!=102?i:0)|0)-((0|B)==103&(0|p)!=0)|0))<(N(c-R>>2,9)-9|0)){if(h=(0|(E=u+9216|0))/9|0,v=((((0|v)<0?4:292)+m|0)+(h<<2)|0)-4048|0,u=10,(0|(w=E+N(h,-9)|0))<=7)for(;u=N(u,10),(0|(w=w+1|0))!=8;);W=((E=l[v>>2])>>>0)/(u>>>0)|0,G=N(W,u),h=v+4|0;k:if(!((0|E)==(0|G)&(0|h)==(0|c))){E=E-G|0;c:(1&W||(e=9007199254740992,!(!(1&s[v-4|0])|((0|u)!=1e9|A>>>0>=v>>>0))))&&(e=9007199254740994);if(g=(0|c)==(0|h)?1:1.5,g=(h=u>>>1|0)>>>0>E>>>0?.5:(0|h)==(0|E)?g:1.5,45!=d[0|I]|X||(g=-g,e=-e),l[v>>2]=G,e+g==e)break k;if(i=u+G|0,l[v>>2]=i,i>>>0>=1e9)for(;l[v>>2]=0,(v=v-4|0)>>>0>>0&&(l[(A=A-4|0)>>2]=0),i=l[v>>2]+1|0,l[v>>2]=i,i>>>0>999999999;);if(i=N(R-A>>2,9),u=10,(h=l[A>>2])>>>0<10)break k;for(;i=i+1|0,u=N(u,10),h>>>0>=u>>>0;);}c=c>>>0>(u=v+4|0)>>>0?u:c}for(;h=c,!(E=c>>>0<=A>>>0)&&!l[(c=h-4|0)>>2];);u:{if((0|B)!=103){v=8&n;break u}if(p=((c=(0|(u=p||1))>(0|i)&(0|i)>-5)?-1^i:-1)+u|0,f=(c?-1:-2)+f|0,v=8&n)break u;c=-9;s:if(!E&&(v=l[h-4>>2])){if(w=10,c=0,(v>>>0)%10|0)break s;for(;u=c,c=c+1|0,w=N(w,10),!((v>>>0)%(w>>>0)|0););c=-1^u}if(u=N(h-R>>2,9),(-33&f)==70){v=0,p=(0|(c=(0|(c=(c+u|0)-9|0))>0?c:0))>(0|p)?p:c;break u}v=0,p=(0|(c=(0|(c=((i+u|0)+c|0)-9|0))>0?c:0))>(0|p)?p:c}if(w=-1,(((E=v|p)?2147483645:2147483646)|0)<(0|p))break e;G=(((0|E)!=0)+p|0)+1|0,u=-33&f;A:{if((0|u)==70){if((2147483647^G)<(0|i))break e;c=(0|i)>0?i:0;break A}if(c=rK(((c=i>>31)^i)-c|0,0,V),(V-c|0)<=1)for(;s[0|(c=c-1|0)]=48,(V-c|0)<2;);if(s[0|(W=c-2|0)]=f,s[c-1|0]=(0|i)<0?45:43,(0|(c=V-W|0))>(2147483647^G))break e}if((0|(i=c+G|0))>(2147483647^Z))break e;er(r,32,a,G=i+Z|0,n),rF(r,I,Z),er(r,48,a,G,65536^n);l:{d:{h:{if((0|u)==70){for(i=8|(f=m+16|0),v=9|f,A=u=A>>>0>R>>>0?R:A;;){c=rK(l[A>>2],0,v);v:{if((0|u)!=(0|A)){if(m+16>>>0>=c>>>0)break v;for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);break v}if((0|c)!=(0|v))break v;s[m+24|0]=48,c=i}if(rF(r,c,v-c|0),!(R>>>0>=(A=A+4|0)>>>0))break}if(E&&rF(r,4206,1),(0|p)<=0|A>>>0>=h>>>0)break h;for(;;){if((c=rK(l[A>>2],0,v))>>>0>m+16>>>0)for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);if(rF(r,c,(0|p)>=9?9:p),c=p-9|0,h>>>0<=(A=A+4|0)>>>0)break d;if(i=(0|p)>9,p=c,!i)break}break d}p:if(!((0|p)<0))for(R=A>>>0>>0?h:A+4|0,i=8|(f=m+16|0),h=9|f,u=A;;){c=rK(l[u>>2],0,h),(0|h)==(0|c)&&(s[m+24|0]=48,c=i);m:{if((0|u)!=(0|A)){if(m+16>>>0>=c>>>0)break m;for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);break m}if(rF(r,c,1),c=c+1|0,!(v|p))break m;rF(r,4206,1)}if(f=h-c|0,rF(r,c,(0|f)>(0|p)?p:f),p=p-f|0,R>>>0<=(u=u+4|0)>>>0)break p;if(!((0|p)>=0))break}er(r,48,p+18|0,18,0),rF(r,W,V-W|0);break l}c=p}er(r,48,c+9|0,9,0)}er(r,32,a,G,8192^n),w=(0|a)<(0|G)?G:a;break e}v=(f<<26>>31&9)+I|0;N:if(!(i>>>0>11)){for(c=12-i|0,g=16;g*=16,c=c-1|0;);if(45==d[0|v]){e=-(g+(-e-g));break N}e=e+g-g}for(R=2|Z,A=32&f,c=(u=l[m+44>>2])>>31,c=rK((c^u)-c|0,0,V),(0|V)==(0|c)&&(s[m+15|0]=48,c=m+15|0),s[0|(p=c-2|0)]=f+15,s[c-1|0]=(0|u)<0?45:43,c=8&n,u=m+16|0;f=u,h=2147483648>y(e)?~~e:-2147483648,s[0|u]=A|d[h+5424|0],!(c|(0|i)>0)&0==(e=(e-+(0|h))*16)|((u=f+1|0)-(m+16|0)|0)!=1||(s[f+1|0]=46,u=f+2|0),0!=e;);if(w=-1,(2147483645-(f=(c=V-p|0)+R|0)|0)<(0|i))break e;w:{y:if(i&&!(((A=u-(m+16|0)|0)-2|0)>=(0|i))){i=i+2|0;break w}i=A=u-(m+16|0)|0}er(r,32,a,f=i+f|0,n),rF(r,v,R),er(r,48,a,f,65536^n),rF(r,m+16|0,A),er(r,48,i-A|0,0,0),rF(r,p,c),er(r,32,a,f,8192^n),w=(0|a)<(0|f)?f:a}return re=m+560|0,0|w},function(r,e){r|=0,e|=0;var a,i,n=0,f=0,b=0,k=0,c=0,u=0,s=0,A=0,d=0,h=0,v=0,p=0,N=0,w=0,y=0,E=0;n=e,e=l[e>>2]+7&-8,l[n>>2]=e+16,N=r,s=l[e>>2],f=l[e+4>>2],v=r=l[e+12>>2],re=c=re-32|0,r&=2147483647,u=r,b=r-1006698496|0,r=r-1140785152|0,e=n=l[e+8>>2];r:{if((0|b)==(0|r)&e>>>0>>0|r>>>0>b>>>0){if(n=v<<4|(r=n)>>>28,e=r<<4|f>>>28,r=n,(0|(f&=268435455))==134217728&(0|s)!=0|f>>>0>134217728){r=r+1073741824|0,r=(e=e+1|0)?r:r+1|0;break r}if(r=r+1073741824|0,s|(0|f)!=134217728)break r;r=(e=(f=1&e)+e|0)>>>0>>0?r+1|0:r;break r}if(!(!e&(0|u)==2147418112?!(f|s):u>>>0<2147418112)){n=v<<4|(r=n)>>>28,e=r<<4|f>>>28,r=524287&n|2146959360;break r}if(e=0,r=2146435072,u>>>0>1140785151||(r=0,(p=u>>>16|0)>>>0<15249))break r;e=s,r=f,u=b=65535&v|65536,h=n,k=n,A=p-15233|0;e:{if(64&A){n=e,e=31&(b=A+-64|0),(63&b)>>>0>=32?(r=n<>>32-e|r<>>0>=32?(n=d<>>32-k|b<>>0>=32?(n=0,e=r>>>k|0):(n=r>>>k|0,e=((1<>>k),k=w|e,b|=n,e=31&A,(63&A)>>>0>=32?(n=d<>>32-e|r<>2]=e,l[c+20>>2]=r,l[c+24>>2]=k,l[c+28>>2]=b,e=15361-p|0;a:{if(64&e){f=h,r=31&(e=e+-64|0),(63&e)>>>0>=32?(n=0,s=u>>>r|0):(n=u>>>r|0,s=((1<>>r),f=n,h=0,u=0;break a}if(!e)break a;b=h,n=31&(r=64-e|0),(63&r)>>>0>=32?(r=b<>>32-n|u<>>0>=32?(n=0,b=f>>>s|0):(n=f>>>s|0,b=((1<>>s),s=k|b,f=r|n,b=h,n=31&e,(63&e)>>>0>=32?(r=0,h=u>>>n|0):(r=u>>>n|0,h=((1<>>n),u=r}if(l[c>>2]=s,l[c+4>>2]=f,l[c+8>>2]=h,l[c+12>>2]=u,e=l[c+8>>2],r=l[c+12>>2]<<4|e>>>28,e<<=4,n=l[c>>2],e=(u=l[c+4>>2])>>>28|e,(0|(f=268435455&u))==134217728&(0|(n|=(l[c+16>>2]|l[c+24>>2]|(l[c+20>>2]|l[c+28>>2]))!=0))!=0|f>>>0>134217728){r=(e=e+1|0)?r:r+1|0;break r}if(n|(0|f)!=134217728)break r;r=(n=e)>>>0>(e=e+(1&e)|0)>>>0?r+1|0:r}re=c+32|0,a=0|e,t[0]=a,i=-2147483648&v|r,t[1]=i,y=N,E=+o[0],m[y>>3]=E},e_,function(r,e){e|=0,l[(r|=0)+4>>2]=7,l[r>>2]=e},function(r,e){e|=0,l[(r|=0)+4>>2]=10,l[r>>2]=e},function(r,e){e|=0,l[(r|=0)+4>>2]=13,l[r>>2]=e},e_,e_,e_,e_,e_,e_,function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0;re=t=re-16|0,e=l[l[e>>2]+4>>2],eY[l[l[e>>2]+8>>2]](t,e,a,i,n,f),p[r>>2]=m[t>>3],p[r+4>>2]=m[t+8>>3],re=t+16|0},function(r){r|=0,r=l[l[r>>2]+8>>2],eY[l[l[r>>2]+8>>2]](r)},rn,function(r){return 6952},eg,function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0,b=0;return re=t=re-16|0,b=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(b=l[b+l[e>>2]>>2]),eY[0|b](t,e,a,i,n,f),r=eo(16),e=l[t+12>>2],l[r+8>>2]=l[t+8>>2],l[r+12>>2]=e,e=l[t+4>>2],l[r>>2]=l[t>>2],l[r+4>>2]=e,re=t+16|0,0|r},function(r){return 6956},e_,e_,eg,eF,eB,eA,function(r){r|=0;var e=0;return s[(e=eo(12))+4|0]=0,l[e+8>>2]=l[r>>2],l[r>>2]=0,l[e>>2]=4368,0|e},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0;if(re=i=re-32|0,(n=l[e>>2])>>>0<2147483632){r:{e:{if(n>>>0>=11){t=eo(f=(15|n)+1|0),l[i+16>>2]=-2147483648|f,l[i+8>>2]=t,l[i+12>>2]=n,f=n+t|0;break e}if(s[i+19|0]=n,f=(t=i+8|0)+n|0,!n)break r}ru(t,e+4|0,n)}return s[0|f]=0,l[i>>2]=a,eY[0|r](i+24|0,i+8|0,i),U(l[i+24>>2]),r=l[i+24>>2],I(0|r),I(l[i>>2]),s[i+19|0]<0&&rE(l[i+8>>2]),re=i+32|0,0|r}T(),k()},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;i=r,n=0|Y((s[e+11|0]<0?l[e>>2]:e)|0,6956,l[a>>2]),l[i>>2]=n},function(r){return 6976},eg,em,function(r){return 6979},e_,e_,eg,eF,eB,eA,function(r){r|=0;var e=0;return s[(e=eo(12))+4|0]=0,l[e+8>>2]=l[r>>2],l[r>>2]=0,l[e>>2]=4488,0|e},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;i=r,n=0|Y((s[e+11|0]<0?l[e>>2]:e)|0,6979,l[a>>2]),l[i>>2]=n},function(r){return 6982},eE,eT,function(){var r=0,e=0;return e=eo(4),A[(r=eo(28))+20>>1]=0,l[r+16>>2]=1065353216,A[r+10>>1]=0,A[r+12>>1]=0,l[r>>2]=0,l[r+24>>2]=0,s[r+9|0]=0,l[r+4>>2]=1,s[r+22|0]=0,l[1732]=l[1732]+1,l[e>>2]=r,0|e},eI,eE,function(r,e,a){e|=0,a|=0,s[(l[(r|=0)>>2]+e|0)+20|0]=a},et,function(r,e){r|=0,e=w(e);var a=0,i=0,n=0;if(re=a=re-16|0,r=l[r>>2],!(e>=w(0))){l[a>>2]=2262,re=i=re-16|0,l[i+12>>2]=a;r:if(!r){if(d[6936]){r=l[1733];break r}A[(r=eo(28))+20>>1]=0,l[r+16>>2]=1065353216,A[r+10>>1]=0,A[r+12>>1]=0,l[r>>2]=0,l[r+24>>2]=0,s[r+9|0]=0,l[r+4>>2]=1,s[r+22|0]=0,l[1733]=r,s[6936]=1,l[1732]=l[1732]+1}n=l[r+4>>2];e:{if(d[r+9|0]){eY[0|n](r,0,5,0,4215,a);break e}eY[0|n](r,0,5,4215,a)}re=i+16|0,eX(),k()}p[r+16>>2]=e==w(0)?w(0):e,re=a+16|0},function(r,e,a){r|=0,e|=0,a=w(a);var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)},function(r,e){e|=0,s[l[(r|=0)>>2]+11|0]=e},ek,function(r,e){e|=0,s[l[(r|=0)>>2]+10|0]=e},function(r,e){return e|=0,d[(l[(r|=0)>>2]+e|0)+20|0]},eb,function(r){return d[l[(r|=0)>>2]+11|0]},ec,function(r){return d[l[(r|=0)>>2]+10|0]},function(){return 0|ry(eo(48),0,48)},eL,function(){var r=0;return l[(r=eo(16))>>2]=0,l[r+4>>2]=0,l[r+8>>2]=0,l[r+12>>2]=0,0|r},eL,function(){var r=0;return l[(r=eo(16))+8>>2]=0,l[r+12>>2]=0,l[r>>2]=0,0|r},eL,eR,eG,function(r,e){return e|=0,l[l[(r|=0)>>2]+e>>2]},function(r,e,a){e|=0,a|=0,l[l[(r|=0)>>2]+e>>2]=a},function(r){return 6987},rL,eT,function(){return 0|rJ(eo(12),0)},function(r,e){return e|=0,0|eY[0|(r|=0)](e)},function(r){return r|=0,0|rJ(eo(12),r)},eI,rL,function(r){r|=0;var e=0,a=0,i=0,n=0;re=i=re-624|0,e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e);r:{if(r=l[r>>2],l[r+560>>2]==l[r+556>>2]){if(l[r+552>>2])break r;r_(r+556|0),n=s[r+4|0],e=rk(i+32|0,l[r+568>>2]),a=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=a,a=l[e+20>>2],l[r+16>>2]=l[e+16>>2],l[r+20>>2]=a,a=l[e+12>>2],l[r+8>>2]=l[e+8>>2],l[r+12>>2]=a,ru(r+24|0,e+24|0,204),ru(r+228|0,e+228|0,328),(a=l[r+556>>2])&&(l[r+560>>2]=a,rE(a)),l[r+556>>2]=l[e+556>>2],l[r+560>>2]=l[e+560>>2],l[r+564>>2]=l[e+564>>2],l[r+584>>2]=l[e+584>>2],a=l[e+580>>2],l[r+576>>2]=l[e+576>>2],l[r+580>>2]=a,a=l[e+572>>2],l[r+568>>2]=l[e+568>>2],l[r+572>>2]=a,(0|n)<0&&(s[r+4|0]=128|d[r+4|0],l[r+24>>2]=-909&l[r+24>>2]|520),re=i+624|0;return}l[i+16>>2]=3252,rB(r,i+16|0),eX(),k()}l[i>>2]=2046,rB(r,i),eX(),k()},em,function(r,e){r|=0,e|=0;var a,i,n=0,f=w(0),b=0,o=0,k=w(0),c=0,A=0,h=0,v=w(0);r:{A=l[e>>2],e=l[r>>2];e:if(!((l[A+24>>2]^l[e+24>>2])&8388607)){v=p[A+40>>2],b=l[A+40>>2],f=p[e+40>>2];a:{i:{if((0|(n=l[e+40>>2]))!=2139156720){if(k=w(NaN),r=3,(0|n)==2141891242)break a;if((0|n)!=2140081935)break i;k=w(0),r=1;break a}r=2;break a}if(r=0,f!=f)break a;a=(-1073741825&n)+536870912|0,t[2]=a,k=u(),r=1073741824&n?2:1}n:{f:{if((0|b)!=2139156720){if(f=w(NaN),n=3,(0|b)==2141891242)break n;if((0|b)!=2140081935)break f;f=w(0),n=1;break n}f=w(0),n=2;break n}if(n=0,v!=v)break n;i=(-1073741825&b)+536870912|0,t[2]=i,f=u(),n=1073741824&b?2:1}if((0|n)!=(0|r)|!(!r|k!=k&f!=f|w(y(w(k-f)))>2]!=l[o>>2]))break e;r=0;t:{for(;;){if(b=r,(0|(r=r+1|0))==9)break t;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+80|0,o=A+80|0,l[n>>2]!=l[o>>2])break e;r=0;b:{for(;;){if(b=r,(0|(r=r+1|0))==9)break b;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+116|0,o=A+116|0,l[n>>2]!=l[o>>2])break e;r=0;o:{for(;;){if(b=r,(0|(r=r+1|0))==9)break o;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+152|0,o=A+152|0,l[n>>2]!=l[o>>2])break e;r=0;k:{for(;;){if(b=r,(0|(r=r+1|0))==9)break k;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+188|0,o=A+188|0,l[n>>2]!=l[o>>2])break e;r=0;c:{for(;;){if(b=r,(0|(r=r+1|0))==3)break c;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<2)break e}for(c=A+200|0,h=e+200|0,r=0,b=1;;){u:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o))break e;for(c=A+208|0,h=e+208|0,r=0,b=1;;){s:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o))break e;for(c=A+216|0,h=e+216|0,r=0,b=1;;){A:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o)||(r=(k=p[A+28>>2])!=k,f=p[e+28>>2],(0|r)==(f==f|0)|!(r|f!=f)&f!=k)||(f=p[e+32>>2],k=p[A+32>>2],(f==f|0)==(k!=k|0)|f==f&f!=k)||(r=(k=p[A+36>>2])!=k,f=p[e+36>>2],(0|r)==(f==f|0)|!r&f!=k))break e;if(r=0,(f=p[e+224>>2])!=f&&(r=1,(k=p[A+224>>2])!=k)||(k=f,f=p[A+224>>2],k==f|f!=f&r))break r}for(ru(e+24|0,A+24|0,204);;){if(4&(r=d[e+4|0]))break r;if(s[e+4|0]=4|r,(r=l[e+20>>2])&&eY[0|r](e),l[e+308>>2]=2143289344,!(e=l[e+552>>2]))break}}},ek,function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>16&3)!=(0|e))for(l[r+24>>2]=-196609&a|e<<16&196608;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},ek,function(r,e,a){e|=0,a=+a,r4(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a,i){r|=0,e|=0,a|=0,i=+i;var n=0;n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](e,a,i)},function(r,e,a){e|=0,a=+a,r4(l[(r|=0)>>2],e,rD(w(a)))},function(r,e){e|=0,rC(l[(r|=0)>>2],5,e)},function(r,e){e|=0,rC(l[(r|=0)>>2],6,e)},function(r,e){e|=0,rC(l[(r|=0)>>2],7,e)},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>2&3)!=(0|e))for(l[r+24>>2]=-13&a|e<<2&12;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>18&3)!=(0|e))for(l[r+24>>2]=-786433&a|e<<18&786432;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>4&7)!=(0|e))for(l[r+24>>2]=-113&a|e<<4&112;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){e|=0,a=+a,r8(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a){e|=0,a=+a,r8(l[(r|=0)>>2],e,rD(w(a)))},function(r,e){e|=0,r8(l[(r|=0)>>2],e,2141891242)},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>20&3)!=(0|e))for(l[r+24>>2]=-3145729&a|e<<20&3145728;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>22&1)!=(0|e))for(l[r+24>>2]=-4194305&a|e<<22&4194304;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+28>>2],!(i==n|i!=i&n!=n))for(p[r+28>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){r|=0,e|=0,a=+a;var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)},function(r,e){e=+e,r1(l[(r|=0)>>2],rx(w(e)))},function(r,e){e=+e,r1(l[(r|=0)>>2],rD(w(e)))},function(r){r1(l[(r|=0)>>2],2141891242)},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+32>>2],!(i==n|i!=i&n!=n))for(p[r+32>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+36>>2],!(i==n|i!=i&n!=n))for(p[r+36>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){e=+e,r2(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r2(l[(r|=0)>>2],0,rD(w(e)))},function(r){r2(l[(r|=0)>>2],0,2141891242)},function(r,e){e=+e,r2(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r2(l[(r|=0)>>2],1,rD(w(e)))},function(r){r2(l[(r|=0)>>2],1,2141891242)},function(r,e){e=+e,r$(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],0,rD(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],1,rD(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],0,rD(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],1,rD(w(e)))},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+224>>2],!(i==n|i!=i&n!=n))for(p[r+224>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){r|=0,e|=0,a=+a;var i=0,n=0;r:if(e=(r=l[r>>2])+(e<<2)|0,(0|(n=l[e+152>>2]))!=(0|(i=rx(w(a)))))for(l[e+152>>2]=i;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){e|=0,a=+a,r3(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a){e|=0,a=+a,r3(l[(r|=0)>>2],e,rD(w(a)))},function(r,e,a){r|=0,e|=0,a=+a;var i=0,n=0;r:if(e=(r=l[r>>2])+(e<<2)|0,(0|(n=l[e+188>>2]))!=(0|(i=rx(w(a)))))for(l[e+188>>2]=i;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r){return 3&h[l[(r|=0)>>2]+26>>1]},ec,function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+80>>2];r:{e:{if((0|(e=l[e+80>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;return re=i=re-16|0,n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](i,e,a),r=eo(16),e=l[i+12>>2],l[r+8>>2]=l[i+8>>2],l[r+12>>2]=e,e=l[i+4>>2],l[r>>2]=l[i>>2],l[r+4>>2]=e,re=i+16|0,0|r},function(r){return l[l[(r|=0)>>2]+24>>2]>>>7&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>10&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>13&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>2&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>18&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>4&7},function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+44>>2];r:{e:{if((0|(e=l[e+44>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e){r|=0,e|=0;var a,i=0,n=w(0),f=w(0);n=w(NaN),f=p[(e=l[e>>2])+40>>2],e=l[e+40>>2],i=3;r:if((0|e)!=2141891242){if((0|e)==2140081935){n=w(0),i=1;break r}if((0|e)==2139156720){n=w(0),i=2;break r}if(i=0,f!=f)break r;a=(-1073741825&e)+536870912|0,t[2]=a,n=u(),i=1073741824&e?2:1}l[r>>2]=i,m[r+8>>3]=n},function(r,e){r|=0,e|=0;var a=0,i=0;return re=a=re-16|0,i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](a,e),r=eo(16),e=l[a+12>>2],l[r+8>>2]=l[a+8>>2],l[r+12>>2]=e,e=l[a+4>>2],l[r>>2]=l[a>>2],l[r+4>>2]=e,re=a+16|0,0|r},function(r){r|=0;var e=w(0);return+((e=p[l[r>>2]+32>>2])==e?e:w(0))},function(r,e){r|=0,e|=0;var a=0;return a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),+eY[0|a](e)},function(r){r|=0;var e=w(0);return(e=p[(r=l[r>>2])+36>>2])!=e&&(e=d[l[r+568>>2]+10|0]?w(1):w(0)),+e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+200>>2];r:{e:{if((0|(e=l[e+200>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+204>>2];r:{e:{if((0|(e=l[e+204>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+208>>2];r:{e:{if((0|(e=l[e+208>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+212>>2];r:{e:{if((0|(e=l[e+212>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+216>>2];r:{e:{if((0|(e=l[e+216>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+220>>2];r:{e:{if((0|(e=l[e+220>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r){r|=0;var e=w(0);return+((e=p[l[r>>2]+224>>2])!=e?w(NaN):e)},function(r,e){r|=0,e|=0;var a,i=0,n=w(0);n=p[(r=l[r>>2]+(e<<2)|0)+152>>2];r:{e:if(!((0|(r=l[r+152>>2]))==2139156720|(0|r)==2140081935)){if(i=NaN,(0|r)==2141891242|n!=n)break r;if((0|r)==2139156720)break e;return+(a=(-1073741825&r)+536870912|0,t[2]=a,u())}i=0}return+i},function(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),+eY[0|i](e,a)},function(r){return l[l[(r|=0)>>2]+24>>2]>>>20&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>22&1},function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+116>>2];r:{e:{if((0|(e=l[e+116>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e){r|=0,e|=0;var a,i=w(0),n=w(0);n=p[(r=l[r>>2]+(e<<2)|0)+188>>2];r:{e:if(!((0|(r=l[r+188>>2]))==2139156720|(0|r)==2140081935)){if(i=w(NaN),(0|r)==2141891242|n!=n)break r;if((0|r)==2139156720)break e;return w((a=(-1073741825&r)+536870912|0,t[2]=a,u()))}i=w(0)}return w(i)},function(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),w(w(eY[0|i](e,a)))},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0,o=0,c=0,u=0,A=0,h=0;re=b=re-80|0,r=l[r>>2];r:{e:{if(o=l[e>>2],!l[o+552>>2]){if(l[r+8>>2])break e;t=(e=l[r+556>>2])+(a<<2)|0,i=l[r+560>>2],f=l[(n=r+564|0)>>2];a:{if(i>>>0>>0){if((0|i)==(0|t)){l[t>>2]=o,l[r+560>>2]=t+4;break a}if(a=i,e=i-4|0,i>>>0>e>>>0)for(;l[a>>2]=l[e>>2],a=a+4|0,i>>>0>(e=e+4|0)>>>0;);l[r+560>>2]=a,(0|(e=t+4|0))!=(0|i)&&(e=i-e|0,rm(i-(-4&e)|0,t,e)),l[t>>2]=o;break a}if((i=(i-e>>2)+1|0)>>>0>=1073741824)break r;f=(e=f-e|0)>>>1|0,a=l[(n=en(b+32|0,e>>>0>=2147483644?1073741823:i>>>0>>0?f:i,a,n))+8>>2];i:if((0|a)==l[n+12>>2]){if(e=l[n+4>>2],i=l[n>>2],e>>>0>i>>>0){a=rm(c=(i=-(((e-i>>2)+1|0)/2)<<2)+e|0,f=e,e=a-e|0)+e|0,l[n+8>>2]=a,l[n+4>>2]=i+l[n+4>>2];break i}f=en(b+56|0,e=(0|a)==(0|i)?1:a-i>>1,e>>>2|0,l[n+16>>2]),i=l[f+8>>2],e=l[n+4>>2],a=l[n+8>>2];n:{if((0|e)==(0|a)){a=i,i=e;break n}for(a=(a-e|0)+i|0;l[i>>2]=l[e>>2],e=e+4|0,(0|(i=i+4|0))!=(0|a););e=l[n+8>>2],i=l[n+4>>2]}if(c=l[n>>2],l[n>>2]=l[f>>2],l[f>>2]=c,l[n+4>>2]=l[f+4>>2],l[f+4>>2]=i,l[n+8>>2]=a,l[f+8>>2]=e,u=l[n+12>>2],l[n+12>>2]=l[f+12>>2],l[f+12>>2]=u,(0|e)!=(0|i)&&(l[f+8>>2]=((i-e|0)+3&-4)+e),!c)break i;rE(c),a=l[n+8>>2]}if(l[a>>2]=o,l[n+8>>2]=l[n+8>>2]+4,e=l[r+556>>2],a=t-e|0,A=n,h=rm(l[n+4>>2]-a|0,e,a),l[A+4>>2]=h,i=l[r+560>>2]-t|0,t=rm(l[n+8>>2],t,i),e=l[r+556>>2],l[r+556>>2]=l[n+4>>2],l[n+4>>2]=e,a=l[r+560>>2],l[r+560>>2]=i+t,l[n+8>>2]=a,i=l[r+564>>2],l[r+564>>2]=l[n+12>>2],l[n>>2]=e,l[n+12>>2]=i,(0|e)!=(0|a)&&(l[n+8>>2]=a+((e-a|0)+3&-4)),!e)break a;rE(e)}for(l[o+552>>2]=r;!(4&(e=d[r+4|0]))&&(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,r=l[r+552>>2]););re=b+80|0;return}l[b+16>>2]=4006,rB(r,b+16|0),eX(),k()}l[b>>2]=4139,rB(r,b),eX(),k()}T(),k()},et,function(r,e){r|=0,e|=0;var a=0,i=0,n=0,f=0;re=n=re-320|0,r=l[r>>2];r:if(l[r+560>>2]!=l[r+556>>2]){if(i=l[e>>2],e=l[i+552>>2],!rq(r,i))break r;if((0|r)==(0|e)){for(l[(e=a=ry(n,0,288))+16>>2]=2143289344,l[e+20>>2]=2143289344,ry(e+24|0,0,49),l[e+80>>2]=2143289344,f=e+288|0,e=e+96|0;l[e+16>>2]=-1082130432,l[e+20>>2]=-1082130432,l[e+8>>2]=0,l[e+12>>2]=0,l[e>>2]=-1082130432,l[e+4>>2]=-1082130432,(0|f)!=(0|(e=e+24|0)););l[a+312>>2]=-1082130432,l[a+316>>2]=-1082130432,l[a+304>>2]=0,l[a+308>>2]=0,l[a+296>>2]=-1082130432,l[a+300>>2]=-1082130432,l[a+288>>2]=2143289344,l[a+292>>2]=2143289344,ru(i+228|0,a,320),l[i+552>>2]=0}for(;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}re=n+320|0},ek,function(r){return r|=0,r=l[r>>2],l[r+560>>2]-l[r+556>>2]>>2},ec,function(r){return(r|=0,r=l[l[r>>2]+552>>2])?l[r>>2]:0},ec,function(r,e){r|=0,e|=0;var a=0,i=0;a=l[r>>2],r=l[a+556>>2];r:!(l[a+560>>2]-r>>2>>>0<=e>>>0)&&(r=l[r+(e<<2)>>2])&&(i=l[r>>2]);return 0|i},eb,function(r){return(2&d[l[(r|=0)>>2]+4|0])>>>1|0},ec,function(r,e){r|=0,e|=0;var a=0;r:if(((2&(a=d[(r=l[r>>2])+4|0]))>>>1|0)!=(0|e))for(s[r+4|0]=253&a|(e?2:0);;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},ek,function(r,e){r|=0,e|=0;var a=0;a=l[r+4>>2],l[r+4>>2]=e,a&&eY[l[l[a>>2]+4>>2]](a),r7(l[r>>2],14)},ek,function(r){r|=0;var e=0;e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),r7(l[r>>2],0)},function(r,e){r|=0,e|=0;var a=0;a=l[r+8>>2],l[r+8>>2]=e,a&&eY[l[l[a>>2]+4>>2]](a),l[l[r>>2]+20>>2]=15},ek,function(r){r|=0;var e=0;e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),l[l[r>>2]+20>>2]=0},function(r){r|=0;var e=0,a=0;if(re=a=re-16|0,r=l[r>>2],l[r+8>>2]){for(;!(4&(e=d[r+4|0]))&&(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,r=l[r+552>>2]););re=a+16|0;return}l[a>>2]=1024,rB(r,a),eX(),k()},function(r){return(4&d[l[(r|=0)>>2]+4|0])>>>2|0},ec,function(r,e,a,i){r|=0,e=+e,a=+a,i|=0;var n,f,b,o,k=w(0),c=w(0),s=0,A=w(0),h=0,v=w(0),m=0,N=w(0),E=0;re=E=re+-64|0,s=l[r>>2],ry(E+8|0,0,56),l[1735]=l[1735]+1,rc(s),A=w(e),c=p[s+572>>2];r:{e:{a:switch(0|(r=l[s+576>>2])){case 0:case 3:break e;default:break a}k=p[s+572>>2];i:{if(!((0|r)!=1|k!=k)){if(!((k=c)>2];t:{b:{r=l[s+216>>2];o:{k:if((0|r)!=2139156720){if((0|r)==2140081935)break t;m=4276;c:{if((0|r)!=2141891242){if(c==c)break c;m=4268}switch(k=p[m>>2],l[m+4>>2]-1|0){case 0:break o;case 1:break k;default:break b}}if(n=(-1073741825&r)+536870912|0,t[2]=n,k=u(),!(1073741824&r))break o}k=w(w(k*A)*w(.009999999776482582))}if(k!=k)break b;k=w(0);u:if((0|r)!=2139156720){if((0|r)==2140081935)break t;h=4276;s:{if((0|r)!=2141891242){if(c==c)break s;h=4268}switch(k=p[h>>2],N=w(NaN),m=2,l[h+4>>2]-1|0){case 1:break u;case 0:break t;default:break r}}if(f=(-1073741825&r)+536870912|0,t[2]=f,k=u(),!(1073741824&r))break t}N=w(w(k*A)*w(.009999999776482582)),m=2;break r}m=A==A,N=A;break r}m=2,N=k}v=w(a),c=p[s+580>>2];A:{l:{d:switch(0|(r=l[s+584>>2])){case 0:case 3:break l;default:break d}k=p[s+580>>2];h:{if(!((0|r)!=1|k!=k)){if(!((k=c)>2];m:{N:{r=l[s+220>>2];w:{y:if((0|r)!=2139156720){if((0|r)==2140081935)break m;h=4276;E:{if((0|r)!=2141891242){if(c==c)break E;h=4268}switch(k=p[h>>2],l[h+4>>2]-1|0){case 0:break w;case 1:break y;default:break N}}if(b=(-1073741825&r)+536870912|0,t[2]=b,k=u(),!(1073741824&r))break w}k=w(w(k*v)*w(.009999999776482582))}if(k!=k)break N;k=w(0);G:if((0|r)!=2139156720){if((0|r)==2140081935)break m;h=4276;R:{if((0|r)!=2141891242){if(c==c)break R;h=4268}switch(k=p[h>>2],c=w(NaN),r=2,l[h+4>>2]-1|0){case 0:break m;case 1:break G;default:break A}}if(o=(-1073741825&r)+536870912|0,t[2]=o,k=u(),!(1073741824&r))break m}c=w(w(k*v)*w(.009999999776482582)),r=2;break A}r=v==v,c=v;break A}r=2,c=k}rt(s,N,c,i,m,r,A,v,1,0,l[s+568>>2],E+8|0,0,l[1735])&&(rO(s,3&d[s+300|0],A,v,A),function r(e,a,i,n){var f=0,t=0,b=0,o=0,k=0,c=0,u=0,s=0,A=0,h=0,v=0,m=w(0),N=w(0),E=w(0),G=0,R=w(0);r:if(0!=a){if(m=p[e+248>>2],N=p[e+244>>2],E=p[e+232>>2],s=+p[e+228>>2],f=(b=8&d[e+4|0])>>>3|0,G=e,R=rH(s,a,0,f),p[G+228>>2]=R,A=+E,G=e,R=rH(A,a,0,f),p[G+232>>2]=R,f=(k=rl((h=+N)*a))!=k,t=(c=rl((v=+m)*a))!=c,i=s+i,o=f|(o=1e-4>y(k))?!o|f:!(1e-4>y(k+-1)),f=(0|b)!=0,G=e,R=w(rH(i+h,a,o&f,!o&f)-rH(i,a,0,f)),p[G+244>>2]=R,n=A+n,t=t|(b=1e-4>y(c))?!b|t:!(1e-4>y(c+-1)),G=e,R=w(rH(n+v,a,f&t,!t&f)-rH(n,a,0,f)),p[G+248>>2]=R,f=l[e+560>>2],t=l[e+556>>2],(0|f)==(0|t))break r;for(t=(f=f-t>>2)>>>0<=1?1:f;f=l[e+556>>2],f=l[e+560>>2]-f>>2>>>0>u>>>0?l[f+(u<<2)>>2]:0,r(f,a,i,n),(0|t)!=(0|(u=u+1|0)););}}(s,+p[l[s+568>>2]+16>>2],0,0)),re=E- -64|0},function(r,e,a,i,n){r|=0,e|=0,a=+a,i=+i,n|=0;var f=0;f=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(f=l[f+l[e>>2]>>2]),eY[0|f](e,a,i,n)},function(r){return+p[l[(r|=0)>>2]+228>>2]},function(r){return+p[l[(r|=0)>>2]+236>>2]},function(r){return+p[l[(r|=0)>>2]+232>>2]},function(r){return+p[l[(r|=0)>>2]+240>>2]},function(r){return+p[l[(r|=0)>>2]+244>>2]},function(r){return+p[l[(r|=0)>>2]+248>>2]},function(r,e){r|=0,e|=0,e=l[e>>2],m[r>>3]=p[e+228>>2],m[r+8>>3]=p[e+236>>2],m[r+16>>3]=p[e+232>>2],m[r+24>>3]=p[e+240>>2],m[r+32>>3]=p[e+244>>2],m[r+40>>3]=p[e+248>>2]},function(r,e){r|=0,e|=0;var a=0,i=0;return re=a=re-48|0,i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](a,e),r=ru(eo(48),a,48),re=a+48|0,0|r},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+260|0,(3&d[r+300|0])==2)break r;e=r+252|0;break r;case 1:if(e=r+252|0,(3&d[r+300|0])==2)break r;e=r+260|0;break r;default:break e}e=(r+(e<<2)|0)+252|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+276|0,(3&d[r+300|0])==2)break r;e=r+268|0;break r;case 1:if(e=r+268|0,(3&d[r+300|0])==2)break r;e=r+276|0;break r;default:break e}e=(r+(e<<2)|0)+268|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+292|0,(3&d[r+300|0])==2)break r;e=r+284|0;break r;case 1:if(e=r+284|0,(3&d[r+300|0])==2)break r;e=r+292|0;break r;default:break e}e=(r+(e<<2)|0)+284|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},eR,eG,eR,eG,rw,ew,function(r){rE(ew(r|=0))},function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0,b=0,o=0;re=t=re-48|0,o=l[e+8>>2];r:{if(1&s[6972]){e=l[1742];break r}e=0|F(5,4416),s[6972]=1,l[1742]=e}l[t+40>>2]=f,p[t+32>>2]=n,l[t+24>>2]=i,p[t+16>>2]=a,b=+H(0|e,0|o,2873,t+12|0,t+16|0);e:{if(b<4294967296&b>=0){e=~~b>>>0;break e}e=0}i=l[t+12>>2],f=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=f,f=l[e+12>>2],l[r+8>>2]=l[e+8>>2],l[r+12>>2]=f,M(0|i),re=t+48|0},eC,eS,eN,function(r){rE(eN(r|=0))},function(r){ep(l[(r|=0)+8>>2],3244)},eC,function(r){return 0|K(l[(r|=0)+60>>2])},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0,o=0,k=0;re=i=re-32|0,n=l[r+28>>2],l[i+16>>2]=n,f=l[r+20>>2],l[i+28>>2]=a,l[i+24>>2]=e,e=f-n|0,l[i+20>>2]=e,f=e+a|0,o=2,e=i+16|0;r:{for(;;){e:{a:{i:{if(!eZ(0|J(l[r+60>>2],0|e,0|o,i+12|0))){if((0|(t=l[i+12>>2]))==(0|f))break i;if((0|t)>=0)break a;break e}if((0|f)!=-1)break e}e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,l[r+16>>2]=e+l[r+48>>2],r=a;break r}n=((k=(b=l[e+4>>2])>>>0>>0)<<3)+e|0,b=t-(k?b:0)|0,l[n>>2]=b+l[n>>2],l[(e=(k?12:4)+e|0)>>2]=l[e>>2]-b,f=f-t|0,o=o-k|0,e=n;continue}break}if(l[r+28>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,l[r>>2]=32|l[r>>2],r=0,(0|o)==2)break r;r=a-l[e+4>>2]|0}return re=i+32|0,0|r},function(r,e,a,i){r|=0,e|=0,a|=0,i|=0;var n=0;return re=n=re-16|0,r=eZ(0|z(l[r+60>>2],0|e,0|a,255&i,n+8|0)),re=n+16|0,ra=r?-1:l[n+12>>2],(r?-1:l[n+8>>2])|0},function(r){return 0},function(r,e,a,i){return ra=0,0},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0;return n=l[r+84>>2],f=l[n>>2],i=l[n+4>>2],b=l[r+28>>2],t=l[r+20>>2]-b|0,(t=i>>>0>>0?i:t)&&(ru(f,b,t),f=t+l[n>>2]|0,l[n>>2]=f,i=l[n+4>>2]-t|0,l[n+4>>2]=i),(i=a>>>0>i>>>0?i:a)&&(ru(f,e,i),f=i+l[n>>2]|0,l[n>>2]=f,l[n+4>>2]=l[n+4>>2]-i),s[0|f]=0,e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,0|a},eS]).set=function(r,e){this[r]=e},a.get=function(r){return this[r]},a);function eU(){return b.byteLength/65536|0}return{E:function(){for(var r=0,e=0,a=0;a=(e=r<<4)+5888|0,l[e+5892>>2]=a,l[e+5896>>2]=a,(0|(r=r+1|0))!=64;);rd(48),l[1736]=16,l[1737]=0,rn(),l[1737]=l[1748],l[1748]=6944,l[1749]=194,l[1750]=0,rw(),l[1750]=l[1748],l[1748]=6996},F:function(r){r|=0;var e=0,a=0,i=0,n=0,f=0;re=a=re-96|0,l[a>>2]=r,re=i=re-16|0,l[i+12>>2]=a,re=r=re-144|0,r=ru(r,5440,144),e=f=a+16|0,l[r+44>>2]=e,l[r+20>>2]=e,n=(n=-2-e|0)>>>0>=2147483647?2147483647:n,l[r+48>>2]=n,e=e+n|0,l[r+28>>2]=e,l[r+16>>2]=e,rG(r,2201,a,0,0),n&&(s[(e=l[r+20>>2])-((0|e)==l[r+16>>2])|0]=0),re=r+144|0,re=i+16|0,r=f;r:{if(3&r)for(;;){if(!d[0|r])break r;if(!(3&(r=r+1|0)))break}for(;e=r,r=r+4|0,!((-1^(i=l[e>>2]))&i-16843009&-2139062144););for(;e=(r=e)+1|0,d[0|r];);}return r=(e=rb(r=(r-f|0)+1|0))?ru(e,f,r):0,re=a+96|0,0|r},G:function(){var r=0;if(r=l[1748])for(;eY[l[r>>2]](),r=l[r+4>>2];);},H:rb,I:eY,J:rE,K:function(r,e,a,i,n){return e|=0,a|=0,i|=0,n|=0,0|eY[0|(r|=0)](e,a,i,n)}}}(r)}(r)}Object.assign(u,n),n=null,u.wasmBinary&&(l=u.wasmBinary),u.noExitRuntime;var c=Error;l=[];var u,s,A,l,d,h=!1;function v(r,e,a){a=e+a;for(var i=\"\";!(e>=a);){var n=r[e++];if(!n)break;if(128&n){var f=63&r[e++];if(192==(224&n))i+=String.fromCharCode((31&n)<<6|f);else{var t=63&r[e++];65536>(n=224==(240&n)?(15&n)<<12|f<<6|t:(7&n)<<18|f<<12|t<<6|63&r[e++])?i+=String.fromCharCode(n):(n-=65536,i+=String.fromCharCode(55296|n>>10,56320|1023&n))}}else i+=String.fromCharCode(n)}return i}function p(){var r=d.buffer;u.HEAP8=N=new Int8Array(r),u.HEAP16=y=new Int16Array(r),u.HEAP32=G=new Int32Array(r),u.HEAPU8=w=new Uint8Array(r),u.HEAPU16=E=new Uint16Array(r),u.HEAPU32=R=new Uint32Array(r),u.HEAPF32=g=new Float32Array(r),u.HEAPF64=Z=new Float64Array(r)}var m=u.INITIAL_MEMORY||16777216;65536<=m||O(\"INITIAL_MEMORY should be larger than STACK_SIZE, was \"+m+\"! (STACK_SIZE=65536)\"),d=u.wasmMemory?u.wasmMemory:new function(){this.buffer=new ArrayBuffer(m/65536*65536)},p(),m=d.buffer.byteLength;var N,w,y,E,G,R,g,Z,W,V=[],B=[],T=[],I=0,X=null;function O(r){throw u.onAbort&&u.onAbort(r),b(r=\"Aborted(\"+r+\")\"),h=!0,A(r=new c(r+\". Build with -sASSERTIONS for more info.\")),r}function L(r){return r.startsWith(\"data:application/octet-stream;base64,\")}if(!L(a=\"yoga-asm.wasm\")){var _=a;a=u.locateFile?u.locateFile(_,f):f+_}function F(r){for(;0=e?\"_\"+r:r}function S(r,e){return r=C(r),function(){return e.apply(this,arguments)}}var P=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Y=[];function U(r){var e=Error,a=S(r,function(e){this.name=r,this.message=e,void 0!==(e=Error(e).stack)&&(this.stack=this.toString()+\"\\n\"+e.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});return a.prototype=Object.create(e.prototype),a.prototype.constructor=a,a.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message},a}var M=void 0;function H(r){throw new M(r)}var Q=r=>(r||H(\"Cannot use deleted val. handle = \"+r),P[r].value),z=r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var e=Y.length?Y.pop():P.length;return P[e]={fa:1,value:r},e}},j=void 0,D=void 0;function x(r){for(var e=\"\";w[r];)e+=D[w[r++]];return e}var J=[];function K(){for(;J.length;){var r=J.pop();r.L.Z=!1,r.delete()}}var q=void 0,$={};function rr(r,e){for(void 0===e&&H(\"ptr should not be undefined\");r.P;)e=r.aa(e),r=r.P;return e}var re={};function ra(r){var e=x(r=rq(r));return r0(r),e}function ri(r,e){var a=re[r];return void 0===a&&H(e+\" has unknown type \"+ra(r)),a}function rn(){}var rf=!1;function rt(r){--r.count.value,0===r.count.value&&(r.S?r.T.V(r.S):r.O.M.V(r.N))}var rb={},ro=void 0;function rk(r){throw new ro(r)}function rc(r,e){return e.O&&e.N||rk(\"makeClassHandle requires ptr and ptrType\"),!!e.T!=!!e.S&&rk(\"Both smartPtrType and smartPtr must be specified\"),e.count={value:1},ru(Object.create(r,{L:{value:e}}))}function ru(r){return\"undefined\"==typeof FinalizationRegistry?(ru=r=>r,r):(rf=new FinalizationRegistry(r=>{rt(r.L)}),ru=r=>{var e=r.L;return e.S&&rf.register(r,{L:e},r),r},rn=r=>{rf.unregister(r)},ru(r))}var rs={};function rA(r){for(;r.length;){var e=r.pop();r.pop()(e)}}function rl(r){return this.fromWireType(G[r>>2])}var rd={},rh={};function rv(r,e,a){function i(e){(e=a(e)).length!==r.length&&rk(\"Mismatched type converter count\");for(var i=0;i{re.hasOwnProperty(r)?n[e]=re[r]:(f.push(r),rd.hasOwnProperty(r)||(rd[r]=[]),rd[r].push(()=>{n[e]=re[r],++t===f.length&&i(n)}))}),0===f.length&&i(n)}function rp(r){switch(r){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw TypeError(\"Unknown type size: \"+r)}}function rm(r,e,a={}){if(!(\"argPackAdvance\"in e))throw TypeError(\"registerType registeredInstance requires argPackAdvance\");var i=e.name;if(r||H('type \"'+i+'\" must have a positive integer typeid pointer'),re.hasOwnProperty(r)){if(a.ta)return;H(\"Cannot register type '\"+i+\"' twice\")}re[r]=e,delete rh[r],rd.hasOwnProperty(r)&&(e=rd[r],delete rd[r],e.forEach(r=>r()))}function rN(r){H(r.L.O.M.name+\" instance already deleted\")}function rw(){}function ry(r,e,a){if(void 0===r[e].R){var i=r[e];r[e]=function(){return r[e].R.hasOwnProperty(arguments.length)||H(\"Function '\"+a+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+r[e].R+\")!\"),r[e].R[arguments.length].apply(this,arguments)},r[e].R=[],r[e].R[i.Y]=i}}function rE(r,e,a,i,n,f,t,b){this.name=r,this.constructor=e,this.W=a,this.V=i,this.P=n,this.oa=f,this.aa=t,this.ma=b,this.ia=[]}function rG(r,e,a){for(;e!==a;)e.aa||H(\"Expected null or instance of \"+a.name+\", got an instance of \"+e.name),r=e.aa(r),e=e.P;return r}function rR(r,e){return null===e?(this.da&&H(\"null is not a valid \"+this.name),0):(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),rG(e.L.N,e.L.O.M,this.M))}function rg(r,e){if(null===e){if(this.da&&H(\"null is not a valid \"+this.name),this.ca){var a=this.ea();return null!==r&&r.push(this.V,a),a}return 0}if(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),!this.ba&&e.L.O.ba&&H(\"Cannot convert argument of type \"+(e.L.T?e.L.T.name:e.L.O.name)+\" to parameter type \"+this.name),a=rG(e.L.N,e.L.O.M,this.M),this.ca)switch(void 0===e.L.S&&H(\"Passing raw pointer to smart pointer is illegal\"),this.Aa){case 0:e.L.T===this?a=e.L.S:H(\"Cannot convert argument of type \"+(e.L.T?e.L.T.name:e.L.O.name)+\" to parameter type \"+this.name);break;case 1:a=e.L.S;break;case 2:if(e.L.T===this)a=e.L.S;else{var i=e.clone();a=this.wa(a,z(function(){i.delete()})),null!==r&&r.push(this.V,a)}break;default:H(\"Unsupporting sharing policy\")}return a}function rZ(r,e){return null===e?(this.da&&H(\"null is not a valid \"+this.name),0):(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),e.L.O.ba&&H(\"Cannot convert argument of type \"+e.L.O.name+\" to parameter type \"+this.name),rG(e.L.N,e.L.O.M,this.M))}function rW(r,e,a,i){this.name=r,this.M=e,this.da=a,this.ba=i,this.ca=!1,this.V=this.wa=this.ea=this.ja=this.Aa=this.va=void 0,void 0!==e.P?this.toWireType=rg:(this.toWireType=i?rR:rZ,this.U=null)}function rV(r,e){var a,i,n=(r=x(r)).includes(\"j\")?(a=r,i=[],function(){if(i.length=0,Object.assign(i,arguments),a.includes(\"j\")){var r=u[\"dynCall_\"+a];r=i&&i.length?r.apply(null,[e].concat(i)):r.call(null,e)}else r=W.get(e).apply(null,i);return r}):W.get(e);return\"function\"!=typeof n&&H(\"unknown function pointer with signature \"+r+\": \"+e),n}var rB=void 0;function rT(r,e){var a=[],i={};throw e.forEach(function r(e){i[e]||re[e]||(rh[e]?rh[e].forEach(r):(a.push(e),i[e]=!0))}),new rB(r+\": \"+a.map(ra).join([\", \"]))}function rI(r,e,a,i,n){var f=e.length;2>f&&H(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var t=null!==e[1]&&null!==a,b=!1;for(a=1;a>2]);return a}function rO(r){4=e/2);++i){var n=y[r+2*i>>1];if(0==n)break;a+=String.fromCharCode(n)}return a}function rF(r,e,a){if(void 0===a&&(a=2147483647),2>a)return 0;a-=2;var i=e;a=a<2*r.length?a/2:r.length;for(var n=0;n>1]=r.charCodeAt(n),e+=2;return y[e>>1]=0,e-i}function rC(r){return 2*r.length}function rS(r,e){for(var a=0,i=\"\";!(a>=e/4);){var n=G[r+4*a>>2];if(0==n)break;++a,65536<=n?(n-=65536,i+=String.fromCharCode(55296|n>>10,56320|1023&n)):i+=String.fromCharCode(n)}return i}function rP(r,e,a){if(void 0===a&&(a=2147483647),4>a)return 0;var i=e;a=i+a-4;for(var n=0;n=f&&(f=65536+((1023&f)<<10)|1023&r.charCodeAt(++n)),G[e>>2]=f,(e+=4)+4>a)break}return G[e>>2]=0,e-i}function rY(r){for(var e=0,a=0;a=i&&++a,e+=4}return e}var rU={};function rM(r){var e=rU[r];return void 0===e?x(r):e}var rH=[],rQ=[],rz=[null,[],[]];M=u.BindingError=U(\"BindingError\"),u.count_emval_handles=function(){for(var r=0,e=5;erD;++rD)rj[rD]=String.fromCharCode(rD);D=rj,u.getInheritedInstanceCount=function(){return Object.keys($).length},u.getLiveInheritedInstances=function(){var r,e=[];for(r in $)$.hasOwnProperty(r)&&e.push($[r]);return e},u.flushPendingDeletes=K,u.setDelayFunction=function(r){q=r,J.length&&q&&q(K)},ro=u.InternalError=U(\"InternalError\"),rw.prototype.isAliasOf=function(r){if(!(this instanceof rw&&r instanceof rw))return!1;var e=this.L.O.M,a=this.L.N,i=r.L.O.M;for(r=r.L.N;e.P;)a=e.aa(a),e=e.P;for(;i.P;)r=i.aa(r),i=i.P;return e===i&&a===r},rw.prototype.clone=function(){if(this.L.N||rN(this),this.L.$)return this.L.count.value+=1,this;var r=ru,e=Object,a=e.create,i=Object.getPrototypeOf(this),n=this.L;return r=r(a.call(e,i,{L:{value:{count:n.count,Z:n.Z,$:n.$,N:n.N,O:n.O,S:n.S,T:n.T}}})),r.L.count.value+=1,r.L.Z=!1,r},rw.prototype.delete=function(){this.L.N||rN(this),this.L.Z&&!this.L.$&&H(\"Object already scheduled for deletion\"),rn(this),rt(this.L),this.L.$||(this.L.S=void 0,this.L.N=void 0)},rw.prototype.isDeleted=function(){return!this.L.N},rw.prototype.deleteLater=function(){return this.L.N||rN(this),this.L.Z&&!this.L.$&&H(\"Object already scheduled for deletion\"),J.push(this),1===J.length&&q&&q(K),this.L.Z=!0,this},rW.prototype.pa=function(r){return this.ja&&(r=this.ja(r)),r},rW.prototype.ga=function(r){this.V&&this.V(r)},rW.prototype.argPackAdvance=8,rW.prototype.readValueFromPointer=rl,rW.prototype.deleteObject=function(r){null!==r&&r.delete()},rW.prototype.fromWireType=function(r){function e(){return this.ca?rc(this.M.W,{O:this.va,N:i,T:this,S:r}):rc(this.M.W,{O:this,N:r})}var a,i=this.pa(r);if(!i)return this.ga(r),null;var n=$[rr(this.M,i)];if(void 0!==n)return 0===n.L.count.value?(n.L.N=i,n.L.S=r,n.clone()):(n=n.clone(),this.ga(r),n);if(!(n=rb[n=this.M.oa(i)]))return e.call(this);n=this.ba?n.ka:n.pointerType;var f=function r(e,a,i){return a===i?e:void 0===i.P?null:null===(e=r(e,a,i.P))?null:i.ma(e)}(i,this.M,n.M);return null===f?e.call(this):this.ca?rc(n.M.W,{O:n,N:f,T:this,S:r}):rc(n.M.W,{O:n,N:f})},rB=u.UnboundTypeError=U(\"UnboundTypeError\");var rx=\"function\"==typeof atob?atob:function(r){var e=\"\",a=0;r=r.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++));i=i<<2|n>>4,n=(15&n)<<4|f>>2;var b=(3&f)<<6|t;e+=String.fromCharCode(i),64!==f&&(e+=String.fromCharCode(n)),64!==t&&(e+=String.fromCharCode(b))}while(ar.sa).concat(n.map(r=>r.ya)),r=>{var f={};return n.forEach((e,a)=>{var i=r[a],t=e.qa,b=e.ra,o=r[a+n.length],k=e.xa,c=e.za;f[e.na]={read:r=>i.fromWireType(t(b,r)),write:(r,e)=>{var a=[];k(c,r,o.toWireType(a,e)),rA(a)}}}),[{name:e.name,fromWireType:function(r){var e,a={};for(e in f)a[e]=f[e].read(r);return i(r),a},toWireType:function(r,e){for(var n in f)if(!(n in e))throw TypeError('Missing field: \"'+n+'\"');var t=a();for(n in f)f[n].write(t,e[n]);return null!==r&&r.push(i,t),t},argPackAdvance:8,readValueFromPointer:rl,U:i}]})},w:function(){},C:function(r,e,a,i,n){var f=rp(a);rm(r,{name:e=x(e),fromWireType:function(r){return!!r},toWireType:function(r,e){return e?i:n},argPackAdvance:8,readValueFromPointer:function(r){if(1===a)var i=N;else if(2===a)i=y;else if(4===a)i=G;else throw TypeError(\"Unknown boolean type size: \"+e);return this.fromWireType(i[r>>f])},U:null})},f:function(r,e,a,i,n,f,t,b,o,k,c,s,A){c=x(c),f=rV(n,f),b&&(b=rV(t,b)),k&&(k=rV(o,k)),A=rV(s,A);var l,d=C(c);l=function(){rT(\"Cannot construct \"+c+\" due to unbound types\",[i])},u.hasOwnProperty(d)?(H(\"Cannot register public name '\"+d+\"' twice\"),ry(u,d,d),u.hasOwnProperty(void 0)&&H(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),u[d].R[void 0]=l):u[d]=l,rv([r,e,a],i?[i]:[],function(e){if(e=e[0],i)var a,n=e.M,t=n.W;else t=rw.prototype;e=S(d,function(){if(Object.getPrototypeOf(this)!==o)throw new M(\"Use 'new' to construct \"+c);if(void 0===s.X)throw new M(c+\" has no accessible constructor\");var r=s.X[arguments.length];if(void 0===r)throw new M(\"Tried to invoke ctor of \"+c+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(s.X).toString()+\") parameters instead!\");return r.apply(this,arguments)});var o=Object.create(t,{constructor:{value:e}});e.prototype=o;var s=new rE(c,e,o,A,n,f,b,k);n=new rW(c,s,!0,!1),t=new rW(c+\"*\",s,!1,!1);var l=new rW(c+\" const*\",s,!1,!0);return rb[r]={pointerType:t,ka:l},a=e,u.hasOwnProperty(d)||rk(\"Replacing nonexistant public symbol\"),u[d]=a,u[d].Y=void 0,[n,t,l]})},d:function(r,e,a,i,n,f,t){var b=rX(a,i);e=x(e),f=rV(n,f),rv([],[r],function(r){function i(){rT(\"Cannot call \"+n+\" due to unbound types\",b)}var n=(r=r[0]).name+\".\"+e;e.startsWith(\"@@\")&&(e=Symbol[e.substring(2)]);var o=r.M.constructor;return void 0===o[e]?(i.Y=a-1,o[e]=i):(ry(o,e,n),o[e].R[a-1]=i),rv([],b,function(r){return r=rI(n,[r[0],null].concat(r.slice(1)),null,f,t),void 0===o[e].R?(r.Y=a-1,o[e]=r):o[e].R[a-1]=r,[]}),[]})},p:function(r,e,a,i,n,f){0{rT(\"Cannot construct \"+r.name+\" due to unbound types\",t)},rv([],t,function(i){return i.splice(1,0,null),r.M.X[e-1]=rI(a,i,null,n,f),[]}),[]})},b:function(r,e,a,i,n,f,t,b){var o=rX(a,i);e=x(e),f=rV(n,f),rv([],[r],function(r){function i(){rT(\"Cannot call \"+n+\" due to unbound types\",o)}var n=(r=r[0]).name+\".\"+e;e.startsWith(\"@@\")&&(e=Symbol[e.substring(2)]),b&&r.M.ia.push(e);var k=r.M.W,c=k[e];return void 0===c||void 0===c.R&&c.className!==r.name&&c.Y===a-2?(i.Y=a-2,i.className=r.name,k[e]=i):(ry(k,e,n),k[e].R[a-2]=i),rv([],o,function(i){return i=rI(n,i,r,f,t),void 0===k[e].R?(i.Y=a-2,k[e]=i):k[e].R[a-2]=i,[]}),[]})},B:function(r,e){rm(r,{name:e=x(e),fromWireType:function(r){var e=Q(r);return rO(r),e},toWireType:function(r,e){return z(e)},argPackAdvance:8,readValueFromPointer:rl,U:null})},n:function(r,e,a){a=rp(a),rm(r,{name:e=x(e),fromWireType:function(r){return r},toWireType:function(r,e){return e},argPackAdvance:8,readValueFromPointer:function(r,e){switch(e){case 2:return function(r){return this.fromWireType(g[r>>2])};case 3:return function(r){return this.fromWireType(Z[r>>3])};default:throw TypeError(\"Unknown float type: \"+r)}}(e,a),U:null})},e:function(r,e,a,i,n){e=x(e),-1===n&&(n=4294967295),n=rp(a);var f=r=>r;if(0===i){var t=32-8*a;f=r=>r<>>t}a=e.includes(\"unsigned\")?function(r,e){return e>>>0}:function(r,e){return e},rm(r,{name:e,fromWireType:f,toWireType:a,argPackAdvance:8,readValueFromPointer:function(r,e,a){switch(e){case 0:return a?function(r){return N[r]}:function(r){return w[r]};case 1:return a?function(r){return y[r>>1]}:function(r){return E[r>>1]};case 2:return a?function(r){return G[r>>2]}:function(r){return R[r>>2]};default:throw TypeError(\"Unknown integer type: \"+r)}}(e,n,0!==i),U:null})},c:function(r,e,a){function i(r){r>>=2;var e=R;return new n(e.buffer,e[r+1],e[r])}var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][e];rm(r,{name:a=x(a),fromWireType:i,argPackAdvance:8,readValueFromPointer:i},{ta:!0})},o:function(r,e){var a=\"std::string\"===(e=x(e));rm(r,{name:e,fromWireType:function(r){var e=R[r>>2],i=r+4;if(a)for(var n=i,f=0;f<=e;++f){var t=i+f;if(f==e||0==w[t]){if(n=n?v(w,n,t-n):\"\",void 0===b)var b=n;else b+=\"\\x00\"+n;n=t+1}}else{for(f=0,b=Array(e);f=t?f++:2047>=t?f+=2:55296<=t&&57343>=t?(f+=4,++i):f+=3}i=f}else i=e.length;if(t=(f=r$(4+i+1))+4,R[f>>2]=i,a&&n){if(n=t,t=i+1,i=w,0=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++b)),127>=o){if(n>=t)break;i[n++]=o}else{if(2047>=o){if(n+1>=t)break;i[n++]=192|o>>6}else{if(65535>=o){if(n+2>=t)break;i[n++]=224|o>>12}else{if(n+3>=t)break;i[n++]=240|o>>18,i[n++]=128|o>>12&63}i[n++]=128|o>>6&63}i[n++]=128|63&o}}i[n]=0}}else if(n)for(n=0;nE,b=1;else 4===e&&(i=rS,n=rP,f=rY,t=()=>R,b=2);rm(r,{name:a,fromWireType:function(r){for(var a,n=R[r>>2],f=t(),o=r+4,k=0;k<=n;++k){var c=r+4+k*e;(k==n||0==f[c>>b])&&(o=i(o,c-o),void 0===a?a=o:a+=\"\\x00\"+o,o=c+e)}return r0(r),a},toWireType:function(r,i){\"string\"!=typeof i&&H(\"Cannot pass non-string to C++ string type \"+a);var t=f(i),o=r$(4+t+e);return R[o>>2]=t>>b,n(i,o+4,t+e),null!==r&&r.push(r0,o),o},argPackAdvance:8,readValueFromPointer:rl,U:function(r){r0(r)}})},l:function(r,e,a,i,n,f){rs[r]={name:x(e),ea:rV(a,i),V:rV(n,f),ha:[]}},i:function(r,e,a,i,n,f,t,b,o,k){rs[r].ha.push({na:x(e),sa:a,qa:rV(i,n),ra:f,ya:t,xa:rV(b,o),za:k})},D:function(r,e){rm(r,{ua:!0,name:e=x(e),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},t:function(r,e,a,i,n){r=rH[r],e=Q(e),a=rM(a);var f=[];return R[i>>2]=z(f),r(e,a,f,n)},u:function(r,e,a,i){r=rH[r],r(e=Q(e),a=rM(a),null,i)},h:rO,m:function(r,e){var a,i,n=function(r,e){for(var a=Array(r),i=0;i>2],\"parameter \"+i);return a}(r,e),f=n[0],t=rQ[e=f.name+\"_$\"+n.slice(1).map(function(r){return r.name}).join(\"_\")+\"$\"];if(void 0!==t)return t;var b=Array(r-1);return a=(e,a,i,t)=>{for(var o=0,k=0;k>>=0))return!1;for(var a=1;4>=a;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var n=Math,f=n.min;i=Math.max(r,i),i+=(65536-i%65536)%65536;r:{var t=d.buffer;try{d.grow(f.call(n,2147483648,i)-t.byteLength+65535>>>16),p();var b=1;break r}catch(r){}b=void 0}if(b)return!0}return!1},A:function(){return 52},v:function(){return 70},z:function(r,e,a,i){for(var n=0,f=0;f>2],k=R[e+4>>2];e+=8;for(var c=0;c>2]=n,0},a:d},rK=function(){function r(r){u.asm=r.exports,W=u.asm.I,B.unshift(u.asm.E),I--,u.monitorRunDependencies&&u.monitorRunDependencies(I),0==I&&X&&(r=X,X=null,r())}var e={a:rJ};if(I++,u.monitorRunDependencies&&u.monitorRunDependencies(I),u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(r){b(\"Module.instantiateWasm callback failed with error: \"+r),A(r)}return e=function(r){var e=a;try{try{if(e==a&&l)new Uint8Array(l);else{if(L(e)){try{var i=rx(e.slice(37)),n=new Uint8Array(i.length);for(e=0;e\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * @typedef {import('reading-time').Options['wordBound']} WordBoundFunction\n */\n\n/**\n * @param {number} number\n * @param {number[][]} arrayOfRanges\n */\nfunction codeIsInRanges(number, arrayOfRanges) {\n return arrayOfRanges.some(([lowerBound, upperBound]) =>\n (lowerBound <= number) && (number <= upperBound)\n )\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isCJK(c) {\n if ('string' !== typeof c) {\n return false\n }\n const charCode = c.charCodeAt(0)\n // Help wanted!\n // This should be good for most cases, but if you find it unsatisfactory\n // (e.g. some other language where each character should be standalone words),\n // contributions welcome!\n return codeIsInRanges(\n charCode,\n [\n // Hiragana (Katakana not included on purpose,\n // context: https://github.com/ngryman/reading-time/pull/35#issuecomment-853364526)\n // If you think Katakana should be included and have solid reasons, improvement is welcomed\n [0x3040, 0x309f],\n // CJK Unified ideographs\n [0x4e00, 0x9fff],\n // Hangul\n [0xac00, 0xd7a3],\n // CJK extensions\n [0x20000, 0x2ebe0]\n ]\n )\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isAnsiWordBound(c) {\n return ' \\n\\r\\t'.includes(c)\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isPunctuation(c) {\n if ('string' !== typeof c) {\n return false\n }\n const charCode = c.charCodeAt(0)\n return codeIsInRanges(\n charCode,\n [\n [0x21, 0x2f],\n [0x3a, 0x40],\n [0x5b, 0x60],\n [0x7b, 0x7e],\n // CJK Symbols and Punctuation\n [0x3000, 0x303f],\n // Full-width ASCII punctuation variants\n [0xff00, 0xffef]\n ]\n )\n}\n\n/**\n * @type {import('reading-time').default}\n */\nfunction readingTime(text, options = {}) {\n let words = 0, start = 0, end = text.length - 1\n\n // use provided value if available\n const wordsPerMinute = options.wordsPerMinute || 200\n\n // use provided function if available\n const isWordBound = options.wordBound || isAnsiWordBound\n\n // fetch bounds\n while (isWordBound(text[start])) start++\n while (isWordBound(text[end])) end--\n\n // Add a trailing word bound to make handling edges more convenient\n const normalizedText = `${text}\\n`\n\n // calculate the number of words\n for (let i = start; i <= end; i++) {\n // A CJK character is a always word;\n // A non-word bound followed by a word bound / CJK is the end of a word.\n if (\n isCJK(normalizedText[i]) ||\n (!isWordBound(normalizedText[i]) &&\n (isWordBound(normalizedText[i + 1]) || isCJK(normalizedText[i + 1]))\n )\n ) {\n words++\n }\n // In case of CJK followed by punctuations, those characters have to be eaten as well\n if (isCJK(normalizedText[i])) {\n while (\n i <= end &&\n (isPunctuation(normalizedText[i + 1]) || isWordBound(normalizedText[i + 1]))\n ) {\n i++\n }\n }\n }\n\n // reading time stats\n const minutes = words / wordsPerMinute\n // Math.round used to resolve floating point funkyness\n // http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html\n const time = Math.round(minutes * 60 * 1000)\n const displayed = Math.ceil(minutes.toFixed(2))\n\n return {\n text: displayed + ' min read',\n minutes: minutes,\n time: time,\n words: words\n }\n}\n\n/**\n * Export\n */\nmodule.exports = readingTime\n","/*!\n * reading-time\n * Copyright (c) Nicolas Gryman \n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\nconst readingTime = require('./reading-time')\nconst Transform = require('stream').Transform\nconst util = require('util')\n\n/**\n * @typedef {import('reading-time').Options} Options\n * @typedef {import('reading-time').Options['wordBound']} WordBoundFunction\n * @typedef {import('reading-time').readingTimeStream} ReadingTimeStream\n * @typedef {import('stream').TransformCallback} TransformCallback\n */\n\n/**\n * @param {Options} options\n * @returns {ReadingTimeStream}\n */\nfunction ReadingTimeStream(options) {\n // allow use without new\n if (!(this instanceof ReadingTimeStream)) {\n return new ReadingTimeStream(options)\n }\n\n Transform.call(this, { objectMode: true })\n\n this.options = options || {}\n this.stats = {\n minutes: 0,\n time: 0,\n words: 0\n }\n}\nutil.inherits(ReadingTimeStream, Transform)\n\n/**\n * @param {Buffer} chunk\n * @param {BufferEncoding} encoding\n * @param {TransformCallback} callback\n */\nReadingTimeStream.prototype._transform = function(chunk, encoding, callback) {\n const stats = readingTime(chunk.toString(encoding), this.options)\n\n this.stats.minutes += stats.minutes\n this.stats.time += stats.time\n this.stats.words += stats.words\n\n callback()\n}\n\n/**\n * @param {TransformCallback} callback\n */\nReadingTimeStream.prototype._flush = function(callback) {\n this.stats.text = Math.ceil(this.stats.minutes.toFixed(2)) + ' min read'\n\n this.push(this.stats)\n callback()\n}\n\n/**\n * Export\n */\nmodule.exports = ReadingTimeStream\n","module.exports.default = module.exports = require('./lib/reading-time')\nmodule.exports.readingTimeStream = require('./lib/stream')\n","// The following break classes are handled by the pair table\nexport const OP = 0; // Opening punctuation\nexport const CL = 1; // Closing punctuation\nexport const CP = 2; // Closing parenthesis\nexport const QU = 3; // Ambiguous quotation\nexport const GL = 4; // Glue\nexport const NS = 5; // Non-starters\nexport const EX = 6; // Exclamation/Interrogation\nexport const SY = 7; // Symbols allowing break after\nexport const IS = 8; // Infix separator\nexport const PR = 9; // Prefix\nexport const PO = 10; // Postfix\nexport const NU = 11; // Numeric\nexport const AL = 12; // Alphabetic\nexport const HL = 13; // Hebrew Letter\nexport const ID = 14; // Ideographic\nexport const IN = 15; // Inseparable characters\nexport const HY = 16; // Hyphen\nexport const BA = 17; // Break after\nexport const BB = 18; // Break before\nexport const B2 = 19; // Break on either side (but not pair)\nexport const ZW = 20; // Zero-width space\nexport const CM = 21; // Combining marks\nexport const WJ = 22; // Word joiner\nexport const H2 = 23; // Hangul LV\nexport const H3 = 24; // Hangul LVT\nexport const JL = 25; // Hangul L Jamo\nexport const JV = 26; // Hangul V Jamo\nexport const JT = 27; // Hangul T Jamo\nexport const RI = 28; // Regional Indicator\nexport const EB = 29; // Emoji Base\nexport const EM = 30; // Emoji Modifier\nexport const ZWJ = 31; // Zero Width Joiner\nexport const CB = 32; // Contingent break\n\n// The following break classes are not handled by the pair table\nexport const AI = 33; // Ambiguous (Alphabetic or Ideograph)\nexport const BK = 34; // Break (mandatory)\nexport const CJ = 35; // Conditional Japanese Starter\nexport const CR = 36; // Carriage return\nexport const LF = 37; // Line feed\nexport const NL = 38; // Next line\nexport const SA = 39; // South-East Asian\nexport const SG = 40; // Surrogates\nexport const SP = 41; // Space\nexport const XX = 42; // Unknown\n","export const DI_BRK = 0; // Direct break opportunity\nexport const IN_BRK = 1; // Indirect break opportunity\nexport const CI_BRK = 2; // Indirect break opportunity for combining marks\nexport const CP_BRK = 3; // Prohibited break for combining marks\nexport const PR_BRK = 4; // Prohibited break\n\n// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2\n// - ZWJ special processing for LB8a of Revision 41\n// - CB manually added as per Rule LB20\n// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45\nexport const pairTable = [\n //OP , CL , CP , QU , GL , NS , EX , SY , IS , PR , PO , NU , AL , HL , ID , IN , HY , BA , BB , B2 , ZW , CM , WJ , H2 , H3 , JL , JV , JT , RI , EB , EM , ZWJ , CB\n [PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], // OP\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CP\n [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // QU\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // GL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NS\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EX\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // SY\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IS\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // PR\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // PO\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NU\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // AL\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ID\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IN\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HY\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // BA\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // BB\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // B2\n [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], // ZW\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CM\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // WJ\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H2\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H3\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JV\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JT\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // RI\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], // EB\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EM\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ZWJ\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK] // CB\n];","import UnicodeTrie from 'unicode-trie';\nimport fs from 'fs';\nimport base64 from 'base64-js';\nimport { BK, CR, LF, NL, SG, WJ, SP, ZWJ, BA, HY, NS, AI, AL, CJ, HL, RI, SA, XX } from './classes';\nimport { DI_BRK, IN_BRK, CI_BRK, CP_BRK, PR_BRK, pairTable } from './pairs';\n\nconst data = base64.toByteArray(fs.readFileSync(__dirname + '/classes.trie', 'base64'));\nconst classTrie = new UnicodeTrie(data);\n\nconst mapClass = function (c) {\n switch (c) {\n case AI:\n return AL;\n\n case SA:\n case SG:\n case XX:\n return AL;\n\n case CJ:\n return NS;\n\n default:\n return c;\n }\n};\n\nconst mapFirst = function (c) {\n switch (c) {\n case LF:\n case NL:\n return BK;\n\n case SP:\n return WJ;\n\n default:\n return c;\n }\n};\n\nclass Break {\n constructor(position, required = false) {\n this.position = position;\n this.required = required;\n }\n}\n\nclass LineBreaker {\n constructor(string) {\n this.string = string;\n this.pos = 0;\n this.lastPos = 0;\n this.curClass = null;\n this.nextClass = null;\n this.LB8a = false;\n this.LB21a = false;\n this.LB30a = 0;\n }\n\n nextCodePoint() {\n const code = this.string.charCodeAt(this.pos++);\n const next = this.string.charCodeAt(this.pos);\n\n // If a surrogate pair\n if ((0xd800 <= code && code <= 0xdbff) && (0xdc00 <= next && next <= 0xdfff)) {\n this.pos++;\n return ((code - 0xd800) * 0x400) + (next - 0xdc00) + 0x10000;\n }\n\n return code;\n }\n\n nextCharClass() {\n return mapClass(classTrie.get(this.nextCodePoint()));\n }\n\n getSimpleBreak() {\n // handle classes not handled by the pair table\n switch (this.nextClass) {\n case SP:\n return false;\n\n case BK:\n case LF:\n case NL:\n this.curClass = BK;\n return false;\n\n case CR:\n this.curClass = CR;\n return false;\n }\n\n return null;\n }\n\n getPairTableBreak(lastClass) {\n // if not handled already, use the pair table\n let shouldBreak = false;\n switch (pairTable[this.curClass][this.nextClass]) {\n case DI_BRK: // Direct break\n shouldBreak = true;\n break;\n\n case IN_BRK: // possible indirect break\n shouldBreak = lastClass === SP;\n break;\n\n case CI_BRK:\n shouldBreak = lastClass === SP;\n if (!shouldBreak) {\n shouldBreak = false;\n return shouldBreak;\n }\n break;\n\n case CP_BRK: // prohibited for combining marks\n if (lastClass !== SP) {\n return shouldBreak;\n }\n break;\n\n case PR_BRK:\n break;\n }\n\n if (this.LB8a) {\n shouldBreak = false;\n }\n\n // Rule LB21a\n if (this.LB21a && (this.curClass === HY || this.curClass === BA)) {\n shouldBreak = false;\n this.LB21a = false;\n } else {\n this.LB21a = (this.curClass === HL);\n }\n\n // Rule LB30a\n if (this.curClass === RI) {\n this.LB30a++;\n if (this.LB30a == 2 && (this.nextClass === RI)) {\n shouldBreak = true;\n this.LB30a = 0;\n }\n } else {\n this.LB30a = 0;\n }\n\n this.curClass = this.nextClass;\n\n return shouldBreak;\n }\n\n nextBreak() {\n // get the first char if we're at the beginning of the string\n if (this.curClass == null) {\n let firstClass = this.nextCharClass();\n this.curClass = mapFirst(firstClass);\n this.nextClass = firstClass;\n this.LB8a = (firstClass === ZWJ);\n this.LB30a = 0;\n }\n\n while (this.pos < this.string.length) {\n this.lastPos = this.pos;\n const lastClass = this.nextClass;\n this.nextClass = this.nextCharClass();\n\n // explicit newline\n if ((this.curClass === BK) || ((this.curClass === CR) && (this.nextClass !== LF))) {\n this.curClass = mapFirst(mapClass(this.nextClass));\n return new Break(this.lastPos, true);\n }\n\n let shouldBreak = this.getSimpleBreak();\n\n if (shouldBreak === null) {\n shouldBreak = this.getPairTableBreak(lastClass);\n }\n\n // Rule LB8a\n this.LB8a = (this.nextClass === ZWJ);\n\n if (shouldBreak) {\n return new Break(this.lastPos);\n }\n }\n\n if (this.lastPos < this.string.length) {\n this.lastPos = this.string.length;\n return new Break(this.string.length);\n }\n\n return null;\n }\n}\n\nmodule.exports = LineBreaker;\n","/**\n * This module expands the CSS properties to get rid of shorthands, as well as\n * cleaning up some properties.\n */\n\nimport { getPropertyName, getStylesForProperty } from 'css-to-react-native'\nimport { parseElementStyle } from 'css-background-parser'\nimport { parse as parseBoxShadow } from 'css-box-shadow'\nimport cssColorParse from 'parse-css-color'\n\nimport CssDimension from '../vendor/parse-css-dimension/index.js'\nimport parseTransformOrigin, {\n ParsedTransformOrigin,\n} from '../transform-origin.js'\nimport { isString, lengthToNumber, v, splitEffects } from '../utils.js'\nimport { MaskProperty, parseMask } from '../parser/mask.js'\nimport { FontWeight, FontStyle } from '../font.js'\n\n// https://react-cn.github.io/react/tips/style-props-value-px.html\nconst optOutPx = new Set([\n 'flex',\n 'flexGrow',\n 'flexShrink',\n 'flexBasis',\n 'fontWeight',\n 'lineHeight',\n 'opacity',\n 'scale',\n 'scaleX',\n 'scaleY',\n])\nconst keepNumber = new Set(['lineHeight'])\n\nfunction handleFallbackColor(\n prop: string,\n parsed: Record,\n rawInput: string,\n currentColor: string\n) {\n if (\n prop === 'textDecoration' &&\n !rawInput.includes(parsed.textDecorationColor)\n ) {\n parsed.textDecorationColor = currentColor\n }\n return parsed\n}\n\nfunction purify(name: string, value?: string | number) {\n const num = Number(value)\n if (isNaN(num)) return value\n if (!optOutPx.has(name)) return num + 'px'\n if (keepNumber.has(name)) return num\n return String(value)\n}\n\nfunction handleSpecialCase(\n name: string,\n value: string | number,\n currentColor: string\n) {\n if (name === 'lineHeight') {\n return { lineHeight: purify(name, value) }\n }\n\n if (name === 'fontFamily') {\n return {\n fontFamily: (value as string).split(',').map((_v) => {\n return _v\n .trim()\n .replace(/(^['\"])|(['\"]$)/g, '')\n .toLocaleLowerCase()\n }),\n }\n }\n\n if (name === 'borderRadius') {\n if (typeof value !== 'string' || !value.includes('/')) {\n // Regular border radius\n return\n }\n // Support the `border-radius: 10px / 20px` syntax.\n const [horizontal, vertical] = value.split('/')\n const vh = getStylesForProperty(name, horizontal, true)\n const vv = getStylesForProperty(name, vertical, true)\n for (const k in vh) {\n vv[k] = purify(name, vh[k]) + ' ' + purify(name, vv[k])\n }\n return vv\n }\n\n if (/^border(Top|Right|Bottom|Left)?$/.test(name)) {\n const resolved = getStylesForProperty('border', value, true)\n\n // Border width should be default to 3px (medium) instead of 1px:\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#border-width\n // Although on Chrome it will be displayed as 1.5px but let's stick to the\n // spec.\n if (resolved.borderWidth === 1 && !String(value).includes('1px')) {\n resolved.borderWidth = 3\n }\n\n // A trick to fix `border: 1px solid` to not use `black` but the inherited\n // `color` value. This is necessary because css-to-react-native automatically\n // fallbacks to default color values.\n if (resolved.borderColor === 'black' && !String(value).includes('black')) {\n resolved.borderColor = currentColor\n }\n\n const purified = {\n Width: purify(name + 'Width', resolved.borderWidth),\n Style: v(\n resolved.borderStyle,\n {\n solid: 'solid',\n dashed: 'dashed',\n },\n 'solid',\n name + 'Style'\n ),\n Color: resolved.borderColor,\n }\n\n const full = {}\n for (const k of name === 'border'\n ? ['Top', 'Right', 'Bottom', 'Left']\n : [name.slice(6)]) {\n for (const p in purified) {\n full['border' + k + p] = purified[p]\n }\n }\n return full\n }\n\n if (name === 'boxShadow') {\n if (!value) {\n throw new Error('Invalid `boxShadow` value: \"' + value + '\".')\n }\n return {\n [name]: typeof value === 'string' ? parseBoxShadow(value) : value,\n }\n }\n\n if (name === 'transform') {\n if (typeof value !== 'string') throw new Error('Invalid `transform` value.')\n // To support percentages in transform (which is not supported in RN), we\n // replace them with random symbols and then replace them back after parsing.\n const symbols = {}\n const replaced = value.replace(/(-?[\\d.]+%)/g, (_, _v) => {\n const symbol = ~~(Math.random() * 1e9)\n symbols[symbol] = _v\n return symbol + 'px'\n })\n const parsed = getStylesForProperty('transform', replaced, true)\n for (const t of parsed.transform) {\n for (const k in t) {\n if (symbols[t[k]]) {\n t[k] = symbols[t[k]]\n }\n }\n }\n return parsed\n }\n\n if (name === 'background') {\n value = value.toString().trim()\n if (\n /^(linear-gradient|radial-gradient|url|repeating-linear-gradient)\\(/.test(\n value\n )\n ) {\n return getStylesForProperty('backgroundImage', value, true)\n }\n return getStylesForProperty('background', value, true)\n }\n\n if (name === 'textShadow') {\n // Handle multiple text shadows if provided.\n value = value.toString().trim()\n const result = {}\n\n const shadows = splitEffects(value)\n\n for (const shadow of shadows) {\n const styles = getStylesForProperty('textShadow', shadow, true)\n for (const k in styles) {\n if (!result[k]) {\n result[k] = [styles[k]]\n } else {\n result[k].push(styles[k])\n }\n }\n }\n\n return result\n }\n\n if (name === 'WebkitTextStroke') {\n value = value.toString().trim()\n const values = value.split(' ')\n if (values.length !== 2) {\n throw new Error('Invalid `WebkitTextStroke` value.')\n }\n\n return {\n WebkitTextStrokeWidth: purify(name, values[0]),\n WebkitTextStrokeColor: purify(name, values[1]),\n }\n }\n\n return\n}\n\nfunction getErrorHint(name: string) {\n if (name === 'transform') {\n return ' Only absolute lengths such as `10px` are supported.'\n }\n return ''\n}\n\nconst RGB_SLASH = /rgb\\((\\d+)\\s+(\\d+)\\s+(\\d+)\\s*\\/\\s*([\\.\\d]+)\\)/\nfunction normalizeColor(value: string | object) {\n if (typeof value === 'string') {\n if (RGB_SLASH.test(value.trim())) {\n // rgb(255 122 127 / .2) -> rgba(255, 122, 127, .2)\n return value.trim().replace(RGB_SLASH, (_, r, g, b, a) => {\n return `rgba(${r}, ${g}, ${b}, ${a})`\n })\n }\n }\n\n // Recursively normalize colors in arrays and objects.\n if (typeof value === 'object' && value !== null) {\n for (const k in value) {\n value[k] = normalizeColor(value[k])\n }\n return value\n }\n\n return value\n}\n\ntype MainStyle = {\n color: string\n fontSize: number\n transformOrigin: ParsedTransformOrigin\n maskImage: MaskProperty[]\n opacity: number\n textTransform: string\n whiteSpace: string\n wordBreak: string\n textAlign: string\n lineHeight: number | string\n letterSpacing: number\n\n fontFamily: string | string[]\n fontWeight: FontWeight\n fontStyle: FontStyle\n\n borderTopWidth: number\n borderLeftWidth: number\n borderRightWidth: number\n borderBottomWidth: number\n\n paddingTop: number\n paddingLeft: number\n paddingRight: number\n paddingBottom: number\n\n flexGrow: number\n flexShrink: number\n\n gap: number\n rowGap: number\n columnGap: number\n\n textShadowOffset: {\n width: number\n height: number\n }[]\n textShadowColor: string[]\n textShadowRadius: number[]\n WebkitTextStrokeWidth: number\n WebkitTextStrokeColor: string\n}\n\ntype OtherStyle = Exclude, keyof MainStyle>\n\nexport type SerializedStyle = Partial\n\nexport default function expand(\n style: Record | undefined,\n inheritedStyle: SerializedStyle\n): SerializedStyle {\n const serializedStyle: SerializedStyle = {}\n\n if (style) {\n const currentColor = getCurrentColor(\n style.color as string,\n inheritedStyle.color\n )\n\n serializedStyle.color = currentColor\n\n for (const prop in style) {\n // Internal properties.\n if (prop.startsWith('_')) {\n serializedStyle[prop] = style[prop]\n continue\n }\n\n if (prop === 'color') {\n continue\n }\n\n const name = getPropertyName(prop)\n const value = preprocess(style[prop], currentColor)\n\n try {\n const resolvedStyle =\n handleSpecialCase(name, value, currentColor) ||\n handleFallbackColor(\n name,\n getStylesForProperty(name, purify(name, value), true),\n value as string,\n currentColor\n )\n\n Object.assign(serializedStyle, resolvedStyle)\n } catch (err) {\n throw new Error(\n err.message +\n // Attach the extra information of the rule itself if it's not included in\n // the error message.\n (err.message.includes(value)\n ? '\\n ' + getErrorHint(name)\n : `\\n in CSS rule \\`${name}: ${value}\\`.${getErrorHint(name)}`)\n )\n }\n }\n }\n\n // Parse background images.\n if (serializedStyle.backgroundImage) {\n const { backgrounds } = parseElementStyle(serializedStyle)\n serializedStyle.backgroundImage = backgrounds\n }\n\n if (serializedStyle.maskImage || serializedStyle['WebkitMaskImage']) {\n serializedStyle.maskImage = parseMask(serializedStyle)\n }\n\n // Calculate the base font size.\n const baseFontSize = calcBaseFontSize(\n serializedStyle.fontSize,\n inheritedStyle.fontSize\n )\n if (typeof serializedStyle.fontSize !== 'undefined') {\n serializedStyle.fontSize = baseFontSize\n }\n\n if (serializedStyle.transformOrigin) {\n serializedStyle.transformOrigin = parseTransformOrigin(\n serializedStyle.transformOrigin as any,\n baseFontSize\n )\n }\n\n for (const prop in serializedStyle) {\n let value = serializedStyle[prop]\n\n // Line height needs to be relative.\n if (prop === 'lineHeight') {\n if (typeof value === 'string' && value !== 'normal') {\n value = serializedStyle[prop] =\n lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle,\n true\n ) / baseFontSize\n }\n } else {\n // Convert em and rem values to px (number).\n if (typeof value === 'string') {\n const len = lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle\n )\n if (typeof len !== 'undefined') serializedStyle[prop] = len\n value = serializedStyle[prop]\n }\n\n if (typeof value === 'string' || typeof value === 'object') {\n const color = normalizeColor(value)\n if (color) {\n serializedStyle[prop] = color as any\n }\n value = serializedStyle[prop]\n }\n }\n\n // Inherit the opacity.\n if (prop === 'opacity' && typeof value === 'number') {\n serializedStyle.opacity = value * inheritedStyle.opacity\n }\n\n if (prop === 'transform') {\n const transforms = value as any as { [type: string]: number | string }[]\n\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n const _v = transform[type]\n\n // Convert em, rem, vw, vh values to px (number), but keep % values.\n const len =\n typeof _v === 'string'\n ? lengthToNumber(_v, baseFontSize, baseFontSize, inheritedStyle) ??\n _v\n : _v\n transform[type] = len\n }\n }\n\n if (prop === 'textShadowRadius') {\n const textShadowRadius = value as unknown as Array\n\n serializedStyle.textShadowRadius = textShadowRadius.map((_v) =>\n lengthToNumber(_v, baseFontSize, 0, inheritedStyle, false)\n )\n }\n\n if (prop === 'textShadowOffset') {\n const textShadowOffset = value as unknown as Array<{\n width: number | string\n height: number | string\n }>\n\n serializedStyle.textShadowOffset = textShadowOffset.map(\n ({ height, width }) => ({\n height: lengthToNumber(\n height,\n baseFontSize,\n 0,\n inheritedStyle,\n false\n ),\n width: lengthToNumber(width, baseFontSize, 0, inheritedStyle, false),\n })\n )\n }\n }\n\n return serializedStyle\n}\n\nfunction calcBaseFontSize(\n size: number | string,\n inheritedSize: number\n): number {\n if (typeof size === 'number') return size\n\n try {\n const parsed = new CssDimension(size)\n switch (parsed.unit) {\n case 'em':\n return parsed.value * inheritedSize\n case 'rem':\n return parsed.value * 16\n }\n } catch (err) {\n return inheritedSize\n }\n}\n\n/**\n * @see https://github.com/RazrFalcon/resvg/issues/579\n */\nfunction refineHSL(color: string) {\n if (color.startsWith('hsl')) {\n const t = cssColorParse(color)\n const [h, s, l] = t.values\n\n return `hsl(${[h, `${s}%`, `${l}%`]\n .concat(t.alpha === 1 ? [] : [t.alpha])\n .join(',')})`\n }\n\n return color\n}\n\nfunction getCurrentColor(\n color: string | undefined,\n inheritedColor: string\n): string {\n if (color && color.toLowerCase() !== 'currentcolor') {\n return refineHSL(color)\n }\n\n return refineHSL(inheritedColor)\n}\n\nfunction convertCurrentColorToActualValue(\n value: string,\n currentColor: string\n): string {\n return value.replace(/currentcolor/gi, currentColor)\n}\n\nfunction preprocess(\n value: string | number,\n currentColor: string\n): string | number {\n if (isString(value)) {\n value = convertCurrentColorToActualValue(value, currentColor)\n }\n\n return value\n}\n","import colorName from 'color-name';\nimport hex2Rgb from 'hex-rgb';\n\nconst pattern = /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/;\nvar hexRe = new RegExp(pattern, 'i');\n\nconst float = '-?\\\\d*(?:\\\\.\\\\d+)';\n\nconst number = `(${float}?)`;\nconst percentage = `(${float}?%)`;\nconst numberOrPercentage = `(${float}?%?)`;\n\nconst pattern$1 = `^\n hsla?\\\\(\n \\\\s*(-?\\\\d*(?:\\\\.\\\\d+)?(?:deg|rad|turn)?)\\\\s*,\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar hsl3Re = new RegExp(pattern$1);\n\nconst pattern$2 = `^\n hsla?\\\\(\n \\\\s*(-?\\\\d*(?:\\\\.\\\\d+)?(?:deg|rad|turn)?)\\\\s*\n \\\\s+${percentage}\n \\\\s+${percentage}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar hsl4Re = new RegExp(pattern$2);\n\nconst pattern$3 = `^\n rgba?\\\\(\n \\\\s*${number}\\\\s*,\n \\\\s*${number}\\\\s*,\n \\\\s*${number}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar rgb3NumberRe = new RegExp(pattern$3);\n\nconst pattern$4 = `^\n rgba?\\\\(\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar rgb3PercentageRe = new RegExp(pattern$4);\n\nconst pattern$5 = `^\n rgba?\\\\(\n \\\\s*${number}\n \\\\s+${number}\n \\\\s+${number}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n$\n`.replace(/\\n|\\s/g, '');\n\nvar rgb4NumberRe = new RegExp(pattern$5);\n\nconst pattern$6 = `^\n rgba?\\\\(\n \\\\s*${percentage}\n \\\\s+${percentage}\n \\\\s+${percentage}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n$\n`.replace(/\\n|\\s/g, '');\n\nvar rgb4PercentageRe = new RegExp(pattern$6);\n\nconst pattern$7 = /^transparent$/;\nvar transparentRe = new RegExp(pattern$7, 'i');\n\nconst clamp = (num, min, max) => Math.min(Math.max(min, num), max);\n\n/* 500 => 255, -10 => 0, 128 => 128 */\nconst parseRGB = (num) => {\n let n = num;\n if (typeof n !== 'number') n = n.endsWith('%') ? (parseFloat(n) * 255) / 100 : parseFloat(n);\n return clamp(Math.round(n), 0, 255);\n};\n\n/* 200 => 100, -100 => 0, 50 => 50 */\nconst parsePercentage = (percentage) => clamp(parseFloat(percentage), 0, 100);\n\n/* '50%' => 5.0, 200 => 1, -10 => 0 */\nfunction parseAlpha(alpha) {\n let a = alpha;\n if (typeof a !== 'number') a = a.endsWith('%') ? parseFloat(a) / 100 : parseFloat(a);\n return clamp(a, 0, 1);\n}\n\nfunction getHEX(hex) {\n const [r, g, b, a] = hex2Rgb(hex, { format: 'array' });\n return getRGB([null, ...[r, g, b, a]]);\n}\n\nfunction getHSL([, h, s, l, a = 1]) {\n let hh = h;\n if (hh.endsWith('turn')) {\n hh = (parseFloat(hh) * 360) / 1;\n } else if (hh.endsWith('rad')) {\n hh = Math.round((parseFloat(hh) * 180) / Math.PI);\n } else {\n hh = parseFloat(hh);\n }\n return {\n type: 'hsl',\n values: [hh, parsePercentage(s), parsePercentage(l)],\n alpha: parseAlpha(a === null ? 1 : a)\n };\n}\n\nfunction getRGB([, r, g, b, a = 1]) {\n return {\n type: 'rgb',\n values: [r, g, b].map(parseRGB),\n alpha: parseAlpha(a === null ? 1 : a)\n };\n}\n\n/**\n * parse-css-color\n * @version v0.2.1\n * @link http://github.com/noeldelgado/parse-css-color/\n * @license MIT\n */\n\nconst parseCSSColor = (str) => {\n if (typeof str !== 'string') return null;\n\n const hex = hexRe.exec(str);\n if (hex) return getHEX(hex[0]);\n\n const hsl = hsl4Re.exec(str) || hsl3Re.exec(str);\n if (hsl) return getHSL(hsl);\n\n const rgb =\n rgb4NumberRe.exec(str) ||\n rgb4PercentageRe.exec(str) ||\n rgb3NumberRe.exec(str) ||\n rgb3PercentageRe.exec(str);\n if (rgb) return getRGB(rgb);\n\n if (transparentRe.exec(str)) return getRGB([null, 0, 0, 0, 0]);\n\n const cn = colorName[str.toLowerCase()];\n if (cn) return getRGB([null, cn[0], cn[1], cn[2], 1]);\n\n return null;\n};\n\nexport default parseCSSColor;\n","import valueParser from 'postcss-value-parser'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\n\n/**\n * If key for each direction is missing, assume default (50%)\n */\nexport interface ParsedTransformOrigin {\n /** Relative horizontal transform origin in % */\n xRelative?: number\n /** Relative vertical transform origin in % */\n yRelative?: number\n /** Absolute horizontal transform origin in pixels */\n xAbsolute?: number\n /** Absolute horizontal transform origin in pixels */\n yAbsolute?: number\n}\n\ninterface ParsedUnit {\n /** Relative unit in % */\n relative?: number\n /** Absolute unit in pixels */\n absolute?: number\n}\n\nfunction parseUnit(word: string, baseFontSize: number): ParsedUnit {\n try {\n const parsed = new CssDimension(word)\n switch (parsed.unit) {\n case 'px':\n return { absolute: parsed.value }\n case 'em':\n return { absolute: parsed.value * baseFontSize }\n case 'rem':\n return { absolute: parsed.value * 16 }\n case '%':\n return { relative: parsed.value }\n default:\n return {}\n }\n } catch (e) {\n return {}\n }\n}\n\nfunction handleWord(\n word: string,\n baseFontSize: number,\n unitIsHorizontal: boolean\n) {\n switch (word) {\n case 'top':\n return { yRelative: 0 }\n case 'left':\n return { xRelative: 0 }\n case 'right':\n return { xRelative: 100 }\n case 'bottom':\n return { yRelative: 100 }\n case 'center':\n return {}\n default: {\n const parsedUnit = parseUnit(word, baseFontSize)\n return parsedUnit.absolute\n ? {\n [unitIsHorizontal ? 'xAbsolute' : 'yAbsolute']: parsedUnit.absolute,\n }\n : parsedUnit.relative\n ? {\n [unitIsHorizontal ? 'xRelative' : 'yRelative']: parsedUnit.relative,\n }\n : {}\n }\n }\n}\n\nexport default function parseTransformOrigin(\n value: string | number,\n baseFontSize: number\n): ParsedTransformOrigin {\n // If it's a single value and a number, then it's horizontal\n if (typeof value === 'number') {\n return { xAbsolute: value }\n }\n let words: string[]\n try {\n words = valueParser(value)\n .nodes.filter((node) => node.type === 'word')\n .map((node) => node.value)\n } catch (e) {\n return {}\n }\n\n if (words.length === 1) {\n // If it's a single value and a number, then it's horizontal, so\n // pass `true` to `unitIsHorizontal`\n return handleWord(words[0], baseFontSize, true)\n } else if (words.length === 2) {\n // Make words to be [horizontal, vertical]\n if (\n words[0] === 'top' ||\n words[0] === 'bottom' ||\n words[1] === 'left' ||\n words[1] === 'right'\n ) {\n words.reverse()\n }\n\n return {\n ...handleWord(words[0], baseFontSize, true),\n ...handleWord(words[1], baseFontSize, false),\n }\n } else {\n return {}\n }\n}\n","import { getPropertyName } from 'css-to-react-native'\nimport { splitEffects } from '../utils.js'\n\nfunction getMaskProperty(style: Record, name: string) {\n const key = getPropertyName(`mask-${name}`)\n return (style[key] || style[`WebkitM${key.substring(1)}`]) as string\n}\n\nexport interface MaskProperty {\n image: string\n position: string\n size: string\n repeat: string\n origin: string\n clip: string\n}\n\nexport function parseMask(\n style: Record\n): MaskProperty[] {\n const maskImage = (style.maskImage || style.WebkitMaskImage) as string\n\n const common = {\n position: getMaskProperty(style, 'position') || '0% 0%',\n size: getMaskProperty(style, 'size') || '100% 100%',\n repeat: getMaskProperty(style, 'repeat') || 'repeat',\n origin: getMaskProperty(style, 'origin') || 'border-box',\n clip: getMaskProperty(style, 'origin') || 'border-box',\n }\n\n let maskImages = splitEffects(maskImage).filter((v) => v && v !== 'none')\n\n return maskImages.reverse().map((m) => ({\n image: m,\n ...common,\n }))\n}\n","import escapeHTML from 'escape-html'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\nimport transform from './transform.js'\nimport { buildXMLString } from '../utils.js'\n\nexport function container(\n {\n left,\n top,\n width,\n height,\n isInheritingTransform,\n }: {\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n },\n style: Record\n) {\n let matrix = ''\n let opacity = 1\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n return { matrix, opacity }\n}\n\nexport default function buildText(\n {\n id,\n content,\n filter,\n left,\n top,\n width,\n height,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape,\n decorationShape,\n }: {\n content: string\n filter: string\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string\n opacity: number\n image: string | null\n clipPathId?: string\n debug?: boolean\n shape?: boolean\n decorationShape?: string\n },\n style: Record\n) {\n let extra = ''\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top - height,\n width,\n height,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n // This grapheme should be rendered as an image.\n if (image) {\n const shapeProps = {\n href: image,\n x: left,\n y: top,\n width,\n height,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n }\n return [\n (filter ? `${filter}` : '') +\n buildXMLString('image', {\n ...shapeProps,\n opacity: opacity !== 1 ? opacity : undefined,\n }) +\n (decorationShape || '') +\n (filter ? '' : '') +\n extra,\n // SVG doesn't support `` as the shape.\n '',\n ]\n }\n\n // Do not embed the font, use with the raw content instead.\n const shapeProps = {\n x: left,\n y: top,\n width,\n height,\n 'font-weight': style.fontWeight,\n 'font-style': style.fontStyle,\n 'font-size': style.fontSize,\n 'font-family': style.fontFamily,\n 'letter-spacing': style.letterSpacing || undefined,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n 'stroke-width': style.WebkitTextStrokeWidth\n ? `${style.WebkitTextStrokeWidth}px`\n : undefined,\n stroke: style.WebkitTextStrokeWidth\n ? style.WebkitTextStrokeColor\n : undefined,\n 'stroke-linejoin': style.WebkitTextStrokeWidth ? 'round' : undefined,\n 'paint-order': style.WebkitTextStrokeWidth ? 'stroke' : undefined,\n }\n return [\n (filter ? `${filter}` : '') +\n buildXMLString(\n 'text',\n {\n ...shapeProps,\n fill: style.color,\n opacity: opacity !== 1 ? opacity : undefined,\n },\n escapeHTML(content)\n ) +\n (decorationShape || '') +\n (filter ? '' : '') +\n extra,\n shape ? buildXMLString('text', shapeProps, escapeHTML(content)) : '',\n ]\n}\n","import { ColorStop } from \"./type.js\"\n\nexport function split(\n input: string,\n separator: string | RegExp = ','\n): string[] {\n const result = []\n let l = 0\n let parenCount = 0\n separator = new RegExp(separator)\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '(') {\n parenCount++\n } else if (input[i] === ')') {\n parenCount--\n }\n\n if (parenCount === 0 && separator.test(input[i])) {\n result.push(input.slice(l, i).trim())\n l = i + 1\n }\n }\n\n result.push(input.slice(l).trim())\n\n return result\n}\n\nexport function resolveStops(v: string[]): ColorStop[] {\n const stops: ColorStop[] = []\n\n for (let i = 0, n = v.length; i < n;) {\n const [color, offset] = split(v[i], /\\s+/)\n\n if (isHint(v[i + 1])) {\n stops.push({\n color,\n offset: resolveLength(offset),\n hint: resolveLength(v[i + 1])\n })\n i += 2\n } else {\n stops.push({\n color,\n offset: resolveLength(offset)\n })\n i++\n }\n }\n\n return stops\n}\n\nconst REGEX = /^(-?\\d+\\.?\\d*)(%|vw|vh|px|em|rem|deg|rad|grad|turn)$/\n\nfunction isHint(v: string) {\n return REGEX.test(v)\n}\n\nexport function resolveLength(v?: string) {\n if (!v) return undefined\n\n const [, value, unit] = v.trim().match(REGEX) || []\n\n return { value, unit }\n}","import { split, resolveStops,resolveLength } from \"./utils.js\"\nimport { ColorStop } from './type.js'\n\ntype LinearOrientation = {\n type: 'directional'\n value: string\n} | {\n type: 'angular'\n value: { unit: string; value: string }\n}\n\nexport interface LinearResult {\n orientation: LinearOrientation\n repeating: boolean\n stops: ColorStop[]\n}\n\nexport function parseLinearGradient(input: string): LinearResult {\n if (!/^(repeating-)?linear-gradient/.test(input)) throw new SyntaxError(`could not find syntax for this item: ${input}`)\n\n let [, repeating, props] = input.match(/(repeating-)?linear-gradient\\((.+)\\)/)\n const result: LinearResult = {\n orientation: { type: 'directional', value: 'bottom' },\n repeating: Boolean(repeating),\n stops: []\n }\n\n const properties: string[] = split(props)\n const orientation = resolveLinearOrientation(properties[0])\n if (orientation) {\n result.orientation = orientation\n properties.shift()\n }\n\n return { ...result, stops: resolveStops(properties) }\n}\n\nfunction resolveLinearOrientation(angle: string): LinearOrientation {\n if (angle.startsWith('to ')) {\n return {\n type: 'directional',\n value: angle.replace('to ', '')\n }\n }\n\n if (['turn', 'deg', 'grad', 'rad'].some(unit => angle.endsWith(unit))) {\n return {\n type: 'angular',\n value: resolveLength(angle)\n }\n }\n\n return null\n}","import { resolveStops, split, resolveLength } from './utils.js'\nimport { ColorStop } from './type.js'\n\nexport type RgExtentKeyword = 'closest-corner' | 'closest-side' | 'farthest-corner' | 'farthest-side'\n\nexport type RadialPropertyValue = {\n type: 'keyword'\n value: string\n} | {\n type: 'length'\n value: { unit: string; value: string }\n}\n\nexport interface RadialResult {\n shape: 'circle' | 'ellipse'\n repeating: boolean\n size: RadialPropertyValue[]\n position: {\n x: RadialPropertyValue\n y: RadialPropertyValue\n }\n stops: ColorStop[]\n}\n\nconst rgExtentKeyword = new Set([\n 'closest-corner',\n 'closest-side',\n 'farthest-corner',\n 'farthest-side'\n])\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\n\nconst positionKeyword = new Set([\n 'center',\n 'left',\n 'top',\n 'right',\n 'bottom'\n])\n\n//eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isRgExtentKeyword(v: any): v is RgExtentKeyword {\n return rgExtentKeyword.has(v)\n}\n\n//eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPositionKeyWord(v: any): v is PositionKeyWord {\n return positionKeyword.has(v)\n}\n\nfunction extendPosition(v: string[]) {\n const res = Array(2).fill('')\n for (let i = 0; i < 2; i++) {\n if (!v[i]) res[i] = 'center'\n else res[i] = v[i]\n }\n\n return res\n}\n\nexport function parseRadialGradient(input: string): RadialResult {\n if (!/(repeating-)?radial-gradient/.test(input)) throw new SyntaxError(`could not find syntax for this item: ${input}`)\n \n const [, repeating, props] = input.match(/(repeating-)?radial-gradient\\((.+)\\)/)\n const result: RadialResult = {\n shape: 'ellipse',\n repeating: Boolean(repeating),\n size: [{\n type: 'keyword',\n value: 'farthest-corner'\n }],\n position: {\n x: { type: 'keyword', value: 'center' },\n y: { type: 'keyword', value: 'center' }\n },\n stops: []\n }\n\n const properties = split(props)\n // handle like radial-gradient(rgba(0,0,0,0), #ee7621)\n if (isColor(properties[0])) {\n return { ...result, stops: resolveStops(properties) }\n }\n\n const prefix = properties[0].split('at').map(v => v.trim())\n\n const shape = ((prefix[0] || '').match(/(circle|ellipse)/) || [])[1]\n const size: string[] = (prefix[0] || '').match(/(-?\\d+\\.?\\d*(vw|vh|px|em|rem|%|rad|grad|turn|deg)?|closest-corner|closest-side|farthest-corner|farthest-side)/g) || []\n const position = extendPosition((prefix[1] || '').split(' '))\n\n if (!shape) {\n if (size.length === 1 && !isRgExtentKeyword(size[0])) {\n result.shape = 'circle'\n } else {\n result.shape = 'ellipse'\n }\n } else {\n result.shape = shape as RadialResult['shape']\n }\n\n if (size.length === 0) {\n size.push('farthest-corner')\n }\n\n result.size = size.map(v => {\n if (isRgExtentKeyword(v)) {\n return { type: 'keyword', value: v }\n } else {\n return { type: 'length', value: resolveLength(v) }\n }\n })\n\n result.position.x = isPositionKeyWord(position[0])\n ? { type: 'keyword', value: position[0] }\n : { type: 'length', value: resolveLength(position[0]) }\n\n result.position.y = isPositionKeyWord(position[1])\n ? { type: 'keyword', value: position[1] }\n : { type: 'length', value: resolveLength(position[1]) }\n\n if (shape || size.length > 0 || prefix[1]) properties.shift()\n\n return {\n ...result,\n stops: resolveStops(properties)\n }\n}\n\nfunction isColor(v: string) {\n if (/(circle|ellipse|at)/.test(v)) return false\n return /^(rgba?|hwb|hsl|lab|lch|oklab|color|#|[a-zA-Z]+)/.test(v)\n}","import { lengthToNumber } from '../utils.js'\nimport { default as buildBorderRadius } from '../builder/border-radius.js'\nimport { getStylesForProperty } from 'css-to-react-native'\n\nconst regexMap = {\n circle: /circle\\((.+)\\)/,\n ellipse: /ellipse\\((.+)\\)/,\n path: /path\\((.+)\\)/,\n polygon: /polygon\\((.+)\\)/,\n inset: /inset\\((.+)\\)/,\n}\n\nexport function createShapeParser(\n {\n width,\n height,\n }: {\n width: number\n height: number\n },\n style: Record,\n inheritedStyle: Record\n) {\n function parseCircle(str: string) {\n const res = str.match(regexMap['circle'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'circle',\n r: lengthToNumber(\n radius,\n inheritedStyle.fontSize as number,\n Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / Math.sqrt(2),\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parseEllipse(str: string) {\n const res = str.match(regexMap['ellipse'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const [rx, ry] = radius.split(' ')\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'ellipse',\n rx: lengthToNumber(\n rx || '50%',\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n ry: lengthToNumber(\n ry || '50%',\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parsePath(str: string) {\n const res = str.match(regexMap['path'])\n\n if (!res) return null\n\n const [fillRule, d] = resolveFillRule(res[1])\n\n return {\n type: 'path',\n d,\n 'fill-rule': fillRule,\n }\n }\n function parsePolygon(str: string) {\n const res = str.match(regexMap['polygon'])\n\n if (!res) return null\n\n const [fillRule, points] = resolveFillRule(res[1])\n\n return {\n type: 'polygon',\n 'fill-rule': fillRule,\n points: points\n .split(',')\n .map((v) =>\n v\n .split(' ')\n .map((k, i) =>\n lengthToNumber(\n k,\n inheritedStyle.fontSize as number,\n i === 0 ? width : height,\n inheritedStyle,\n true\n )\n )\n .join(' ')\n )\n .join(','),\n }\n }\n function parseInset(str: string) {\n const res = str.match(regexMap['inset'])\n\n if (!res) return null\n\n const [inset, radius] = (\n res[1].includes('round') ? res[1] : `${res[1].trim()} round 0`\n ).split('round')\n const radiusMap = getStylesForProperty('borderRadius', radius, true)\n const r = Object.values(radiusMap)\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const offsets = Object.values(getStylesForProperty('margin', inset, true))\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const x = offsets[3]\n const y = offsets[0]\n const w = width - (offsets[1] + offsets[3])\n const h = height - (offsets[0] + offsets[2])\n\n if (r.some((v) => v > 0)) {\n const d = buildBorderRadius(\n { left: x, top: y, width: w, height: h },\n { ...style, ...radiusMap }\n )\n\n return { type: 'path', d }\n }\n\n return {\n type: 'rect',\n x,\n y,\n width: w,\n height: h,\n }\n }\n\n return {\n parseCircle,\n parseEllipse,\n parsePath,\n parsePolygon,\n parseInset,\n }\n}\n\nfunction resolveFillRule(str: string) {\n const [, fillRule = 'nonzero', d] =\n str.replace(/('|\")/g, '').match(/^(nonzero|evenodd)?,?(.+)/) || []\n\n return [fillRule, d]\n}\n\nfunction resolvePosition(position: string, xDelta: number, yDelta: number) {\n const pos = position.split(' ')\n const res: { x: number | string; y: number | string } = {\n x: pos[0] || '50%',\n y: pos[1] || '50%',\n }\n\n pos.forEach((v) => {\n if (v === 'top') {\n res.y = 0\n } else if (v === 'bottom') {\n res.y = yDelta\n } else if (v === 'left') {\n res.x = 0\n } else if (v === 'right') {\n res.x = xDelta\n } else if (v === 'center') {\n res.x = xDelta / 2\n res.y = yDelta / 2\n } else {\n // do nothing\n }\n })\n\n return res\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v.BYTES_PER_ELEMENT == 2 ? u16 : v.BYTES_PER_ELEMENT == 4 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n if (!sl || (st && st.f && !st.l))\n return buf || new u8(0);\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [et, 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[pos >> 3] = lst;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n // deopt when i > s - 3 - at end, deopt acceptable\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst && pos & 7)\n pos = wfblk(w, pos + 1, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if (d[1] & 32)\n err(6, 'invalid zlib data: preset dictionaries not supported');\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = this.p.length > 3 ? gzs(this.p) : 4;\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n err(6, 'invalid gzip data');\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return [r, slc(d, i - 1)];\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), ch = _a[0], np = _a[1];\n if (final) {\n if (np.length)\n err(8);\n this.p = null;\n }\n else\n this.p = np;\n this.ondata(ch, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td)\n return td.decode(dat);\n else {\n var _a = dutf8(dat), out = _a[0], ext = _a[1];\n if (ext.length)\n err(8);\n return out;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n if (c != null) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n err(13);\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// Geometric objects\n\n// import BoundingBox from './bbox';\n\n/**\n * A bézier path containing a set of path commands similar to a SVG path.\n * Paths can be drawn on a context using `draw`.\n * @exports opentype.Path\n * @class\n * @constructor\n */\nfunction Path() {\n this.commands = [];\n this.fill = 'black';\n this.stroke = null;\n this.strokeWidth = 1;\n}\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.moveTo = function (x, y) {\n this.commands.push({\n type: 'M',\n x: x,\n y: y,\n });\n};\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.lineTo = function (x, y) {\n this.commands.push({\n type: 'L',\n x: x,\n y: y,\n });\n};\n\n/**\n * Draws cubic curve\n * @function\n * curveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws cubic curve\n * @function\n * bezierCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n * @see curveTo\n */\nPath.prototype.curveTo = Path.prototype.bezierCurveTo = function (\n x1,\n y1,\n x2,\n y2,\n x,\n y\n) {\n this.commands.push({\n type: 'C',\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y,\n });\n};\n\n/**\n * Draws quadratic curve\n * @function\n * quadraticCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws quadratic curve\n * @function\n * quadTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\nPath.prototype.quadTo = Path.prototype.quadraticCurveTo = function (\n x1,\n y1,\n x,\n y\n) {\n this.commands.push({\n type: 'Q',\n x1: x1,\n y1: y1,\n x: x,\n y: y,\n });\n};\n\n/**\n * Closes the path\n * @function closePath\n * @memberof opentype.Path.prototype\n */\n\n/**\n * Close the path\n * @function close\n * @memberof opentype.Path.prototype\n */\nPath.prototype.close = Path.prototype.closePath = function () {\n this.commands.push({\n type: 'Z',\n });\n};\n\n/**\n * Add the given path or list of commands to the commands of this path.\n * @param {Array} pathOrCommands - another opentype.Path, an opentype.BoundingBox, or an array of commands.\n */\nPath.prototype.extend = function (pathOrCommands) {\n if (pathOrCommands.commands) {\n pathOrCommands = pathOrCommands.commands;\n }\n // else if (pathOrCommands instanceof BoundingBox) {\n // const box = pathOrCommands;\n // this.moveTo(box.x1, box.y1);\n // this.lineTo(box.x2, box.y1);\n // this.lineTo(box.x2, box.y2);\n // this.lineTo(box.x1, box.y2);\n // this.close();\n // return;\n // }\n\n Array.prototype.push.apply(this.commands, pathOrCommands);\n};\n\n/**\n * Convert the Path to a string of path data instructions\n * See http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values\n * @return {string}\n */\nPath.prototype.toPathData = function (decimalPlaces) {\n decimalPlaces = decimalPlaces !== undefined ? decimalPlaces : 2;\n\n function floatToString(v) {\n if (Math.round(v) === v) {\n return '' + Math.round(v);\n } else {\n return v.toFixed(decimalPlaces);\n }\n }\n\n function packValues() {\n let s = '';\n for (let i = 0; i < arguments.length; i += 1) {\n const v = arguments[i];\n if (v >= 0 && i > 0) {\n s += ' ';\n }\n\n s += floatToString(v);\n }\n\n return s;\n }\n\n let d = '';\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === 'M') {\n d += 'M' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'L') {\n d += 'L' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'C') {\n d += 'C' + packValues(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === 'Q') {\n d += 'Q' + packValues(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === 'Z') {\n d += 'Z';\n }\n }\n\n return d;\n};\n\nexport default Path;\n","// Glyph encoding\n\nconst cffStandardStrings = [\n '.notdef',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n 'questiondown',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n 'ring',\n 'cedilla',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n 'AE',\n 'ordfeminine',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n 'ae',\n 'dotlessi',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls',\n 'onesuperior',\n 'logicalnot',\n 'mu',\n 'trademark',\n 'Eth',\n 'onehalf',\n 'plusminus',\n 'Thorn',\n 'onequarter',\n 'divide',\n 'brokenbar',\n 'degree',\n 'thorn',\n 'threequarters',\n 'twosuperior',\n 'registered',\n 'minus',\n 'eth',\n 'multiply',\n 'threesuperior',\n 'copyright',\n 'Aacute',\n 'Acircumflex',\n 'Adieresis',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Ccedilla',\n 'Eacute',\n 'Ecircumflex',\n 'Edieresis',\n 'Egrave',\n 'Iacute',\n 'Icircumflex',\n 'Idieresis',\n 'Igrave',\n 'Ntilde',\n 'Oacute',\n 'Ocircumflex',\n 'Odieresis',\n 'Ograve',\n 'Otilde',\n 'Scaron',\n 'Uacute',\n 'Ucircumflex',\n 'Udieresis',\n 'Ugrave',\n 'Yacute',\n 'Ydieresis',\n 'Zcaron',\n 'aacute',\n 'acircumflex',\n 'adieresis',\n 'agrave',\n 'aring',\n 'atilde',\n 'ccedilla',\n 'eacute',\n 'ecircumflex',\n 'edieresis',\n 'egrave',\n 'iacute',\n 'icircumflex',\n 'idieresis',\n 'igrave',\n 'ntilde',\n 'oacute',\n 'ocircumflex',\n 'odieresis',\n 'ograve',\n 'otilde',\n 'scaron',\n 'uacute',\n 'ucircumflex',\n 'udieresis',\n 'ugrave',\n 'yacute',\n 'ydieresis',\n 'zcaron',\n 'exclamsmall',\n 'Hungarumlautsmall',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n '266 ff',\n 'onedotenleader',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n 'isuperior',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n 'ff',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n 'Dotaccentsmall',\n 'Macronsmall',\n 'figuredash',\n 'hypheninferior',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n 'zerosuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall',\n '001.000',\n '001.001',\n '001.002',\n '001.003',\n 'Black',\n 'Bold',\n 'Book',\n 'Light',\n 'Medium',\n 'Regular',\n 'Roman',\n 'Semibold',\n];\n\nconst cffStandardEncoding = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n '',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n '',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n '',\n 'questiondown',\n '',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n '',\n 'ring',\n 'cedilla',\n '',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'AE',\n '',\n 'ordfeminine',\n '',\n '',\n '',\n '',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n '',\n '',\n '',\n '',\n '',\n 'ae',\n '',\n '',\n '',\n 'dotlessi',\n '',\n '',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls',\n];\n\nconst cffExpertEncoding = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclamsmall',\n 'Hungarumlautsmall',\n '',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n 'twodotenleader',\n 'onedotenleader',\n 'comma',\n 'hyphen',\n 'period',\n 'fraction',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'colon',\n 'semicolon',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n '',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n '',\n '',\n 'isuperior',\n '',\n '',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n '',\n '',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n '',\n 'ff',\n 'fi',\n 'fl',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n '',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n '',\n '',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n '',\n 'Dotaccentsmall',\n '',\n '',\n 'Macronsmall',\n '',\n '',\n 'figuredash',\n 'hypheninferior',\n '',\n '',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n '',\n '',\n '',\n 'onequarter',\n 'onehalf',\n 'threequarters',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n '',\n '',\n 'zerosuperior',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall',\n];\n\n/**\n * This is the encoding used for fonts created from scratch.\n * It loops through all glyphs and finds the appropriate unicode value.\n * Since it's linear time, other encodings will be faster.\n * @exports opentype.DefaultEncoding\n * @class\n * @constructor\n * @param {opentype.Font}\n */\nfunction DefaultEncoding(font) {\n this.font = font;\n}\n\nDefaultEncoding.prototype.charToGlyphIndex = function (c) {\n const code = c.codePointAt(0);\n const glyphs = this.font.glyphs;\n if (glyphs) {\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n if (glyph.unicodes[j] === code) {\n return i;\n }\n }\n }\n }\n return null;\n};\n\n/**\n * @exports opentype.CmapEncoding\n * @class\n * @constructor\n * @param {Object} cmap - a object with the cmap encoded data\n */\nfunction CmapEncoding(cmap) {\n this.cmap = cmap;\n}\n\n/**\n * @param {string} c - the character\n * @return {number} The glyph index.\n */\nCmapEncoding.prototype.charToGlyphIndex = function (c) {\n return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;\n};\n\n/**\n * @exports opentype.CffEncoding\n * @class\n * @constructor\n * @param {string} encoding - The encoding\n * @param {Array} charset - The character set.\n */\nfunction CffEncoding(encoding, charset) {\n this.encoding = encoding;\n this.charset = charset;\n}\n\n/**\n * @param {string} s - The character\n * @return {number} The index.\n */\nCffEncoding.prototype.charToGlyphIndex = function (s) {\n const code = s.codePointAt(0);\n const charName = this.encoding[code];\n return this.charset.indexOf(charName);\n};\n\nfunction addGlyphNamesAll(font) {\n let glyph;\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n const glyphIndex = glyphIndexMap[c];\n glyph = font.glyphs.get(glyphIndex);\n glyph.addUnicode(parseInt(c));\n }\n}\n\nfunction addGlyphNamesToUnicodeMap(font) {\n font._IndexToUnicodeMap = {};\n\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n let glyphIndex = glyphIndexMap[c];\n if (font._IndexToUnicodeMap[glyphIndex] === undefined) {\n font._IndexToUnicodeMap[glyphIndex] = {\n unicodes: [parseInt(c)],\n };\n } else {\n font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));\n }\n }\n}\n\n/**\n * @alias opentype.addGlyphNames\n * @param {opentype.Font}\n * @param {Object}\n */\nfunction addGlyphNames(font, opt) {\n if (opt.lowMemory) {\n addGlyphNamesToUnicodeMap(font);\n } else {\n addGlyphNamesAll(font);\n }\n}\n\nexport {\n cffStandardStrings,\n cffStandardEncoding,\n cffExpertEncoding,\n DefaultEncoding,\n CmapEncoding,\n CffEncoding,\n addGlyphNames,\n};\n","// Run-time checking of preconditions.\n\nfunction fail(message) {\n throw new Error(message);\n}\n\n// Precondition function that checks if the given predicate is true.\n// If not, it will throw an error.\nfunction argument(predicate, message) {\n if (!predicate) {\n fail(message);\n }\n}\n\nexport { fail, argument, argument as assert };\nexport default { fail, argument, assert: argument };\n","// The Glyph object\n\nimport check from './check';\nimport Path from './path';\n// import glyf from './tables/glyf' Can't be imported here, because it's a circular dependency\n\nfunction getPathDefinition(glyph, path) {\n let _path = path || new Path();\n return {\n configurable: true,\n\n get: function () {\n if (typeof _path === 'function') {\n _path = _path();\n }\n\n return _path;\n },\n\n set: function (p) {\n _path = p;\n },\n };\n}\n/**\n * @typedef GlyphOptions\n * @type Object\n * @property {string} [name] - The glyph name\n * @property {number} [unicode]\n * @property {Array} [unicodes]\n * @property {number} [xMin]\n * @property {number} [yMin]\n * @property {number} [xMax]\n * @property {number} [yMax]\n * @property {number} [advanceWidth]\n */\n\n// A Glyph is an individual mark that often corresponds to a character.\n// Some glyphs, such as ligatures, are a combination of many characters.\n// Glyphs are the basic building blocks of a font.\n//\n// The `Glyph` class contains utility methods for drawing the path and its points.\n/**\n * @exports opentype.Glyph\n * @class\n * @param {GlyphOptions}\n * @constructor\n */\nfunction Glyph(options) {\n // By putting all the code on a prototype function (which is only declared once)\n // we reduce the memory requirements for larger fonts by some 2%\n this.bindConstructorValues(options);\n}\n\n/**\n * @param {GlyphOptions}\n */\nGlyph.prototype.bindConstructorValues = function (options) {\n this.index = options.index || 0;\n\n // These three values cannot be deferred for memory optimization:\n this.name = options.name || null;\n this.unicode = options.unicode || undefined;\n this.unicodes =\n options.unicodes || options.unicode !== undefined\n ? [options.unicode]\n : [];\n\n // But by binding these values only when necessary, we reduce can\n // the memory requirements by almost 3% for larger fonts.\n if ('xMin' in options) {\n this.xMin = options.xMin;\n }\n\n if ('yMin' in options) {\n this.yMin = options.yMin;\n }\n\n if ('xMax' in options) {\n this.xMax = options.xMax;\n }\n\n if ('yMax' in options) {\n this.yMax = options.yMax;\n }\n\n if ('advanceWidth' in options) {\n this.advanceWidth = options.advanceWidth;\n }\n\n // The path for a glyph is the most memory intensive, and is bound as a value\n // with a getter/setter to ensure we actually do path parsing only once the\n // path is actually needed by anything.\n Object.defineProperty(this, 'path', getPathDefinition(this, options.path));\n};\n\n/**\n * @param {number}\n */\nGlyph.prototype.addUnicode = function (unicode) {\n if (this.unicodes.length === 0) {\n this.unicode = unicode;\n }\n\n this.unicodes.push(unicode);\n};\n\n// /**\n// * Calculate the minimum bounding box for this glyph.\n// * @return {opentype.BoundingBox}\n// */\n// Glyph.prototype.getBoundingBox = function() {\n// return this.path.getBoundingBox();\n// };\n\n/**\n * Convert the glyph to a Path we can draw on a drawing context.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {Object=} options - xScale, yScale to stretch the glyph.\n * @param {opentype.Font} if hinting is to be used, the font\n * @return {opentype.Path}\n */\nGlyph.prototype.getPath = function (x, y, fontSize, options, font) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n let commands;\n let hPoints;\n if (!options) options = {};\n let xScale = options.xScale;\n let yScale = options.yScale;\n\n if (options.hinting && font && font.hinting) {\n // in case of hinting, the hinting engine takes care\n // of scaling the points (not the path) before hinting.\n hPoints = this.path && font.hinting.exec(this, fontSize);\n // in case the hinting engine failed hPoints is undefined\n // and thus reverts to plain rending\n }\n\n if (hPoints) {\n // Call font.hinting.getCommands instead of `glyf.getPath(hPoints).commands` to avoid a circular dependency\n commands = font.hinting.getCommands(hPoints);\n x = Math.round(x);\n y = Math.round(y);\n // TODO in case of hinting xyScaling is not yet supported\n xScale = yScale = 1;\n } else {\n commands = this.path.commands;\n const scale = (1 / (this.path.unitsPerEm || 1000)) * fontSize;\n if (xScale === undefined) xScale = scale;\n if (yScale === undefined) yScale = scale;\n }\n\n const p = new Path();\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type === 'M') {\n p.moveTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === 'L') {\n p.lineTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === 'Q') {\n p.quadraticCurveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === 'C') {\n p.curveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x2 * xScale,\n y + -cmd.y2 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === 'Z') {\n p.closePath();\n }\n }\n\n return p;\n};\n\n/**\n * Split the glyph into contours.\n * This function is here for backwards compatibility, and to\n * provide raw access to the TrueType glyph outlines.\n * @return {Array}\n */\nGlyph.prototype.getContours = function () {\n if (this.points === undefined) {\n return [];\n }\n\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < this.points.length; i += 1) {\n const pt = this.points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(\n currentContour.length === 0,\n 'There are still points left in the current contour.'\n );\n return contours;\n};\n\n/**\n * Calculate the xMin/yMin/xMax/yMax/lsb/rsb for a Glyph.\n * @return {Object}\n */\nGlyph.prototype.getMetrics = function () {\n const commands = this.path.commands;\n const xCoords = [];\n const yCoords = [];\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type !== 'Z') {\n xCoords.push(cmd.x);\n yCoords.push(cmd.y);\n }\n\n if (cmd.type === 'Q' || cmd.type === 'C') {\n xCoords.push(cmd.x1);\n yCoords.push(cmd.y1);\n }\n\n if (cmd.type === 'C') {\n xCoords.push(cmd.x2);\n yCoords.push(cmd.y2);\n }\n }\n\n const metrics = {\n xMin: Math.min.apply(null, xCoords),\n yMin: Math.min.apply(null, yCoords),\n xMax: Math.max.apply(null, xCoords),\n yMax: Math.max.apply(null, yCoords),\n leftSideBearing: this.leftSideBearing,\n };\n\n if (!isFinite(metrics.xMin)) {\n metrics.xMin = 0;\n }\n\n if (!isFinite(metrics.xMax)) {\n metrics.xMax = this.advanceWidth;\n }\n\n if (!isFinite(metrics.yMin)) {\n metrics.yMin = 0;\n }\n\n if (!isFinite(metrics.yMax)) {\n metrics.yMax = 0;\n }\n\n metrics.rightSideBearing =\n this.advanceWidth -\n metrics.leftSideBearing -\n (metrics.xMax - metrics.xMin);\n return metrics;\n};\n\nexport default Glyph;\n","// The GlyphSet object\n\nimport Glyph from './glyph';\n\n// Define a property on the glyph that depends on the path being loaded.\nfunction defineDependentProperty(glyph, externalName, internalName) {\n Object.defineProperty(glyph, externalName, {\n get: function () {\n // Request the path property to make sure the path is loaded.\n glyph.path; // jshint ignore:line\n return glyph[internalName];\n },\n set: function (newValue) {\n glyph[internalName] = newValue;\n },\n enumerable: true,\n configurable: true,\n });\n}\n\n/**\n * A GlyphSet represents all glyphs available in the font, but modelled using\n * a deferred glyph loader, for retrieving glyphs only once they are absolutely\n * necessary, to keep the memory footprint down.\n * @exports opentype.GlyphSet\n * @class\n * @param {opentype.Font}\n * @param {Array}\n */\nfunction GlyphSet(font, glyphs) {\n this.font = font;\n this.glyphs = {};\n if (Array.isArray(glyphs)) {\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n glyph.path.unitsPerEm = font.unitsPerEm;\n this.glyphs[i] = glyph;\n }\n }\n\n this.length = (glyphs && glyphs.length) || 0;\n}\n\n/**\n * @param {number} index\n * @return {opentype.Glyph}\n */\nGlyphSet.prototype.get = function (index) {\n // this.glyphs[index] is 'undefined' when low memory mode is on. glyph is pushed on request only.\n if (this.glyphs[index] === undefined) {\n this.font._push(index);\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n\n let glyph = this.glyphs[index];\n let unicodeObj = this.font._IndexToUnicodeMap[index];\n\n if (unicodeObj) {\n for (let j = 0; j < unicodeObj.unicodes.length; j++)\n glyph.addUnicode(unicodeObj.unicodes[j]);\n }\n\n this.glyphs[index].advanceWidth =\n this.font._hmtxTableData[index].advanceWidth;\n this.glyphs[index].leftSideBearing =\n this.font._hmtxTableData[index].leftSideBearing;\n } else {\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n }\n\n return this.glyphs[index];\n};\n\n/**\n * @param {number} index\n * @param {Object}\n */\nGlyphSet.prototype.push = function (index, loader) {\n this.glyphs[index] = loader;\n this.length++;\n};\n\n/**\n * @alias opentype.glyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @return {opentype.Glyph}\n */\nfunction glyphLoader(font, index) {\n return new Glyph({ index: index, font: font });\n}\n\n/**\n * Generate a stub glyph that can be filled with all metadata *except*\n * the \"points\" and \"path\" properties, which must be loaded only once\n * the glyph's path is actually requested for text shaping.\n * @alias opentype.ttfGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseGlyph\n * @param {Object} data\n * @param {number} position\n * @param {Function} buildPath\n * @return {opentype.Glyph}\n */\nfunction ttfGlyphLoader(font, index, parseGlyph, data, position, buildPath) {\n return function () {\n const glyph = new Glyph({ index: index, font: font });\n\n glyph.path = function () {\n parseGlyph(glyph, data, position);\n const path = buildPath(font.glyphs, glyph);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n defineDependentProperty(glyph, 'xMin', '_xMin');\n defineDependentProperty(glyph, 'xMax', '_xMax');\n defineDependentProperty(glyph, 'yMin', '_yMin');\n defineDependentProperty(glyph, 'yMax', '_yMax');\n\n return glyph;\n };\n}\n/**\n * @alias opentype.cffGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseCFFCharstring\n * @param {string} charstring\n * @return {opentype.Glyph}\n */\nfunction cffGlyphLoader(font, index, parseCFFCharstring, charstring) {\n return function () {\n const glyph = new Glyph({ index: index, font: font });\n\n glyph.path = function () {\n const path = parseCFFCharstring(font, glyph, charstring);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n return glyph;\n };\n}\n\nexport default { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader };\n","// The Layout object is the prototype of Substitution objects, and provides\n// utility methods to manipulate common layout tables (GPOS, GSUB, GDEF...)\n\nimport check from './check';\n\nfunction searchTag(arr, tag) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid].tag;\n if (val === tag) {\n return imid;\n } else if (val < tag) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\nfunction binSearch(arr, value) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid];\n if (val === value) {\n return imid;\n } else if (val < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\n// binary search in a list of ranges (coverage, class definition)\nfunction searchRange(ranges, value) {\n // jshint bitwise: false\n let range;\n let imin = 0;\n let imax = ranges.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n range = ranges[imid];\n const start = range.start;\n if (start === value) {\n return range;\n } else if (start < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n if (imin > 0) {\n range = ranges[imin - 1];\n if (value > range.end) return 0;\n return range;\n }\n}\n\n/**\n * @exports opentype.Layout\n * @class\n */\nfunction Layout(font, tableName) {\n this.font = font;\n this.tableName = tableName;\n}\n\nLayout.prototype = {\n /**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */\n searchTag: searchTag,\n\n /**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */\n binSearch: binSearch,\n\n /**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */\n getTable: function (create) {\n let layout = this.font.tables[this.tableName];\n if (!layout && create) {\n layout = this.font.tables[this.tableName] =\n this.createDefaultTable();\n }\n return layout;\n },\n\n /**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */\n getDefaultScriptName: function () {\n let layout = this.getTable();\n if (!layout) {\n return;\n }\n let hasLatn = false;\n for (let i = 0; i < layout.scripts.length; i++) {\n const name = layout.scripts[i].tag;\n if (name === 'DFLT') return name;\n if (name === 'latn') hasLatn = true;\n }\n if (hasLatn) return 'latn';\n },\n\n /**\n * Returns all LangSysRecords in the given script.\n * @instance\n * @param {string} [script='DFLT']\n * @param {boolean} create - forces the creation of this script table if it doesn't exist.\n * @return {Object} An object with tag and script properties.\n */\n getScriptTable: function (script, create) {\n const layout = this.getTable(create);\n if (layout) {\n script = script || 'DFLT';\n const scripts = layout.scripts;\n const pos = searchTag(layout.scripts, script);\n if (pos >= 0) {\n return scripts[pos].script;\n } else if (create) {\n const scr = {\n tag: script,\n script: {\n defaultLangSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n langSysRecords: [],\n },\n };\n scripts.splice(-1 - pos, 0, scr);\n return scr.script;\n }\n }\n },\n\n /**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */\n getLangSysTable: function (script, language, create) {\n const scriptTable = this.getScriptTable(script, create);\n if (scriptTable) {\n if (!language || language === 'dflt' || language === 'DFLT') {\n return scriptTable.defaultLangSys;\n }\n const pos = searchTag(scriptTable.langSysRecords, language);\n if (pos >= 0) {\n return scriptTable.langSysRecords[pos].langSys;\n } else if (create) {\n const langSysRecord = {\n tag: language,\n langSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n };\n scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord);\n return langSysRecord.langSys;\n }\n }\n },\n\n /**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */\n getFeatureTable: function (script, language, feature, create) {\n const langSysTable = this.getLangSysTable(script, language, create);\n if (langSysTable) {\n let featureRecord;\n const featIndexes = langSysTable.featureIndexes;\n const allFeatures = this.font.tables[this.tableName].features;\n // The FeatureIndex array of indices is in arbitrary order,\n // even if allFeatures is sorted alphabetically by feature tag.\n for (let i = 0; i < featIndexes.length; i++) {\n featureRecord = allFeatures[featIndexes[i]];\n if (featureRecord.tag === feature) {\n return featureRecord.feature;\n }\n }\n if (create) {\n const index = allFeatures.length;\n // Automatic ordering of features would require to shift feature indexes in the script list.\n check.assert(\n index === 0 || feature >= allFeatures[index - 1].tag,\n 'Features must be added in alphabetical order.'\n );\n featureRecord = {\n tag: feature,\n feature: { params: 0, lookupListIndexes: [] },\n };\n allFeatures.push(featureRecord);\n featIndexes.push(index);\n return featureRecord.feature;\n }\n }\n },\n\n /**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */\n getLookupTables: function (script, language, feature, lookupType, create) {\n const featureTable = this.getFeatureTable(\n script,\n language,\n feature,\n create\n );\n const tables = [];\n if (featureTable) {\n let lookupTable;\n const lookupListIndexes = featureTable.lookupListIndexes;\n const allLookups = this.font.tables[this.tableName].lookups;\n // lookupListIndexes are in no particular order, so use naive search.\n for (let i = 0; i < lookupListIndexes.length; i++) {\n lookupTable = allLookups[lookupListIndexes[i]];\n if (lookupTable.lookupType === lookupType) {\n tables.push(lookupTable);\n }\n }\n if (tables.length === 0 && create) {\n lookupTable = {\n lookupType: lookupType,\n lookupFlag: 0,\n subtables: [],\n markFilteringSet: undefined,\n };\n const index = allLookups.length;\n allLookups.push(lookupTable);\n lookupListIndexes.push(index);\n return [lookupTable];\n }\n }\n return tables;\n },\n\n /**\n * Find a glyph in a class definition table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table\n * @param {object} classDefTable - an OpenType Layout class definition table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getGlyphClass: function (classDefTable, glyphIndex) {\n switch (classDefTable.format) {\n case 1:\n if (\n classDefTable.startGlyph <= glyphIndex &&\n glyphIndex <\n classDefTable.startGlyph + classDefTable.classes.length\n ) {\n return classDefTable.classes[\n glyphIndex - classDefTable.startGlyph\n ];\n }\n return 0;\n case 2:\n const range = searchRange(classDefTable.ranges, glyphIndex);\n return range ? range.classId : 0;\n }\n },\n\n /**\n * Find a glyph in a coverage table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table\n * @param {object} coverageTable - an OpenType Layout coverage table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getCoverageIndex: function (coverageTable, glyphIndex) {\n switch (coverageTable.format) {\n case 1:\n const index = binSearch(coverageTable.glyphs, glyphIndex);\n return index >= 0 ? index : -1;\n case 2:\n const range = searchRange(coverageTable.ranges, glyphIndex);\n return range ? range.index + glyphIndex - range.start : -1;\n }\n },\n\n /**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */\n expandCoverage: function (coverageTable) {\n if (coverageTable.format === 1) {\n return coverageTable.glyphs;\n } else {\n const glyphs = [];\n const ranges = coverageTable.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n const start = range.start;\n const end = range.end;\n for (let j = start; j <= end; j++) {\n glyphs.push(j);\n }\n }\n return glyphs;\n }\n },\n};\n\nexport default Layout;\n","// The Position object provides utility methods to manipulate\n// the GPOS position table.\n\nimport Layout from './layout';\n\n/**\n * @exports opentype.Position\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Position(font) {\n Layout.call(this, font, 'gpos');\n}\n\nPosition.prototype = Layout.prototype;\n\n/**\n * Init some data for faster and easier access later.\n */\nPosition.prototype.init = function() {\n const script = this.getDefaultScriptName();\n this.defaultKerningTables = this.getKerningTables(script);\n};\n\n/**\n * Find a glyph pair in a list of lookup tables of type 2 and retrieve the xAdvance kerning value.\n *\n * @param {integer} leftIndex - left glyph index\n * @param {integer} rightIndex - right glyph index\n * @returns {integer}\n */\nPosition.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {\n for (let i = 0; i < kerningLookups.length; i++) {\n const subtables = kerningLookups[i].subtables;\n for (let j = 0; j < subtables.length; j++) {\n const subtable = subtables[j];\n const covIndex = this.getCoverageIndex(subtable.coverage, leftIndex);\n if (covIndex < 0) continue;\n switch (subtable.posFormat) {\n case 1:\n // Search Pair Adjustment Positioning Format 1\n let pairSet = subtable.pairSets[covIndex];\n for (let k = 0; k < pairSet.length; k++) {\n let pair = pairSet[k];\n if (pair.secondGlyph === rightIndex) {\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n break; // left glyph found, not right glyph - try next subtable\n case 2:\n // Search Pair Adjustment Positioning Format 2\n const class1 = this.getGlyphClass(subtable.classDef1, leftIndex);\n const class2 = this.getGlyphClass(subtable.classDef2, rightIndex);\n const pair = subtable.classRecords[class1][class2];\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n }\n return 0;\n};\n\n/**\n * List all kerning lookup tables.\n *\n * @param {string} [script='DFLT'] - use font.position.getDefaultScriptName() for a better default value\n * @param {string} [language='dflt']\n * @return {object[]} The list of kerning lookup tables (may be empty), or undefined if there is no GPOS table (and we should use the kern table)\n */\nPosition.prototype.getKerningTables = function(script, language) {\n if (this.font.tables.gpos) {\n return this.getLookupTables(script, language, 'kern', 2);\n }\n};\n\nexport default Position;\n","// The Substitution object provides utility methods to manipulate\n// the GSUB substitution table.\n\nimport check from './check';\nimport Layout from './layout';\n\n/**\n * @exports opentype.Substitution\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Substitution(font) {\n Layout.call(this, font, 'gsub');\n}\n\n// Check if 2 arrays of primitives are equal.\nfunction arraysEqual(ar1, ar2) {\n const n = ar1.length;\n if (n !== ar2.length) {\n return false;\n }\n for (let i = 0; i < n; i++) {\n if (ar1[i] !== ar2[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Find the first subtable of a lookup table in a particular format.\nfunction getSubstFormat(lookupTable, format, defaultSubtable) {\n const subtables = lookupTable.subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n if (subtable.substFormat === format) {\n return subtable;\n }\n }\n if (defaultSubtable) {\n subtables.push(defaultSubtable);\n return defaultSubtable;\n }\n return undefined;\n}\n\nSubstitution.prototype = Layout.prototype;\n\n/**\n * Create a default GSUB table.\n * @return {Object} gsub - The GSUB table.\n */\nSubstitution.prototype.createDefaultTable = function () {\n // Generate a default empty GSUB table with just a DFLT script and dflt lang sys.\n return {\n version: 1,\n scripts: [\n {\n tag: 'DFLT',\n script: {\n defaultLangSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n langSysRecords: [],\n },\n },\n ],\n features: [],\n lookups: [],\n };\n};\n\n/**\n * List all single substitutions (lookup type 1) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt', 'ss01'...)\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getSingle = function (feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 1);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n if (subtable.substFormat === 1) {\n const delta = subtable.deltaGlyphId;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n substitutions.push({ sub: glyph, by: glyph + delta });\n }\n } else {\n const substitute = subtable.substitute;\n for (j = 0; j < glyphs.length; j++) {\n substitutions.push({ sub: glyphs[j], by: substitute[j] });\n }\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all multiple substitutions (lookup type 2) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('ccmp', 'stch')\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getMultiple = function (feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 2);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n const replacements = subtable.sequences[j];\n substitutions.push({ sub: glyph, by: replacements });\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all alternates (lookup type 3) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt'...)\n * @return {Array} alternates - The list of alternates\n */\nSubstitution.prototype.getAlternates = function (feature, script, language) {\n const alternates = [];\n const lookupTables = this.getLookupTables(script, language, feature, 3);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const alternateSets = subtable.alternateSets;\n for (let j = 0; j < glyphs.length; j++) {\n alternates.push({ sub: glyphs[j], by: alternateSets[j] });\n }\n }\n }\n return alternates;\n};\n\n/**\n * List all ligatures (lookup type 4) for a given script, language, and feature.\n * The result is an array of ligature objects like { sub: [ids], by: id }\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} ligatures - The list of ligatures.\n */\nSubstitution.prototype.getLigatures = function (feature, script, language) {\n const ligatures = [];\n const lookupTables = this.getLookupTables(script, language, feature, 4);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const ligatureSets = subtable.ligatureSets;\n for (let j = 0; j < glyphs.length; j++) {\n const startGlyph = glyphs[j];\n const ligSet = ligatureSets[j];\n for (let k = 0; k < ligSet.length; k++) {\n const lig = ligSet[k];\n ligatures.push({\n sub: [startGlyph].concat(lig.components),\n by: lig.ligGlyph,\n });\n }\n }\n }\n }\n return ligatures;\n};\n\n/**\n * Add or modify a single substitution (lookup type 1)\n * Format 2, more flexible, is always used.\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: id } (format 1 is not supported)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addSingle = function (\n feature,\n substitution,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 1,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 2, {\n // lookup type 1 subtable, format 2, coverage format 1\n substFormat: 2,\n coverage: { format: 1, glyphs: [] },\n substitute: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Single: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.substitute.splice(pos, 0, 0);\n }\n subtable.substitute[pos] = substitution.by;\n};\n\n/**\n * Add or modify a multiple substitution (lookup type 2)\n * @param {string} feature - 4-letter feature name ('ccmp', 'stch')\n * @param {Object} substitution - { sub: id, by: [id] } for format 2.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addMultiple = function (\n feature,\n substitution,\n script,\n language\n) {\n check.assert(\n substitution.by instanceof Array && substitution.by.length > 1,\n 'Multiple: \"by\" must be an array of two or more ids'\n );\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 2,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 2 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n sequences: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Multiple: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.sequences.splice(pos, 0, 0);\n }\n subtable.sequences[pos] = substitution.by;\n};\n\n/**\n * Add or modify an alternate substitution (lookup type 3)\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: [ids] }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addAlternate = function (\n feature,\n substitution,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 3,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 3 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n alternateSets: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Alternate: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.alternateSets.splice(pos, 0, 0);\n }\n subtable.alternateSets[pos] = substitution.by;\n};\n\n/**\n * Add a ligature (lookup type 4)\n * Ligatures with more components must be stored ahead of those with fewer components in order to be found\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} ligature - { sub: [ids], by: id }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addLigature = function (\n feature,\n ligature,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 4,\n true\n )[0];\n let subtable = lookupTable.subtables[0];\n if (!subtable) {\n subtable = {\n // lookup type 4 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n ligatureSets: [],\n };\n lookupTable.subtables[0] = subtable;\n }\n check.assert(\n subtable.coverage.format === 1,\n 'Ligature: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = ligature.sub[0];\n const ligComponents = ligature.sub.slice(1);\n const ligatureTable = {\n ligGlyph: ligature.by,\n components: ligComponents,\n };\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos >= 0) {\n // ligatureSet already exists\n const ligatureSet = subtable.ligatureSets[pos];\n for (let i = 0; i < ligatureSet.length; i++) {\n // If ligature already exists, return.\n if (arraysEqual(ligatureSet[i].components, ligComponents)) {\n return;\n }\n }\n // ligature does not exist: add it.\n ligatureSet.push(ligatureTable);\n } else {\n // Create a new ligatureSet and add coverage for the first glyph.\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.ligatureSets.splice(pos, 0, [ligatureTable]);\n }\n};\n\n/**\n * List all feature data for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getFeature = function (feature, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.getSingle(feature, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n return this.getSingle(feature, script, language).concat(\n this.getAlternates(feature, script, language)\n );\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.getLigatures(feature, script, language);\n case 'ccmp':\n return this.getMultiple(feature, script, language).concat(\n this.getLigatures(feature, script, language)\n );\n case 'stch':\n return this.getMultiple(feature, script, language);\n }\n return undefined;\n};\n\n/**\n * Add a substitution to a feature for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {Object} sub - the substitution to add (an object like { sub: id or [ids], by: id or [ids] })\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.add = function (feature, sub, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.addSingle(feature, sub, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n if (typeof sub.by === 'number') {\n return this.addSingle(feature, sub, script, language);\n }\n return this.addAlternate(feature, sub, script, language);\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.addLigature(feature, sub, script, language);\n case 'ccmp':\n if (sub.by instanceof Array) {\n return this.addMultiple(feature, sub, script, language);\n }\n return this.addLigature(feature, sub, script, language);\n }\n return undefined;\n};\n\nexport default Substitution;\n","function nodeBufferToArrayBuffer(buffer) {\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n\n return ab;\n}\n\nfunction checkArgument(expression, message) {\n if (!expression) {\n throw message;\n }\n}\n\nexport { nodeBufferToArrayBuffer, checkArgument };\n","// Parsing utility functions\n\nimport check from './check';\n\n// Retrieve an unsigned byte from the DataView.\nfunction getByte(dataView, offset) {\n return dataView.getUint8(offset);\n}\n\n// Retrieve an unsigned 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getUShort(dataView, offset) {\n return dataView.getUint16(offset, false);\n}\n\n// Retrieve a signed 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getShort(dataView, offset) {\n return dataView.getInt16(offset, false);\n}\n\n// Retrieve an unsigned 32-bit long from the DataView.\n// The value is stored in big endian.\nfunction getULong(dataView, offset) {\n return dataView.getUint32(offset, false);\n}\n\n// Retrieve a 32-bit signed fixed-point number (16.16) from the DataView.\n// The value is stored in big endian.\nfunction getFixed(dataView, offset) {\n const decimal = dataView.getInt16(offset, false);\n const fraction = dataView.getUint16(offset + 2, false);\n return decimal + fraction / 65535;\n}\n\n// Retrieve a 4-character tag from the DataView.\n// Tags are used to identify tables.\nfunction getTag(dataView, offset) {\n let tag = '';\n for (let i = offset; i < offset + 4; i += 1) {\n tag += String.fromCharCode(dataView.getInt8(i));\n }\n\n return tag;\n}\n\n// Retrieve an offset from the DataView.\n// Offsets are 1 to 4 bytes in length, depending on the offSize argument.\nfunction getOffset(dataView, offset, offSize) {\n let v = 0;\n for (let i = 0; i < offSize; i += 1) {\n v <<= 8;\n v += dataView.getUint8(offset + i);\n }\n\n return v;\n}\n\n// Retrieve a number of bytes from start offset to the end offset from the DataView.\nfunction getBytes(dataView, startOffset, endOffset) {\n const bytes = [];\n for (let i = startOffset; i < endOffset; i += 1) {\n bytes.push(dataView.getUint8(i));\n }\n\n return bytes;\n}\n\n// Convert the list of bytes to a string.\nfunction bytesToString(bytes) {\n let s = '';\n for (let i = 0; i < bytes.length; i += 1) {\n s += String.fromCharCode(bytes[i]);\n }\n\n return s;\n}\n\nconst typeOffsets = {\n byte: 1,\n uShort: 2,\n short: 2,\n uLong: 4,\n fixed: 4,\n longDateTime: 8,\n tag: 4\n};\n\n// A stateful parser that changes the offset whenever a value is retrieved.\n// The data is a DataView.\nfunction Parser(data, offset) {\n this.data = data;\n this.offset = offset;\n this.relativeOffset = 0;\n}\n\nParser.prototype.parseByte = function() {\n const v = this.data.getUint8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseChar = function() {\n const v = this.data.getInt8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseCard8 = Parser.prototype.parseByte;\n\nParser.prototype.parseUShort = function() {\n const v = this.data.getUint16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseCard16 = Parser.prototype.parseUShort;\nParser.prototype.parseSID = Parser.prototype.parseUShort;\nParser.prototype.parseOffset16 = Parser.prototype.parseUShort;\n\nParser.prototype.parseShort = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseF2Dot14 = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseULong = function() {\n const v = getULong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseOffset32 = Parser.prototype.parseULong;\n\nParser.prototype.parseFixed = function() {\n const v = getFixed(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseString = function(length) {\n const dataView = this.data;\n const offset = this.offset + this.relativeOffset;\n let string = '';\n this.relativeOffset += length;\n for (let i = 0; i < length; i++) {\n string += String.fromCharCode(dataView.getUint8(offset + i));\n }\n\n return string;\n};\n\nParser.prototype.parseTag = function() {\n return this.parseString(4);\n};\n\n// LONGDATETIME is a 64-bit integer.\n// JavaScript and unix timestamps traditionally use 32 bits, so we\n// only take the last 32 bits.\n// + Since until 2038 those bits will be filled by zeros we can ignore them.\nParser.prototype.parseLongDateTime = function() {\n let v = getULong(this.data, this.offset + this.relativeOffset + 4);\n // Subtract seconds between 01/01/1904 and 01/01/1970\n // to convert Apple Mac timestamp to Standard Unix timestamp\n v -= 2082844800;\n this.relativeOffset += 8;\n return v;\n};\n\nParser.prototype.parseVersion = function(minorBase) {\n const major = getUShort(this.data, this.offset + this.relativeOffset);\n\n // How to interpret the minor version is very vague in the spec. 0x5000 is 5, 0x1000 is 1\n // Default returns the correct number if minor = 0xN000 where N is 0-9\n // Set minorBase to 1 for tables that use minor = N where N is 0-9\n const minor = getUShort(this.data, this.offset + this.relativeOffset + 2);\n this.relativeOffset += 4;\n if (minorBase === undefined) minorBase = 0x1000;\n return major + minor / minorBase / 10;\n};\n\nParser.prototype.skip = function(type, amount) {\n if (amount === undefined) {\n amount = 1;\n }\n\n this.relativeOffset += typeOffsets[type] * amount;\n};\n\n///// Parsing lists and records ///////////////////////////////\n\n// Parse a list of 32 bit unsigned integers.\nParser.prototype.parseULongList = function(count) {\n if (count === undefined) { count = this.parseULong(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint32(offset);\n offset += 4;\n }\n\n this.relativeOffset += count * 4;\n return offsets;\n};\n\n// Parse a list of 16 bit unsigned integers. The length of the list can be read on the stream\n// or provided as an argument.\nParser.prototype.parseOffset16List =\nParser.prototype.parseUShortList = function(count) {\n if (count === undefined) { count = this.parseUShort(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return offsets;\n};\n\n// Parses a list of 16 bit signed integers.\nParser.prototype.parseShortList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getInt16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return list;\n};\n\n// Parses a list of bytes.\nParser.prototype.parseByteList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getUint8(offset++);\n }\n\n this.relativeOffset += count;\n return list;\n};\n\n/**\n * Parse a list of items.\n * Record count is optional, if omitted it is read from the stream.\n * itemCallback is one of the Parser methods.\n */\nParser.prototype.parseList = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseUShort();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\nParser.prototype.parseList32 = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseULong();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\n/**\n * Parse a list of records.\n * Record count is optional, if omitted it is read from the stream.\n * Example of recordDescription: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\n */\nParser.prototype.parseRecordList = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseUShort();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\nParser.prototype.parseRecordList32 = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseULong();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\n// Parse a data structure into an object\n// Example of description: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\nParser.prototype.parseStruct = function(description) {\n if (typeof description === 'function') {\n return description.call(this);\n } else {\n const fields = Object.keys(description);\n const struct = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = description[fieldName];\n struct[fieldName] = fieldType.call(this);\n }\n return struct;\n }\n};\n\n/**\n * Parse a GPOS valueRecord\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat is optional, if omitted it is read from the stream.\n */\nParser.prototype.parseValueRecord = function(valueFormat) {\n if (valueFormat === undefined) {\n valueFormat = this.parseUShort();\n }\n if (valueFormat === 0) {\n // valueFormat2 in kerning pairs is most often 0\n // in this case return undefined instead of an empty object, to save space\n return;\n }\n const valueRecord = {};\n\n if (valueFormat & 0x0001) { valueRecord.xPlacement = this.parseShort(); }\n if (valueFormat & 0x0002) { valueRecord.yPlacement = this.parseShort(); }\n if (valueFormat & 0x0004) { valueRecord.xAdvance = this.parseShort(); }\n if (valueFormat & 0x0008) { valueRecord.yAdvance = this.parseShort(); }\n\n // Device table (non-variable font) / VariationIndex table (variable font) not supported\n // https://docs.microsoft.com/fr-fr/typography/opentype/spec/chapter2#devVarIdxTbls\n if (valueFormat & 0x0010) { valueRecord.xPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0020) { valueRecord.yPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0040) { valueRecord.xAdvDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0080) { valueRecord.yAdvDevice = undefined; this.parseShort(); }\n\n return valueRecord;\n};\n\n/**\n * Parse a list of GPOS valueRecords\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat and valueCount are read from the stream.\n */\nParser.prototype.parseValueRecordList = function() {\n const valueFormat = this.parseUShort();\n const valueCount = this.parseUShort();\n const values = new Array(valueCount);\n for (let i = 0; i < valueCount; i++) {\n values[i] = this.parseValueRecord(valueFormat);\n }\n return values;\n};\n\nParser.prototype.parsePointer = function(description) {\n const structOffset = this.parseOffset16();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\nParser.prototype.parsePointer32 = function(description) {\n const structOffset = this.parseOffset32();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\n/**\n * Parse a list of offsets to lists of 16-bit integers,\n * or a list of offsets to lists of offsets to any kind of items.\n * If itemCallback is not provided, a list of list of UShort is assumed.\n * If provided, itemCallback is called on each item and must parse the item.\n * See examples in tables/gsub.js\n */\nParser.prototype.parseListOfLists = function(itemCallback) {\n const offsets = this.parseOffset16List();\n const count = offsets.length;\n const relativeOffset = this.relativeOffset;\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n const start = offsets[i];\n if (start === 0) {\n // NULL offset\n // Add i as owned property to list. Convenient with assert.\n list[i] = undefined;\n continue;\n }\n this.relativeOffset = start;\n if (itemCallback) {\n const subOffsets = this.parseOffset16List();\n const subList = new Array(subOffsets.length);\n for (let j = 0; j < subOffsets.length; j++) {\n this.relativeOffset = start + subOffsets[j];\n subList[j] = itemCallback.call(this);\n }\n list[i] = subList;\n } else {\n list[i] = this.parseUShortList();\n }\n }\n this.relativeOffset = relativeOffset;\n return list;\n};\n\n///// Complex tables parsing //////////////////////////////////\n\n// Parse a coverage table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n// parser.offset must point to the start of the table containing the coverage.\nParser.prototype.parseCoverage = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n const count = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n glyphs: this.parseUShortList(count)\n };\n } else if (format === 2) {\n const ranges = new Array(count);\n for (let i = 0; i < count; i++) {\n ranges[i] = {\n start: this.parseUShort(),\n end: this.parseUShort(),\n index: this.parseUShort()\n };\n }\n return {\n format: 2,\n ranges: ranges\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': Coverage format must be 1 or 2.');\n};\n\n// Parse a Class Definition Table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\nParser.prototype.parseClassDef = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n startGlyph: this.parseUShort(),\n classes: this.parseUShortList()\n };\n } else if (format === 2) {\n return {\n format: 2,\n ranges: this.parseRecordList({\n start: Parser.uShort,\n end: Parser.uShort,\n classId: Parser.uShort\n })\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': ClassDef format must be 1 or 2.');\n};\n\n///// Static methods ///////////////////////////////////\n// These convenience methods can be used as callbacks and should be called with \"this\" context set to a Parser instance.\n\nParser.list = function(count, itemCallback) {\n return function() {\n return this.parseList(count, itemCallback);\n };\n};\n\nParser.list32 = function(count, itemCallback) {\n return function() {\n return this.parseList32(count, itemCallback);\n };\n};\n\nParser.recordList = function(count, recordDescription) {\n return function() {\n return this.parseRecordList(count, recordDescription);\n };\n};\n\nParser.recordList32 = function(count, recordDescription) {\n return function() {\n return this.parseRecordList32(count, recordDescription);\n };\n};\n\nParser.pointer = function(description) {\n return function() {\n return this.parsePointer(description);\n };\n};\n\nParser.pointer32 = function(description) {\n return function() {\n return this.parsePointer32(description);\n };\n};\n\nParser.tag = Parser.prototype.parseTag;\nParser.byte = Parser.prototype.parseByte;\nParser.uShort = Parser.offset16 = Parser.prototype.parseUShort;\nParser.uShortList = Parser.prototype.parseUShortList;\nParser.uLong = Parser.offset32 = Parser.prototype.parseULong;\nParser.uLongList = Parser.prototype.parseULongList;\nParser.struct = Parser.prototype.parseStruct;\nParser.coverage = Parser.prototype.parseCoverage;\nParser.classDef = Parser.prototype.parseClassDef;\n\n///// Script, Feature, Lookup lists ///////////////////////////////////////////////\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n\nconst langSysTable = {\n reserved: Parser.uShort,\n reqFeatureIndex: Parser.uShort,\n featureIndexes: Parser.uShortList\n};\n\nParser.prototype.parseScriptList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n script: Parser.pointer({\n defaultLangSys: Parser.pointer(langSysTable),\n langSysRecords: Parser.recordList({\n tag: Parser.tag,\n langSys: Parser.pointer(langSysTable)\n })\n })\n })) || [];\n};\n\nParser.prototype.parseFeatureList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n feature: Parser.pointer({\n featureParams: Parser.offset16,\n lookupListIndexes: Parser.uShortList\n })\n })) || [];\n};\n\nParser.prototype.parseLookupList = function(lookupTableParsers) {\n return this.parsePointer(Parser.list(Parser.pointer(function() {\n const lookupType = this.parseUShort();\n check.argument(1 <= lookupType && lookupType <= 9, 'GPOS/GSUB lookup type ' + lookupType + ' unknown.');\n const lookupFlag = this.parseUShort();\n const useMarkFilteringSet = lookupFlag & 0x10;\n return {\n lookupType: lookupType,\n lookupFlag: lookupFlag,\n subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])),\n markFilteringSet: useMarkFilteringSet ? this.parseUShort() : undefined\n };\n }))) || [];\n};\n\nParser.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n const majorVersion = this.parseUShort();\n const minorVersion = this.parseUShort();\n check.argument(majorVersion === 1 && minorVersion < 1, 'GPOS/GSUB feature variations table unknown.');\n const featureVariations = this.parseRecordList32({\n conditionSetOffset: Parser.offset32,\n featureTableSubstitutionOffset: Parser.offset32\n });\n return featureVariations;\n }) || [];\n};\n\nexport default {\n getByte,\n getCard8: getByte,\n getUShort,\n getCard16: getUShort,\n getShort,\n getULong,\n getFixed,\n getTag,\n getOffset,\n getBytes,\n bytesToString,\n Parser,\n};\n\nexport { Parser };\n","// The `glyf` table describes the glyphs in TrueType outline format.\n// http://www.microsoft.com/typography/otspec/glyf.htm\n\nimport check from '../check';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\n\n// Parse the coordinate data for a glyph.\nfunction parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) {\n let v;\n if ((flag & shortVectorBitMask) > 0) {\n // The coordinate is 1 byte long.\n v = p.parseByte();\n // The `same` bit is re-used for short values to signify the sign of the value.\n if ((flag & sameBitMask) === 0) {\n v = -v;\n }\n\n v = previousValue + v;\n } else {\n // The coordinate is 2 bytes long.\n // If the `same` bit is set, the coordinate is the same as the previous coordinate.\n if ((flag & sameBitMask) > 0) {\n v = previousValue;\n } else {\n // Parse the coordinate as a signed 16-bit delta value.\n v = previousValue + p.parseShort();\n }\n }\n\n return v;\n}\n\n// Parse a TrueType glyph.\nfunction parseGlyph(glyph, data, start) {\n const p = new parse.Parser(data, start);\n glyph.numberOfContours = p.parseShort();\n glyph._xMin = p.parseShort();\n glyph._yMin = p.parseShort();\n glyph._xMax = p.parseShort();\n glyph._yMax = p.parseShort();\n let flags;\n let flag;\n\n if (glyph.numberOfContours > 0) {\n // This glyph is not a composite.\n const endPointIndices = glyph.endPointIndices = [];\n for (let i = 0; i < glyph.numberOfContours; i += 1) {\n endPointIndices.push(p.parseUShort());\n }\n\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n\n const numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1;\n flags = [];\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = p.parseByte();\n flags.push(flag);\n // If bit 3 is set, we repeat this flag n times, where n is the next byte.\n if ((flag & 8) > 0) {\n const repeatCount = p.parseByte();\n for (let j = 0; j < repeatCount; j += 1) {\n flags.push(flag);\n i += 1;\n }\n }\n }\n\n check.argument(flags.length === numberOfCoordinates, 'Bad flags.');\n\n if (endPointIndices.length > 0) {\n const points = [];\n let point;\n // X/Y coordinates are relative to the previous point, except for the first point which is relative to 0,0.\n if (numberOfCoordinates > 0) {\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = {};\n point.onCurve = !!(flag & 1);\n point.lastPointOfContour = endPointIndices.indexOf(i) >= 0;\n points.push(point);\n }\n\n let px = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.x = parseGlyphCoordinate(p, flag, px, 2, 16);\n px = point.x;\n }\n\n let py = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.y = parseGlyphCoordinate(p, flag, py, 4, 32);\n py = point.y;\n }\n }\n\n glyph.points = points;\n } else {\n glyph.points = [];\n }\n } else if (glyph.numberOfContours === 0) {\n glyph.points = [];\n } else {\n glyph.isComposite = true;\n glyph.points = [];\n glyph.components = [];\n let moreComponents = true;\n while (moreComponents) {\n flags = p.parseUShort();\n const component = {\n glyphIndex: p.parseUShort(),\n xScale: 1,\n scale01: 0,\n scale10: 0,\n yScale: 1,\n dx: 0,\n dy: 0\n };\n if ((flags & 1) > 0) {\n // The arguments are words\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseShort();\n component.dy = p.parseShort();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseUShort(), p.parseUShort()];\n }\n\n } else {\n // The arguments are bytes\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseChar();\n component.dy = p.parseChar();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseByte(), p.parseByte()];\n }\n }\n\n if ((flags & 8) > 0) {\n // We have a scale\n component.xScale = component.yScale = p.parseF2Dot14();\n } else if ((flags & 64) > 0) {\n // We have an X / Y scale\n component.xScale = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n } else if ((flags & 128) > 0) {\n // We have a 2x2 transformation\n component.xScale = p.parseF2Dot14();\n component.scale01 = p.parseF2Dot14();\n component.scale10 = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n }\n\n glyph.components.push(component);\n moreComponents = !!(flags & 32);\n }\n if (flags & 0x100) {\n // We have instructions\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n }\n }\n}\n\n// Transform an array of points and return a new array.\nfunction transformPoints(points, transform) {\n const newPoints = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n const newPt = {\n x: transform.xScale * pt.x + transform.scale01 * pt.y + transform.dx,\n y: transform.scale10 * pt.x + transform.yScale * pt.y + transform.dy,\n onCurve: pt.onCurve,\n lastPointOfContour: pt.lastPointOfContour\n };\n newPoints.push(newPt);\n }\n\n return newPoints;\n}\n\nfunction getContours(points) {\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(currentContour.length === 0, 'There are still points left in the current contour.');\n return contours;\n}\n\n// Convert the TrueType glyph outline to a Path.\nfunction getPath(points) {\n const p = new Path();\n if (!points) {\n return p;\n }\n\n const contours = getContours(points);\n\n for (let contourIndex = 0; contourIndex < contours.length; ++contourIndex) {\n const contour = contours[contourIndex];\n\n let prev = null;\n let curr = contour[contour.length - 1];\n let next = contour[0];\n\n if (curr.onCurve) {\n p.moveTo(curr.x, curr.y);\n } else {\n if (next.onCurve) {\n p.moveTo(next.x, next.y);\n } else {\n // If both first and last points are off-curve, start at their middle.\n const start = {x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5};\n p.moveTo(start.x, start.y);\n }\n }\n\n for (let i = 0; i < contour.length; ++i) {\n prev = curr;\n curr = next;\n next = contour[(i + 1) % contour.length];\n\n if (curr.onCurve) {\n // This is a straight line.\n p.lineTo(curr.x, curr.y);\n } else {\n let prev2 = prev;\n let next2 = next;\n\n if (!prev.onCurve) {\n prev2 = { x: (curr.x + prev.x) * 0.5, y: (curr.y + prev.y) * 0.5 };\n }\n\n if (!next.onCurve) {\n next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n }\n\n p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y);\n }\n }\n\n p.closePath();\n }\n return p;\n}\n\nfunction buildPath(glyphs, glyph) {\n if (glyph.isComposite) {\n for (let j = 0; j < glyph.components.length; j += 1) {\n const component = glyph.components[j];\n const componentGlyph = glyphs.get(component.glyphIndex);\n // Force the ttfGlyphLoader to parse the glyph.\n componentGlyph.getPath();\n if (componentGlyph.points) {\n let transformedPoints;\n if (component.matchedPoints === undefined) {\n // component positioned by offset\n transformedPoints = transformPoints(componentGlyph.points, component);\n } else {\n // component positioned by matched points\n if ((component.matchedPoints[0] > glyph.points.length - 1) ||\n (component.matchedPoints[1] > componentGlyph.points.length - 1)) {\n throw Error('Matched points out of range in ' + glyph.name);\n }\n const firstPt = glyph.points[component.matchedPoints[0]];\n let secondPt = componentGlyph.points[component.matchedPoints[1]];\n const transform = {\n xScale: component.xScale, scale01: component.scale01,\n scale10: component.scale10, yScale: component.yScale,\n dx: 0, dy: 0\n };\n secondPt = transformPoints([secondPt], transform)[0];\n transform.dx = firstPt.x - secondPt.x;\n transform.dy = firstPt.y - secondPt.y;\n transformedPoints = transformPoints(componentGlyph.points, transform);\n }\n glyph.points = glyph.points.concat(transformedPoints);\n }\n }\n }\n\n return getPath(glyph.points);\n}\n\nfunction parseGlyfTableAll(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n // The last element of the loca table is invalid.\n for (let i = 0; i < loca.length - 1; i += 1) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n }\n\n return glyphs;\n}\n\nfunction parseGlyfTableOnLowMemory(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n font._push = function(i) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n };\n\n return glyphs;\n}\n\n// Parse all the glyphs according to the offsets from the `loca` table.\nfunction parseGlyfTable(data, start, loca, font, opt) {\n if (opt.lowMemory)\n return parseGlyfTableOnLowMemory(data, start, loca, font);\n else\n return parseGlyfTableAll(data, start, loca, font);\n}\n\nexport default { getPath, parse: parseGlyfTable};\n","/* A TrueType font hinting interpreter.\n*\n* (c) 2017 Axel Kittenberger\n*\n* This interpreter has been implemented according to this documentation:\n* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html\n*\n* According to the documentation F24DOT6 values are used for pixels.\n* That means calculation is 1/64 pixel accurate and uses integer operations.\n* However, Javascript has floating point operations by default and only\n* those are available. One could make a case to simulate the 1/64 accuracy\n* exactly by truncating after every division operation\n* (for example with << 0) to get pixel exactly results as other TrueType\n* implementations. It may make sense since some fonts are pixel optimized\n* by hand using DELTAP instructions. The current implementation doesn't\n* and rather uses full floating point precision.\n*\n* xScale, yScale and rotation is currently ignored.\n*\n* A few non-trivial instructions are missing as I didn't encounter yet\n* a font that used them to test a possible implementation.\n*\n* Some fonts seem to use undocumented features regarding the twilight zone.\n* Only some of them are implemented as they were encountered.\n*\n* The exports.DEBUG statements are removed on the minified distribution file.\n*/\n'use strict';\n\nimport glyf from './tables/glyf';\n\nlet instructionTable;\nlet exec;\nlet execGlyph;\nlet execComponent;\n\n/*\n* Creates a hinting object.\n*\n* There ought to be exactly one\n* for each truetype font that is used for hinting.\n*/\nfunction Hinting(font) {\n // the font this hinting object is for\n this.font = font;\n\n this.getCommands = function (hPoints) {\n return glyf.getPath(hPoints).commands;\n };\n\n // cached states\n this._fpgmState =\n this._prepState =\n undefined;\n\n // errorState\n // 0 ... all okay\n // 1 ... had an error in a glyf,\n // continue working but stop spamming\n // the console\n // 2 ... error at prep, stop hinting at this ppem\n // 3 ... error at fpeg, stop hinting for this font at all\n this._errorState = 0;\n}\n\n/*\n* Not rounding.\n*/\nfunction roundOff(v) {\n return v;\n}\n\n/*\n* Rounding to grid.\n*/\nfunction roundToGrid(v) {\n //Rounding in TT is supposed to \"symmetrical around zero\"\n return Math.sign(v) * Math.round(Math.abs(v));\n}\n\n/*\n* Rounding to double grid.\n*/\nfunction roundToDoubleGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2;\n}\n\n/*\n* Rounding to half grid.\n*/\nfunction roundToHalfGrid(v) {\n return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5);\n}\n\n/*\n* Rounding to up to grid.\n*/\nfunction roundUpToGrid(v) {\n return Math.sign(v) * Math.ceil(Math.abs(v));\n}\n\n/*\n* Rounding to down to grid.\n*/\nfunction roundDownToGrid(v) {\n return Math.sign(v) * Math.floor(Math.abs(v));\n}\n\n/*\n* Super rounding.\n*/\nconst roundSuper = function (v) {\n const period = this.srPeriod;\n let phase = this.srPhase;\n const threshold = this.srThreshold;\n let sign = 1;\n\n if (v < 0) {\n v = -v;\n sign = -1;\n }\n\n v += threshold - phase;\n\n v = Math.trunc(v / period) * period;\n\n v += phase;\n\n // according to http://xgridfit.sourceforge.net/round.html\n if (v < 0) return phase * sign;\n\n return v * sign;\n};\n\n/*\n* Unit vector of x-axis.\n*/\nconst xUnitVector = {\n x: 1,\n\n y: 0,\n\n axis: 'x',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.xo - rp1.xo;\n do2 = p.xo - rp2.xo;\n dm1 = rp1.x - rp1.xo;\n dm2 = rp2.x - rp2.xo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.x = p.xo + (dm1 + dm2) / 2;\n return;\n }\n\n p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this\n normalSlope: Number.NEGATIVE_INFINITY,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'.\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.x = (org ? rp.xo : rp.x) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.x = rpdx + (p.y - rpdy) / pv.normalSlope;\n },\n\n // Slope of vector line.\n slope: 0,\n\n // Touches the point p.\n touch: function (p) {\n p.xTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.xTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.xTouched = false;\n }\n};\n\n/*\n* Unit vector of y-axis.\n*/\nconst yUnitVector = {\n x: 0,\n\n y: 1,\n\n axis: 'y',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.yo - rp1.yo;\n do2 = p.yo - rp2.yo;\n dm1 = rp1.y - rp1.yo;\n dm2 = rp2.y - rp2.yo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.y = p.yo + (dm1 + dm2) / 2;\n return;\n }\n\n p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this.\n normalSlope: 0,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.y = (org ? rp.yo : rp.y) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.y = rpdy + pv.normalSlope * (p.x - rpdx);\n },\n\n // Slope of vector line.\n slope: Number.POSITIVE_INFINITY,\n\n // Touches the point p.\n touch: function (p) {\n p.yTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.yTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.yTouched = false;\n }\n};\n\nObject.freeze(xUnitVector);\nObject.freeze(yUnitVector);\n\n/*\n* Creates a unit vector that is not x- or y-axis.\n*/\nfunction UnitVector(x, y) {\n this.x = x;\n this.y = y;\n this.axis = undefined;\n this.slope = y / x;\n this.normalSlope = -x / y;\n Object.freeze(this);\n}\n\n/*\n* Gets the projected distance between two points.\n* o1/o2 ... if true, respective original position is used.\n*/\nUnitVector.prototype.distance = function(p1, p2, o1, o2) {\n return (\n this.x * xUnitVector.distance(p1, p2, o1, o2) +\n this.y * yUnitVector.distance(p1, p2, o1, o2)\n );\n};\n\n/*\n* Moves point p so the moved position has the same relative\n* position to the moved positions of rp1 and rp2 than the\n* original positions had.\n*\n* See APPENDIX on INTERPOLATE at the bottom of this file.\n*/\nUnitVector.prototype.interpolate = function(p, rp1, rp2, pv) {\n let dm1;\n let dm2;\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dt;\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n this.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n};\n\n/*\n* Sets the point 'p' relative to point 'rp'\n* by the distance 'd'\n*\n* See APPENDIX on SETRELATIVE at the bottom of this file.\n*\n* p ... point to set\n* rp ... reference point\n* d ... distance on projection vector\n* pv ... projection vector (undefined = this)\n* org ... if true, uses the original position of rp as reference.\n*/\nUnitVector.prototype.setRelative = function(p, rp, d, pv, org) {\n pv = pv || this;\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n const pvns = pv.normalSlope;\n const fvs = this.slope;\n\n const px = p.x;\n const py = p.y;\n\n p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);\n p.y = fvs * (p.x - px) + py;\n};\n\n/*\n* Touches the point p.\n*/\nUnitVector.prototype.touch = function(p) {\n p.xTouched = true;\n p.yTouched = true;\n};\n\n/*\n* Returns a unit vector with x/y coordinates.\n*/\nfunction getUnitVector(x, y) {\n const d = Math.sqrt(x * x + y * y);\n\n x /= d;\n y /= d;\n\n if (x === 1 && y === 0) return xUnitVector;\n else if (x === 0 && y === 1) return yUnitVector;\n else return new UnitVector(x, y);\n}\n\n/*\n* Creates a point in the hinting engine.\n*/\nfunction HPoint(\n x,\n y,\n lastPointOfContour,\n onCurve\n) {\n this.x = this.xo = Math.round(x * 64) / 64; // hinted x value and original x-value\n this.y = this.yo = Math.round(y * 64) / 64; // hinted y value and original y-value\n\n this.lastPointOfContour = lastPointOfContour;\n this.onCurve = onCurve;\n this.prevPointOnContour = undefined;\n this.nextPointOnContour = undefined;\n this.xTouched = false;\n this.yTouched = false;\n\n Object.preventExtensions(this);\n}\n\n/*\n* Returns the next touched point on the contour.\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.nextTouched = function(v) {\n let p = this.nextPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.nextPointOnContour;\n\n return p;\n};\n\n/*\n* Returns the previous touched point on the contour\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.prevTouched = function(v) {\n let p = this.prevPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.prevPointOnContour;\n\n return p;\n};\n\n/*\n* The zero point.\n*/\nconst HPZero = Object.freeze(new HPoint(0, 0));\n\n/*\n* The default state of the interpreter.\n*\n* Note: Freezing the defaultState and then deriving from it\n* makes the V8 Javascript engine going awkward,\n* so this is avoided, albeit the defaultState shouldn't\n* ever change.\n*/\nconst defaultState = {\n cvCutIn: 17 / 16, // control value cut in\n deltaBase: 9,\n deltaShift: 0.125,\n loop: 1, // loops some instructions\n minDis: 1, // minimum distance\n autoFlip: true\n};\n\n/*\n* The current state of the interpreter.\n*\n* env ... 'fpgm' or 'prep' or 'glyf'\n* prog ... the program\n*/\nfunction State(env, prog) {\n this.env = env;\n this.stack = [];\n this.prog = prog;\n\n switch (env) {\n case 'glyf' :\n this.zp0 = this.zp1 = this.zp2 = 1;\n this.rp0 = this.rp1 = this.rp2 = 0;\n /* fall through */\n case 'prep' :\n this.fv = this.pv = this.dpv = xUnitVector;\n this.round = roundToGrid;\n }\n}\n\n/*\n* Executes a glyph program.\n*\n* This does the hinting for each glyph.\n*\n* Returns an array of moved points.\n*\n* glyph: the glyph to hint\n* ppem: the size the glyph is rendered for\n*/\nHinting.prototype.exec = function(glyph, ppem) {\n if (typeof ppem !== 'number') {\n throw new Error('Point size is not a number!');\n }\n\n // Received a fatal error, don't do any hinting anymore.\n if (this._errorState > 2) return;\n\n const font = this.font;\n let prepState = this._prepState;\n\n if (!prepState || prepState.ppem !== ppem) {\n let fpgmState = this._fpgmState;\n\n if (!fpgmState) {\n // Executes the fpgm state.\n // This is used by fonts to define functions.\n State.prototype = defaultState;\n\n fpgmState =\n this._fpgmState =\n new State('fpgm', font.tables.fpgm);\n\n fpgmState.funcs = [ ];\n fpgmState.font = font;\n\n if (exports.DEBUG) {\n console.log('---EXEC FPGM---');\n fpgmState.step = -1;\n }\n\n try {\n exec(fpgmState);\n } catch (e) {\n console.log('Hinting error in FPGM:' + e);\n this._errorState = 3;\n return;\n }\n }\n\n // Executes the prep program for this ppem setting.\n // This is used by fonts to set cvt values\n // depending on to be rendered font size.\n\n State.prototype = fpgmState;\n prepState =\n this._prepState =\n new State('prep', font.tables.prep);\n\n prepState.ppem = ppem;\n\n // Creates a copy of the cvt table\n // and scales it to the current ppem setting.\n const oCvt = font.tables.cvt;\n if (oCvt) {\n const cvt = prepState.cvt = new Array(oCvt.length);\n const scale = ppem / font.unitsPerEm;\n for (let c = 0; c < oCvt.length; c++) {\n cvt[c] = oCvt[c] * scale;\n }\n } else {\n prepState.cvt = [];\n }\n\n if (exports.DEBUG) {\n console.log('---EXEC PREP---');\n prepState.step = -1;\n }\n\n try {\n exec(prepState);\n } catch (e) {\n if (this._errorState < 2) {\n console.log('Hinting error in PREP:' + e);\n }\n this._errorState = 2;\n }\n }\n\n if (this._errorState > 1) return;\n\n try {\n return execGlyph(glyph, prepState);\n } catch (e) {\n if (this._errorState < 1) {\n console.log('Hinting error:' + e);\n console.log('Note: further hinting errors are silenced');\n }\n this._errorState = 1;\n return undefined;\n }\n};\n\n/*\n* Executes the hinting program for a glyph.\n*/\nexecGlyph = function(glyph, prepState) {\n // original point positions\n const xScale = prepState.ppem / prepState.font.unitsPerEm;\n const yScale = xScale;\n let components = glyph.components;\n let contours;\n let gZone;\n let state;\n\n State.prototype = prepState;\n if (!components) {\n state = new State('glyf', glyph.instructions);\n if (exports.DEBUG) {\n console.log('---EXEC GLYPH---');\n state.step = -1;\n }\n execComponent(glyph, state, xScale, yScale);\n gZone = state.gZone;\n } else {\n const font = prepState.font;\n gZone = [];\n contours = [];\n for (let i = 0; i < components.length; i++) {\n const c = components[i];\n const cg = font.glyphs.get(c.glyphIndex);\n\n state = new State('glyf', cg.instructions);\n\n if (exports.DEBUG) {\n console.log('---EXEC COMP ' + i + '---');\n state.step = -1;\n }\n\n execComponent(cg, state, xScale, yScale);\n // appends the computed points to the result array\n // post processes the component points\n const dx = Math.round(c.dx * xScale);\n const dy = Math.round(c.dy * yScale);\n const gz = state.gZone;\n const cc = state.contours;\n for (let pi = 0; pi < gz.length; pi++) {\n const p = gz[pi];\n p.xTouched = p.yTouched = false;\n p.xo = p.x = p.x + dx;\n p.yo = p.y = p.y + dy;\n }\n\n const gLen = gZone.length;\n gZone.push.apply(gZone, gz);\n for (let j = 0; j < cc.length; j++) {\n contours.push(cc[j] + gLen);\n }\n }\n\n if (glyph.instructions && !state.inhibitGridFit) {\n // the composite has instructions on its own\n state = new State('glyf', glyph.instructions);\n\n state.gZone = state.z0 = state.z1 = state.z2 = gZone;\n\n state.contours = contours;\n\n // note: HPZero cannot be used here, since\n // the point might be modified\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n if (exports.DEBUG) {\n console.log('---EXEC COMPOSITE---');\n state.step = -1;\n }\n\n exec(state);\n\n gZone.length -= 2;\n }\n }\n\n return gZone;\n};\n\n/*\n* Executes the hinting program for a component of a multi-component glyph\n* or of the glyph itself for a non-component glyph.\n*/\nexecComponent = function(glyph, state, xScale, yScale)\n{\n const points = glyph.points || [];\n const pLen = points.length;\n const gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];\n const contours = state.contours = [];\n\n // Scales the original points and\n // makes copies for the hinted points.\n let cp; // current point\n for (let i = 0; i < pLen; i++) {\n cp = points[i];\n\n gZone[i] = new HPoint(\n cp.x * xScale,\n cp.y * yScale,\n cp.lastPointOfContour,\n cp.onCurve\n );\n }\n\n // Chain links the contours.\n let sp; // start point\n let np; // next point\n\n for (let i = 0; i < pLen; i++) {\n cp = gZone[i];\n\n if (!sp) {\n sp = cp;\n contours.push(i);\n }\n\n if (cp.lastPointOfContour) {\n cp.nextPointOnContour = sp;\n sp.prevPointOnContour = cp;\n sp = undefined;\n } else {\n np = gZone[i + 1];\n cp.nextPointOnContour = np;\n np.prevPointOnContour = cp;\n }\n }\n\n if (state.inhibitGridFit) return;\n\n if (exports.DEBUG) {\n console.log('PROCESSING GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n exec(state);\n\n // Removes the extra points.\n gZone.length -= 2;\n\n if (exports.DEBUG) {\n console.log('FINISHED GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n};\n\n/*\n* Executes the program loaded in state.\n*/\nexec = function(state) {\n let prog = state.prog;\n\n if (!prog) return;\n\n const pLen = prog.length;\n let ins;\n\n for (state.ip = 0; state.ip < pLen; state.ip++) {\n if (exports.DEBUG) state.step++;\n ins = instructionTable[prog[state.ip]];\n\n if (!ins) {\n throw new Error(\n 'unknown instruction: 0x' +\n Number(prog[state.ip]).toString(16)\n );\n }\n\n ins(state);\n\n // very extensive debugging for each step\n /*\n if (exports.DEBUG) {\n var da;\n if (state.gZone) {\n da = [];\n for (let i = 0; i < state.gZone.length; i++)\n {\n da.push(i + ' ' +\n state.gZone[i].x * 64 + ' ' +\n state.gZone[i].y * 64 + ' ' +\n (state.gZone[i].xTouched ? 'x' : '') +\n (state.gZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('GZ', da);\n }\n\n if (state.tZone) {\n da = [];\n for (let i = 0; i < state.tZone.length; i++) {\n da.push(i + ' ' +\n state.tZone[i].x * 64 + ' ' +\n state.tZone[i].y * 64 + ' ' +\n (state.tZone[i].xTouched ? 'x' : '') +\n (state.tZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('TZ', da);\n }\n\n if (state.stack.length > 10) {\n console.log(\n state.stack.length,\n '...', state.stack.slice(state.stack.length - 10)\n );\n } else {\n console.log(state.stack.length, state.stack);\n }\n }\n */\n }\n};\n\n/*\n* Initializes the twilight zone.\n*\n* This is only done if a SZPx instruction\n* refers to the twilight zone.\n*/\nfunction initTZone(state)\n{\n const tZone = state.tZone = new Array(state.gZone.length);\n\n // no idea if this is actually correct...\n for (let i = 0; i < tZone.length; i++)\n {\n tZone[i] = new HPoint(0, 0);\n }\n}\n\n/*\n* Skips the instruction pointer ahead over an IF/ELSE block.\n* handleElse .. if true breaks on matching ELSE\n*/\nfunction skip(state, handleElse)\n{\n const prog = state.prog;\n let ip = state.ip;\n let nesting = 1;\n let ins;\n\n do {\n ins = prog[++ip];\n if (ins === 0x58) // IF\n nesting++;\n else if (ins === 0x59) // EIF\n nesting--;\n else if (ins === 0x40) // NPUSHB\n ip += prog[ip + 1] + 1;\n else if (ins === 0x41) // NPUSHW\n ip += 2 * prog[ip + 1] + 1;\n else if (ins >= 0xB0 && ins <= 0xB7) // PUSHB\n ip += ins - 0xB0 + 1;\n else if (ins >= 0xB8 && ins <= 0xBF) // PUSHW\n ip += (ins - 0xB8 + 1) * 2;\n else if (handleElse && nesting === 1 && ins === 0x1B) // ELSE\n break;\n } while (nesting > 0);\n\n state.ip = ip;\n}\n\n/*----------------------------------------------------------*\n* And then a lot of instructions... *\n*----------------------------------------------------------*/\n\n// SVTCA[a] Set freedom and projection Vectors To Coordinate Axis\n// 0x00-0x01\nfunction SVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SVTCA[' + v.axis + ']');\n\n state.fv = state.pv = state.dpv = v;\n}\n\n// SPVTCA[a] Set Projection Vector to Coordinate Axis\n// 0x02-0x03\nfunction SPVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SPVTCA[' + v.axis + ']');\n\n state.pv = state.dpv = v;\n}\n\n// SFVTCA[a] Set Freedom Vector to Coordinate Axis\n// 0x04-0x05\nfunction SFVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SFVTCA[' + v.axis + ']');\n\n state.fv = v;\n}\n\n// SPVTL[a] Set Projection Vector To Line\n// 0x06-0x07\nfunction SPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.pv = state.dpv = getUnitVector(dx, dy);\n}\n\n// SFVTL[a] Set Freedom Vector To Line\n// 0x08-0x09\nfunction SFVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SFVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.fv = getUnitVector(dx, dy);\n}\n\n// SPVFS[] Set Projection Vector From Stack\n// 0x0A\nfunction SPVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.pv = state.dpv = getUnitVector(x, y);\n}\n\n// SFVFS[] Set Freedom Vector From Stack\n// 0x0B\nfunction SFVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.fv = getUnitVector(x, y);\n}\n\n// GPV[] Get Projection Vector\n// 0x0C\nfunction GPV(state) {\n const stack = state.stack;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'GPV[]');\n\n stack.push(pv.x * 0x4000);\n stack.push(pv.y * 0x4000);\n}\n\n// GFV[] Get Freedom Vector\n// 0x0C\nfunction GFV(state) {\n const stack = state.stack;\n const fv = state.fv;\n\n if (exports.DEBUG) console.log(state.step, 'GFV[]');\n\n stack.push(fv.x * 0x4000);\n stack.push(fv.y * 0x4000);\n}\n\n// SFVTPV[] Set Freedom Vector To Projection Vector\n// 0x0E\nfunction SFVTPV(state) {\n state.fv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'SFVTPV[]');\n}\n\n// ISECT[] moves point p to the InterSECTion of two lines\n// 0x0F\nfunction ISECT(state)\n{\n const stack = state.stack;\n const pa0i = stack.pop();\n const pa1i = stack.pop();\n const pb0i = stack.pop();\n const pb1i = stack.pop();\n const pi = stack.pop();\n const z0 = state.z0;\n const z1 = state.z1;\n const pa0 = z0[pa0i];\n const pa1 = z0[pa1i];\n const pb0 = z1[pb0i];\n const pb1 = z1[pb1i];\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log('ISECT[], ', pa0i, pa1i, pb0i, pb1i, pi);\n\n // math from\n // en.wikipedia.org/wiki/Line%E2%80%93line_intersection#Given_two_points_on_each_line\n\n const x1 = pa0.x;\n const y1 = pa0.y;\n const x2 = pa1.x;\n const y2 = pa1.y;\n const x3 = pb0.x;\n const y3 = pb0.y;\n const x4 = pb1.x;\n const y4 = pb1.y;\n\n const div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n const f1 = x1 * y2 - y1 * x2;\n const f2 = x3 * y4 - y3 * x4;\n\n p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div;\n p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div;\n}\n\n// SRP0[] Set Reference Point 0\n// 0x10\nfunction SRP0(state) {\n state.rp0 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP0[]', state.rp0);\n}\n\n// SRP1[] Set Reference Point 1\n// 0x11\nfunction SRP1(state) {\n state.rp1 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP1[]', state.rp1);\n}\n\n// SRP1[] Set Reference Point 2\n// 0x12\nfunction SRP2(state) {\n state.rp2 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP2[]', state.rp2);\n}\n\n// SZP0[] Set Zone Pointer 0\n// 0x13\nfunction SZP0(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP0[]', n);\n\n state.zp0 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.tZone;\n break;\n case 1 :\n state.z0 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP1[] Set Zone Pointer 1\n// 0x14\nfunction SZP1(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP1[]', n);\n\n state.zp1 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z1 = state.tZone;\n break;\n case 1 :\n state.z1 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP2[] Set Zone Pointer 2\n// 0x15\nfunction SZP2(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP2[]', n);\n\n state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z2 = state.tZone;\n break;\n case 1 :\n state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZPS[] Set Zone PointerS\n// 0x16\nfunction SZPS(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZPS[]', n);\n\n state.zp0 = state.zp1 = state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.z1 = state.z2 = state.tZone;\n break;\n case 1 :\n state.z0 = state.z1 = state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SLOOP[] Set LOOP variable\n// 0x17\nfunction SLOOP(state) {\n state.loop = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SLOOP[]', state.loop);\n}\n\n// RTG[] Round To Grid\n// 0x18\nfunction RTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTG[]');\n\n state.round = roundToGrid;\n}\n\n// RTHG[] Round To Half Grid\n// 0x19\nfunction RTHG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTHG[]');\n\n state.round = roundToHalfGrid;\n}\n\n// SMD[] Set Minimum Distance\n// 0x1A\nfunction SMD(state) {\n const d = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SMD[]', d);\n\n state.minDis = d / 0x40;\n}\n\n// ELSE[] ELSE clause\n// 0x1B\nfunction ELSE(state) {\n // This instruction has been reached by executing a then branch\n // so it just skips ahead until matching EIF.\n //\n // In case the IF was negative the IF[] instruction already\n // skipped forward over the ELSE[]\n\n if (exports.DEBUG) console.log(state.step, 'ELSE[]');\n\n skip(state, false);\n}\n\n// JMPR[] JuMP Relative\n// 0x1C\nfunction JMPR(state) {\n const o = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'JMPR[]', o);\n\n // A jump by 1 would do nothing.\n state.ip += o - 1;\n}\n\n// SCVTCI[] Set Control Value Table Cut-In\n// 0x1D\nfunction SCVTCI(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SCVTCI[]', n);\n\n state.cvCutIn = n / 0x40;\n}\n\n// DUP[] DUPlicate top stack element\n// 0x20\nfunction DUP(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DUP[]');\n\n stack.push(stack[stack.length - 1]);\n}\n\n// POP[] POP top stack element\n// 0x21\nfunction POP(state) {\n if (exports.DEBUG) console.log(state.step, 'POP[]');\n\n state.stack.pop();\n}\n\n// CLEAR[] CLEAR the stack\n// 0x22\nfunction CLEAR(state) {\n if (exports.DEBUG) console.log(state.step, 'CLEAR[]');\n\n state.stack.length = 0;\n}\n\n// SWAP[] SWAP the top two elements on the stack\n// 0x23\nfunction SWAP(state) {\n const stack = state.stack;\n\n const a = stack.pop();\n const b = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SWAP[]');\n\n stack.push(a);\n stack.push(b);\n}\n\n// DEPTH[] DEPTH of the stack\n// 0x24\nfunction DEPTH(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DEPTH[]');\n\n stack.push(stack.length);\n}\n\n// LOOPCALL[] LOOPCALL function\n// 0x2A\nfunction LOOPCALL(state) {\n const stack = state.stack;\n const fn = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LOOPCALL[]', fn, c);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n for (let i = 0; i < c; i++) {\n exec(state);\n\n if (exports.DEBUG) console.log(\n ++state.step,\n i + 1 < c ? 'next loopcall' : 'done loopcall',\n i\n );\n }\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n}\n\n// CALL[] CALL function\n// 0x2B\nfunction CALL(state) {\n const fn = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CALL[]', fn);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n exec(state);\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n\n if (exports.DEBUG) console.log(++state.step, 'returning from', fn);\n}\n\n// CINDEX[] Copy the INDEXed element to the top of the stack\n// 0x25\nfunction CINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CINDEX[]', k);\n\n // In case of k == 1, it copies the last element after popping\n // thus stack.length - k.\n stack.push(stack[stack.length - k]);\n}\n\n// MINDEX[] Move the INDEXed element to the top of the stack\n// 0x26\nfunction MINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MINDEX[]', k);\n\n stack.push(stack.splice(stack.length - k, 1)[0]);\n}\n\n// FDEF[] Function DEFinition\n// 0x2C\nfunction FDEF(state) {\n if (state.env !== 'fpgm') throw new Error('FDEF not allowed here');\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n const fn = stack.pop();\n const ipBegin = ip;\n\n if (exports.DEBUG) console.log(state.step, 'FDEF[]', fn);\n\n while (prog[++ip] !== 0x2D);\n\n state.ip = ip;\n state.funcs[fn] = prog.slice(ipBegin + 1, ip);\n}\n\n// MDAP[a] Move Direct Absolute Point\n// 0x2E-0x2F\nfunction MDAP(round, state) {\n const pi = state.stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'MDAP[' + round + ']', pi);\n\n let d = pv.distance(p, HPZero);\n\n if (round) d = state.round(d);\n\n fv.setRelative(p, HPZero, d, pv);\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// IUP[a] Interpolate Untouched Points through the outline\n// 0x30\nfunction IUP(v, state) {\n const z2 = state.z2;\n const pLen = z2.length - 2;\n let cp;\n let pp;\n let np;\n\n if (exports.DEBUG) console.log(state.step, 'IUP[' + v.axis + ']');\n\n for (let i = 0; i < pLen; i++) {\n cp = z2[i]; // current point\n\n // if this point has been touched go on\n if (v.touched(cp)) continue;\n\n pp = cp.prevTouched(v);\n\n // no point on the contour has been touched?\n if (pp === cp) continue;\n\n np = cp.nextTouched(v);\n\n if (pp === np) {\n // only one point on the contour has been touched\n // so simply moves the point like that\n\n v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true);\n }\n\n v.interpolate(cp, pp, np, v);\n }\n}\n\n// SHP[] SHift Point using reference point\n// 0x32-0x33\nfunction SHP(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n let loop = state.loop;\n const z2 = state.z2;\n\n while (loop--)\n {\n const pi = stack.pop();\n const p = z2[pi];\n\n const d = pv.distance(rp, rp, false, true);\n fv.setRelative(p, p, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ?\n 'loop ' + (state.loop - loop) + ': ' :\n ''\n ) +\n 'SHP[' + (a ? 'rp1' : 'rp2') + ']', pi\n );\n }\n }\n\n state.loop = 1;\n}\n\n// SHC[] SHift Contour using reference point\n// 0x36-0x37\nfunction SHC(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const ci = stack.pop();\n const sp = state.z2[state.contours[ci]];\n let p = sp;\n\n if (exports.DEBUG) console.log(state.step, 'SHC[' + a + ']', ci);\n\n const d = pv.distance(rp, rp, false, true);\n\n do {\n if (p !== rp) fv.setRelative(p, p, d, pv);\n p = p.nextPointOnContour;\n } while (p !== sp);\n}\n\n// SHZ[] SHift Zone using reference point\n// 0x36-0x37\nfunction SHZ(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SHZ[' + a + ']', e);\n\n let z;\n switch (e) {\n case 0 : z = state.tZone; break;\n case 1 : z = state.gZone; break;\n default : throw new Error('Invalid zone');\n }\n\n let p;\n const d = pv.distance(rp, rp, false, true);\n const pLen = z.length - 2;\n for (let i = 0; i < pLen; i++)\n {\n p = z[i];\n fv.setRelative(p, p, d, pv);\n //if (p !== rp) fv.setRelative(p, p, d, pv);\n }\n}\n\n// SHPIX[] SHift point by a PIXel amount\n// 0x38\nfunction SHPIX(state) {\n const stack = state.stack;\n let loop = state.loop;\n const fv = state.fv;\n const d = stack.pop() / 0x40;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'SHPIX[]', pi, d\n );\n }\n\n fv.setRelative(p, p, d);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// IP[] Interpolate Point\n// 0x39\nfunction IP(state) {\n const stack = state.stack;\n const rp1i = state.rp1;\n const rp2i = state.rp2;\n let loop = state.loop;\n const rp1 = state.z0[rp1i];\n const rp2 = state.z1[rp2i];\n const fv = state.fv;\n const pv = state.dpv;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'IP[]', pi, rp1i, '<->', rp2i\n );\n }\n\n fv.interpolate(p, rp1, rp2, pv);\n\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// MSIRP[a] Move Stack Indirect Relative Point\n// 0x3A-0x3B\nfunction MSIRP(a, state) {\n const stack = state.stack;\n const d = stack.pop() / 64;\n const pi = stack.pop();\n const p = state.z1[pi];\n const rp0 = state.z0[state.rp0];\n const fv = state.fv;\n const pv = state.pv;\n\n fv.setRelative(p, rp0, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) console.log(state.step, 'MSIRP[' + a + ']', d, pi);\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (a) state.rp0 = pi;\n}\n\n// ALIGNRP[] Align to reference point.\n// 0x3C\nfunction ALIGNRP(state) {\n const stack = state.stack;\n const rp0i = state.rp0;\n const rp0 = state.z0[rp0i];\n let loop = state.loop;\n const fv = state.fv;\n const pv = state.pv;\n const z1 = state.z1;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z1[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'ALIGNRP[]', pi\n );\n }\n\n fv.setRelative(p, rp0, 0, pv);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// RTG[] Round To Double Grid\n// 0x3D\nfunction RTDG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTDG[]');\n\n state.round = roundToDoubleGrid;\n}\n\n// MIAP[a] Move Indirect Absolute Point\n// 0x3E-0x3F\nfunction MIAP(round, state) {\n const stack = state.stack;\n const n = stack.pop();\n const pi = stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n let cv = state.cvt[n];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n 'MIAP[' + round + ']',\n n, '(', cv, ')', pi\n );\n }\n\n let d = pv.distance(p, HPZero);\n\n if (round) {\n if (Math.abs(d - cv) < state.cvCutIn) d = cv;\n\n d = state.round(d);\n }\n\n fv.setRelative(p, HPZero, d, pv);\n\n if (state.zp0 === 0) {\n p.xo = p.x;\n p.yo = p.y;\n }\n\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// NPUSB[] PUSH N Bytes\n// 0x40\nfunction NPUSHB(state) {\n const prog = state.prog;\n let ip = state.ip;\n const stack = state.stack;\n\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHB[]', n);\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// NPUSHW[] PUSH N Words\n// 0x41\nfunction NPUSHW(state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHW[]', n);\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// WS[] Write Store\n// 0x42\nfunction WS(state) {\n const stack = state.stack;\n let store = state.store;\n\n if (!store) store = state.store = [];\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WS', v, l);\n\n store[l] = v;\n}\n\n// RS[] Read Store\n// 0x43\nfunction RS(state) {\n const stack = state.stack;\n const store = state.store;\n\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RS', l);\n\n const v = (store && store[l]) || 0;\n\n stack.push(v);\n}\n\n// WCVTP[] Write Control Value Table in Pixel units\n// 0x44\nfunction WCVTP(state) {\n const stack = state.stack;\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTP', v, l);\n\n state.cvt[l] = v / 0x40;\n}\n\n// RCVT[] Read Control Value Table entry\n// 0x45\nfunction RCVT(state) {\n const stack = state.stack;\n const cvte = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RCVT', cvte);\n\n stack.push(state.cvt[cvte] * 0x40);\n}\n\n// GC[] Get Coordinate projected onto the projection vector\n// 0x46-0x47\nfunction GC(a, state) {\n const stack = state.stack;\n const pi = stack.pop();\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log(state.step, 'GC[' + a + ']', pi);\n\n stack.push(state.dpv.distance(p, HPZero, a, false) * 0x40);\n}\n\n// MD[a] Measure Distance\n// 0x49-0x4A\nfunction MD(a, state) {\n const stack = state.stack;\n const pi2 = stack.pop();\n const pi1 = stack.pop();\n const p2 = state.z1[pi2];\n const p1 = state.z0[pi1];\n const d = state.dpv.distance(p1, p2, a, a);\n\n if (exports.DEBUG) console.log(state.step, 'MD[' + a + ']', pi2, pi1, '->', d);\n\n state.stack.push(Math.round(d * 64));\n}\n\n// MPPEM[] Measure Pixels Per EM\n// 0x4B\nfunction MPPEM(state) {\n if (exports.DEBUG) console.log(state.step, 'MPPEM[]');\n state.stack.push(state.ppem);\n}\n\n// FLIPON[] set the auto FLIP Boolean to ON\n// 0x4D\nfunction FLIPON(state) {\n if (exports.DEBUG) console.log(state.step, 'FLIPON[]');\n state.autoFlip = true;\n}\n\n// LT[] Less Than\n// 0x50\nfunction LT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LT[]', e2, e1);\n\n stack.push(e1 < e2 ? 1 : 0);\n}\n\n// LTEQ[] Less Than or EQual\n// 0x53\nfunction LTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LTEQ[]', e2, e1);\n\n stack.push(e1 <= e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than\n// 0x52\nfunction GT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GT[]', e2, e1);\n\n stack.push(e1 > e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than or EQual\n// 0x53\nfunction GTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GTEQ[]', e2, e1);\n\n stack.push(e1 >= e2 ? 1 : 0);\n}\n\n// EQ[] EQual\n// 0x54\nfunction EQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EQ[]', e2, e1);\n\n stack.push(e2 === e1 ? 1 : 0);\n}\n\n// NEQ[] Not EQual\n// 0x55\nfunction NEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEQ[]', e2, e1);\n\n stack.push(e2 !== e1 ? 1 : 0);\n}\n\n// ODD[] ODD\n// 0x56\nfunction ODD(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ODD[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 1 : 0);\n}\n\n// EVEN[] EVEN\n// 0x57\nfunction EVEN(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EVEN[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 0 : 1);\n}\n\n// IF[] IF test\n// 0x58\nfunction IF(state) {\n let test = state.stack.pop();\n let ins;\n\n if (exports.DEBUG) console.log(state.step, 'IF[]', test);\n\n // if test is true it just continues\n // if not the ip is skipped until matching ELSE or EIF\n if (!test) {\n skip(state, true);\n\n if (exports.DEBUG) console.log(state.step, ins === 0x1B ? 'ELSE[]' : 'EIF[]');\n }\n}\n\n// EIF[] End IF\n// 0x59\nfunction EIF(state) {\n // this can be reached normally when\n // executing an else branch.\n // -> just ignore it\n\n if (exports.DEBUG) console.log(state.step, 'EIF[]');\n}\n\n// AND[] logical AND\n// 0x5A\nfunction AND(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'AND[]', e2, e1);\n\n stack.push(e2 && e1 ? 1 : 0);\n}\n\n// OR[] logical OR\n// 0x5B\nfunction OR(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'OR[]', e2, e1);\n\n stack.push(e2 || e1 ? 1 : 0);\n}\n\n// NOT[] logical NOT\n// 0x5C\nfunction NOT(state) {\n const stack = state.stack;\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NOT[]', e);\n\n stack.push(e ? 0 : 1);\n}\n\n// DELTAP1[] DELTA exception P1\n// DELTAP2[] DELTA exception P2\n// DELTAP3[] DELTA exception P3\n// 0x5D, 0x71, 0x72\nfunction DELTAP123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const fv = state.fv;\n const pv = state.pv;\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n const z0 = state.z0;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAP[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const pi = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n if (exports.DEBUG) console.log(state.step, 'DELTAPFIX', pi, 'by', mag * ds);\n\n const p = z0[pi];\n fv.setRelative(p, p, mag * ds, pv);\n }\n}\n\n// SDB[] Set Delta Base in the graphics state\n// 0x5E\nfunction SDB(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDB[]', n);\n\n state.deltaBase = n;\n}\n\n// SDS[] Set Delta Shift in the graphics state\n// 0x5F\nfunction SDS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDS[]', n);\n\n state.deltaShift = Math.pow(0.5, n);\n}\n\n// ADD[] ADD\n// 0x60\nfunction ADD(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ADD[]', n2, n1);\n\n stack.push(n1 + n2);\n}\n\n// SUB[] SUB\n// 0x61\nfunction SUB(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SUB[]', n2, n1);\n\n stack.push(n1 - n2);\n}\n\n// DIV[] DIV\n// 0x62\nfunction DIV(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'DIV[]', n2, n1);\n\n stack.push(n1 * 64 / n2);\n}\n\n// MUL[] MUL\n// 0x63\nfunction MUL(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MUL[]', n2, n1);\n\n stack.push(n1 * n2 / 64);\n}\n\n// ABS[] ABSolute value\n// 0x64\nfunction ABS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ABS[]', n);\n\n stack.push(Math.abs(n));\n}\n\n// NEG[] NEGate\n// 0x65\nfunction NEG(state) {\n const stack = state.stack;\n let n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEG[]', n);\n\n stack.push(-n);\n}\n\n// FLOOR[] FLOOR\n// 0x66\nfunction FLOOR(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'FLOOR[]', n);\n\n stack.push(Math.floor(n / 0x40) * 0x40);\n}\n\n// CEILING[] CEILING\n// 0x67\nfunction CEILING(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CEILING[]', n);\n\n stack.push(Math.ceil(n / 0x40) * 0x40);\n}\n\n// ROUND[ab] ROUND value\n// 0x68-0x6B\nfunction ROUND(dt, state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROUND[]');\n\n stack.push(state.round(n / 0x40) * 0x40);\n}\n\n// WCVTF[] Write Control Value Table in Funits\n// 0x70\nfunction WCVTF(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTF[]', v, l);\n\n state.cvt[l] = v * state.ppem / state.font.unitsPerEm;\n}\n\n// DELTAC1[] DELTA exception C1\n// DELTAC2[] DELTA exception C2\n// DELTAC3[] DELTA exception C3\n// 0x73, 0x74, 0x75\nfunction DELTAC123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAC[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const c = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n\n const delta = mag * ds;\n\n if (exports.DEBUG) console.log(state.step, 'DELTACFIX', c, 'by', delta);\n\n state.cvt[c] += delta;\n }\n}\n\n// SROUND[] Super ROUND\n// 0x76\nfunction SROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = 0.5;\n break;\n case 0x40:\n period = 1;\n break;\n case 0x80:\n period = 2;\n break;\n default:\n throw new Error('invalid SROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default: throw new Error('invalid SROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// S45ROUND[] Super ROUND 45 degrees\n// 0x77\nfunction S45ROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'S45ROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = Math.sqrt(2) / 2;\n break;\n case 0x40:\n period = Math.sqrt(2);\n break;\n case 0x80:\n period = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// ROFF[] Round Off\n// 0x7A\nfunction ROFF(state) {\n if (exports.DEBUG) console.log(state.step, 'ROFF[]');\n\n state.round = roundOff;\n}\n\n// RUTG[] Round Up To Grid\n// 0x7C\nfunction RUTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RUTG[]');\n\n state.round = roundUpToGrid;\n}\n\n// RDTG[] Round Down To Grid\n// 0x7D\nfunction RDTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RDTG[]');\n\n state.round = roundDownToGrid;\n}\n\n// SCANCTRL[] SCAN conversion ConTRoL\n// 0x85\nfunction SCANCTRL(state) {\n const n = state.stack.pop();\n\n // ignored by opentype.js\n\n if (exports.DEBUG) console.log(state.step, 'SCANCTRL[]', n);\n}\n\n// SDPVTL[a] Set Dual Projection Vector To Line\n// 0x86-0x87\nfunction SDPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log(state.step, 'SDPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.dpv = getUnitVector(dx, dy);\n}\n\n// GETINFO[] GET INFOrmation\n// 0x88\nfunction GETINFO(state) {\n const stack = state.stack;\n const sel = stack.pop();\n let r = 0;\n\n if (exports.DEBUG) console.log(state.step, 'GETINFO[]', sel);\n\n // v35 as in no subpixel hinting\n if (sel & 0x01) r = 35;\n\n // TODO rotation and stretch currently not supported\n // and thus those GETINFO are always 0.\n\n // opentype.js is always gray scaling\n if (sel & 0x20) r |= 0x1000;\n\n stack.push(r);\n}\n\n// ROLL[] ROLL the top three stack elements\n// 0x8A\nfunction ROLL(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROLL[]');\n\n stack.push(b);\n stack.push(a);\n stack.push(c);\n}\n\n// MAX[] MAXimum of top two stack elements\n// 0x8B\nfunction MAX(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MAX[]', e2, e1);\n\n stack.push(Math.max(e1, e2));\n}\n\n// MIN[] MINimum of top two stack elements\n// 0x8C\nfunction MIN(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MIN[]', e2, e1);\n\n stack.push(Math.min(e1, e2));\n}\n\n// SCANTYPE[] SCANTYPE\n// 0x8D\nfunction SCANTYPE(state) {\n const n = state.stack.pop();\n // ignored by opentype.js\n if (exports.DEBUG) console.log(state.step, 'SCANTYPE[]', n);\n}\n\n// INSTCTRL[] INSTCTRL\n// 0x8D\nfunction INSTCTRL(state) {\n const s = state.stack.pop();\n let v = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'INSTCTRL[]', s, v);\n\n switch (s) {\n case 1 : state.inhibitGridFit = !!v; return;\n case 2 : state.ignoreCvt = !!v; return;\n default: throw new Error('invalid INSTCTRL[] selector');\n }\n}\n\n// PUSHB[abc] PUSH Bytes\n// 0xB0-0xB7\nfunction PUSHB(n, state) {\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n if (exports.DEBUG) console.log(state.step, 'PUSHB[' + n + ']');\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// PUSHW[abc] PUSH Words\n// 0xB8-0xBF\nfunction PUSHW(n, state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.ip, 'PUSHW[' + n + ']');\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// MDRP[abcde] Move Direct Relative Point\n// 0xD0-0xEF\n// (if indirect is 0)\n//\n// and\n//\n// MIRP[abcde] Move Indirect Relative Point\n// 0xE0-0xFF\n// (if indirect is 1)\n\nfunction MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) {\n const stack = state.stack;\n const cvte = indirect && stack.pop();\n const pi = stack.pop();\n const rp0i = state.rp0;\n const rp = state.z0[rp0i];\n const p = state.z1[pi];\n\n const md = state.minDis;\n const fv = state.fv;\n const pv = state.dpv;\n let od; // original distance\n let d; // moving distance\n let sign; // sign of distance\n let cv;\n\n d = od = pv.distance(p, rp, true, true);\n sign = d >= 0 ? 1 : -1; // Math.sign would be 0 in case of 0\n\n // TODO consider autoFlip\n d = Math.abs(d);\n\n if (indirect) {\n cv = state.cvt[cvte];\n\n if (ro && Math.abs(d - cv) < state.cvCutIn) d = cv;\n }\n\n if (keepD && d < md) d = md;\n\n if (ro) d = state.round(d);\n\n fv.setRelative(p, rp, sign * d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (indirect ? 'MIRP[' : 'MDRP[') +\n (setRp0 ? 'M' : 'm') +\n (keepD ? '>' : '_') +\n (ro ? 'R' : '_') +\n (dt === 0 ? 'Gr' : (dt === 1 ? 'Bl' : (dt === 2 ? 'Wh' : ''))) +\n ']',\n indirect ?\n cvte + '(' + state.cvt[cvte] + ',' + cv + ')' :\n '',\n pi,\n '(d =', od, '->', sign * d, ')'\n );\n }\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (setRp0) state.rp0 = pi;\n}\n\n/*\n* The instruction table.\n*/\ninstructionTable = [\n /* 0x00 */ SVTCA.bind(undefined, yUnitVector),\n /* 0x01 */ SVTCA.bind(undefined, xUnitVector),\n /* 0x02 */ SPVTCA.bind(undefined, yUnitVector),\n /* 0x03 */ SPVTCA.bind(undefined, xUnitVector),\n /* 0x04 */ SFVTCA.bind(undefined, yUnitVector),\n /* 0x05 */ SFVTCA.bind(undefined, xUnitVector),\n /* 0x06 */ SPVTL.bind(undefined, 0),\n /* 0x07 */ SPVTL.bind(undefined, 1),\n /* 0x08 */ SFVTL.bind(undefined, 0),\n /* 0x09 */ SFVTL.bind(undefined, 1),\n /* 0x0A */ SPVFS,\n /* 0x0B */ SFVFS,\n /* 0x0C */ GPV,\n /* 0x0D */ GFV,\n /* 0x0E */ SFVTPV,\n /* 0x0F */ ISECT,\n /* 0x10 */ SRP0,\n /* 0x11 */ SRP1,\n /* 0x12 */ SRP2,\n /* 0x13 */ SZP0,\n /* 0x14 */ SZP1,\n /* 0x15 */ SZP2,\n /* 0x16 */ SZPS,\n /* 0x17 */ SLOOP,\n /* 0x18 */ RTG,\n /* 0x19 */ RTHG,\n /* 0x1A */ SMD,\n /* 0x1B */ ELSE,\n /* 0x1C */ JMPR,\n /* 0x1D */ SCVTCI,\n /* 0x1E */ undefined, // TODO SSWCI\n /* 0x1F */ undefined, // TODO SSW\n /* 0x20 */ DUP,\n /* 0x21 */ POP,\n /* 0x22 */ CLEAR,\n /* 0x23 */ SWAP,\n /* 0x24 */ DEPTH,\n /* 0x25 */ CINDEX,\n /* 0x26 */ MINDEX,\n /* 0x27 */ undefined, // TODO ALIGNPTS\n /* 0x28 */ undefined,\n /* 0x29 */ undefined, // TODO UTP\n /* 0x2A */ LOOPCALL,\n /* 0x2B */ CALL,\n /* 0x2C */ FDEF,\n /* 0x2D */ undefined, // ENDF (eaten by FDEF)\n /* 0x2E */ MDAP.bind(undefined, 0),\n /* 0x2F */ MDAP.bind(undefined, 1),\n /* 0x30 */ IUP.bind(undefined, yUnitVector),\n /* 0x31 */ IUP.bind(undefined, xUnitVector),\n /* 0x32 */ SHP.bind(undefined, 0),\n /* 0x33 */ SHP.bind(undefined, 1),\n /* 0x34 */ SHC.bind(undefined, 0),\n /* 0x35 */ SHC.bind(undefined, 1),\n /* 0x36 */ SHZ.bind(undefined, 0),\n /* 0x37 */ SHZ.bind(undefined, 1),\n /* 0x38 */ SHPIX,\n /* 0x39 */ IP,\n /* 0x3A */ MSIRP.bind(undefined, 0),\n /* 0x3B */ MSIRP.bind(undefined, 1),\n /* 0x3C */ ALIGNRP,\n /* 0x3D */ RTDG,\n /* 0x3E */ MIAP.bind(undefined, 0),\n /* 0x3F */ MIAP.bind(undefined, 1),\n /* 0x40 */ NPUSHB,\n /* 0x41 */ NPUSHW,\n /* 0x42 */ WS,\n /* 0x43 */ RS,\n /* 0x44 */ WCVTP,\n /* 0x45 */ RCVT,\n /* 0x46 */ GC.bind(undefined, 0),\n /* 0x47 */ GC.bind(undefined, 1),\n /* 0x48 */ undefined, // TODO SCFS\n /* 0x49 */ MD.bind(undefined, 0),\n /* 0x4A */ MD.bind(undefined, 1),\n /* 0x4B */ MPPEM,\n /* 0x4C */ undefined, // TODO MPS\n /* 0x4D */ FLIPON,\n /* 0x4E */ undefined, // TODO FLIPOFF\n /* 0x4F */ undefined, // TODO DEBUG\n /* 0x50 */ LT,\n /* 0x51 */ LTEQ,\n /* 0x52 */ GT,\n /* 0x53 */ GTEQ,\n /* 0x54 */ EQ,\n /* 0x55 */ NEQ,\n /* 0x56 */ ODD,\n /* 0x57 */ EVEN,\n /* 0x58 */ IF,\n /* 0x59 */ EIF,\n /* 0x5A */ AND,\n /* 0x5B */ OR,\n /* 0x5C */ NOT,\n /* 0x5D */ DELTAP123.bind(undefined, 1),\n /* 0x5E */ SDB,\n /* 0x5F */ SDS,\n /* 0x60 */ ADD,\n /* 0x61 */ SUB,\n /* 0x62 */ DIV,\n /* 0x63 */ MUL,\n /* 0x64 */ ABS,\n /* 0x65 */ NEG,\n /* 0x66 */ FLOOR,\n /* 0x67 */ CEILING,\n /* 0x68 */ ROUND.bind(undefined, 0),\n /* 0x69 */ ROUND.bind(undefined, 1),\n /* 0x6A */ ROUND.bind(undefined, 2),\n /* 0x6B */ ROUND.bind(undefined, 3),\n /* 0x6C */ undefined, // TODO NROUND[ab]\n /* 0x6D */ undefined, // TODO NROUND[ab]\n /* 0x6E */ undefined, // TODO NROUND[ab]\n /* 0x6F */ undefined, // TODO NROUND[ab]\n /* 0x70 */ WCVTF,\n /* 0x71 */ DELTAP123.bind(undefined, 2),\n /* 0x72 */ DELTAP123.bind(undefined, 3),\n /* 0x73 */ DELTAC123.bind(undefined, 1),\n /* 0x74 */ DELTAC123.bind(undefined, 2),\n /* 0x75 */ DELTAC123.bind(undefined, 3),\n /* 0x76 */ SROUND,\n /* 0x77 */ S45ROUND,\n /* 0x78 */ undefined, // TODO JROT[]\n /* 0x79 */ undefined, // TODO JROF[]\n /* 0x7A */ ROFF,\n /* 0x7B */ undefined,\n /* 0x7C */ RUTG,\n /* 0x7D */ RDTG,\n /* 0x7E */ POP, // actually SANGW, supposed to do only a pop though\n /* 0x7F */ POP, // actually AA, supposed to do only a pop though\n /* 0x80 */ undefined, // TODO FLIPPT\n /* 0x81 */ undefined, // TODO FLIPRGON\n /* 0x82 */ undefined, // TODO FLIPRGOFF\n /* 0x83 */ undefined,\n /* 0x84 */ undefined,\n /* 0x85 */ SCANCTRL,\n /* 0x86 */ SDPVTL.bind(undefined, 0),\n /* 0x87 */ SDPVTL.bind(undefined, 1),\n /* 0x88 */ GETINFO,\n /* 0x89 */ undefined, // TODO IDEF\n /* 0x8A */ ROLL,\n /* 0x8B */ MAX,\n /* 0x8C */ MIN,\n /* 0x8D */ SCANTYPE,\n /* 0x8E */ INSTCTRL,\n /* 0x8F */ undefined,\n /* 0x90 */ undefined,\n /* 0x91 */ undefined,\n /* 0x92 */ undefined,\n /* 0x93 */ undefined,\n /* 0x94 */ undefined,\n /* 0x95 */ undefined,\n /* 0x96 */ undefined,\n /* 0x97 */ undefined,\n /* 0x98 */ undefined,\n /* 0x99 */ undefined,\n /* 0x9A */ undefined,\n /* 0x9B */ undefined,\n /* 0x9C */ undefined,\n /* 0x9D */ undefined,\n /* 0x9E */ undefined,\n /* 0x9F */ undefined,\n /* 0xA0 */ undefined,\n /* 0xA1 */ undefined,\n /* 0xA2 */ undefined,\n /* 0xA3 */ undefined,\n /* 0xA4 */ undefined,\n /* 0xA5 */ undefined,\n /* 0xA6 */ undefined,\n /* 0xA7 */ undefined,\n /* 0xA8 */ undefined,\n /* 0xA9 */ undefined,\n /* 0xAA */ undefined,\n /* 0xAB */ undefined,\n /* 0xAC */ undefined,\n /* 0xAD */ undefined,\n /* 0xAE */ undefined,\n /* 0xAF */ undefined,\n /* 0xB0 */ PUSHB.bind(undefined, 1),\n /* 0xB1 */ PUSHB.bind(undefined, 2),\n /* 0xB2 */ PUSHB.bind(undefined, 3),\n /* 0xB3 */ PUSHB.bind(undefined, 4),\n /* 0xB4 */ PUSHB.bind(undefined, 5),\n /* 0xB5 */ PUSHB.bind(undefined, 6),\n /* 0xB6 */ PUSHB.bind(undefined, 7),\n /* 0xB7 */ PUSHB.bind(undefined, 8),\n /* 0xB8 */ PUSHW.bind(undefined, 1),\n /* 0xB9 */ PUSHW.bind(undefined, 2),\n /* 0xBA */ PUSHW.bind(undefined, 3),\n /* 0xBB */ PUSHW.bind(undefined, 4),\n /* 0xBC */ PUSHW.bind(undefined, 5),\n /* 0xBD */ PUSHW.bind(undefined, 6),\n /* 0xBE */ PUSHW.bind(undefined, 7),\n /* 0xBF */ PUSHW.bind(undefined, 8),\n /* 0xC0 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 0),\n /* 0xC1 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 1),\n /* 0xC2 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 2),\n /* 0xC3 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 3),\n /* 0xC4 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 0),\n /* 0xC5 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 1),\n /* 0xC6 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 2),\n /* 0xC7 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 3),\n /* 0xC8 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 0),\n /* 0xC9 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 1),\n /* 0xCA */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 2),\n /* 0xCB */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 3),\n /* 0xCC */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 0),\n /* 0xCD */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 1),\n /* 0xCE */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 2),\n /* 0xCF */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 3),\n /* 0xD0 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 0),\n /* 0xD1 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 1),\n /* 0xD2 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 2),\n /* 0xD3 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 3),\n /* 0xD4 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 0),\n /* 0xD5 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 1),\n /* 0xD6 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 2),\n /* 0xD7 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 3),\n /* 0xD8 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 0),\n /* 0xD9 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 1),\n /* 0xDA */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 2),\n /* 0xDB */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 3),\n /* 0xDC */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 0),\n /* 0xDD */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 1),\n /* 0xDE */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 2),\n /* 0xDF */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 3),\n /* 0xE0 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 0),\n /* 0xE1 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 1),\n /* 0xE2 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 2),\n /* 0xE3 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 3),\n /* 0xE4 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 0),\n /* 0xE5 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 1),\n /* 0xE6 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 2),\n /* 0xE7 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 3),\n /* 0xE8 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 0),\n /* 0xE9 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 1),\n /* 0xEA */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 2),\n /* 0xEB */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 3),\n /* 0xEC */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 0),\n /* 0xED */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 1),\n /* 0xEE */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 2),\n /* 0xEF */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 3),\n /* 0xF0 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 0),\n /* 0xF1 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 1),\n /* 0xF2 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 2),\n /* 0xF3 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 3),\n /* 0xF4 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 0),\n /* 0xF5 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 1),\n /* 0xF6 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 2),\n /* 0xF7 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 3),\n /* 0xF8 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 0),\n /* 0xF9 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 1),\n /* 0xFA */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 2),\n /* 0xFB */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 3),\n /* 0xFC */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 0),\n /* 0xFD */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 1),\n /* 0xFE */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 2),\n /* 0xFF */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 3)\n];\n\nexport default Hinting;\n\n/*****************************\n Mathematical Considerations\n******************************\n\nfv ... refers to freedom vector\npv ... refers to projection vector\nrp ... refers to reference point\np ... refers to to point being operated on\nd ... refers to distance\n\nSETRELATIVE:\n============\n\ncase freedom vector == x-axis:\n------------------------------\n\n (pv)\n .-'\n rpd .-'\n .-*\n d .-'90°'\n .-' '\n .-' '\n *-' ' b\n rp '\n '\n '\n p *----------*-------------- (fv)\n pm\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b\n\n y - rpdy = pvns * (x- rpdx)\n\n y = p.y\n\n x = rpdx + ( p.y - rpdy ) / pvns\n\n\ncase freedom vector == y-axis:\n------------------------------\n\n * pm\n |\\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\ b\n | \\\n | \\\n | \\ .-' (pv)\n | 90° \\.-'\n | .-'* rpd\n | .-'\n * *-' d\n p rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns ... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n x = p.x\n\n y = rpdy + pvns * (p.x - rpdx)\n\n\n\ngeneric case:\n-------------\n\n\n .'(fv)\n .'\n .* pm\n .' !\n .' .\n .' !\n .' . b\n .' !\n * .\n p !\n 90° . ... (pv)\n ...-*-'''\n ...---''' rpd\n ...---''' d\n *--'''\n rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n equation of freedom vector line:\n fvs ... slope of freedom vector (=fy/fx)\n\n y - py = fvs * (x - px)\n\n\n on pm both equations are true for same x/y\n\n y - rpdy = pvns * (x - rpdx)\n\n y - py = fvs * (x - px)\n\n form to y and set equal:\n\n pvns * (x - rpdx) + rpdy = fvs * (x - px) + py\n\n expand:\n\n pvns * x - pvns * rpdx + rpdy = fvs * x - fvs * px + py\n\n switch:\n\n fvs * x - fvs * px + py = pvns * x - pvns * rpdx + rpdy\n\n solve for x:\n\n fvs * x - pvns * x = fvs * px - pvns * rpdx - py + rpdy\n\n\n\n fvs * px - pvns * rpdx + rpdy - py\n x = -----------------------------------\n fvs - pvns\n\n and:\n\n y = fvs * (x - px) + py\n\n\n\nINTERPOLATE:\n============\n\nExamples of point interpolation.\n\nThe weight of the movement of the reference point gets bigger\nthe further the other reference point is away, thus the safest\noption (that is avoiding 0/0 divisions) is to weight the\noriginal distance of the other point by the sum of both distances.\n\nIf the sum of both distances is 0, then move the point by the\narithmetic average of the movement of both reference points.\n\n\n\n\n (+6)\n rp1o *---->*rp1\n . . (+12)\n . . rp2o *---------->* rp2\n . . . .\n . . . .\n . 10 20 . .\n |.........|...................| .\n . . .\n . . (+8) .\n po *------>*p .\n . . .\n . 12 . 24 .\n |...........|.......................|\n 36\n\n\n-------\n\n\n\n (+10)\n rp1o *-------->*rp1\n . . (-10)\n . . rp2 *<---------* rpo2\n . . . .\n . . . .\n . 10 . 30 . .\n |.........|.............................|\n . .\n . (+5) .\n po *--->* p .\n . . .\n . . 20 .\n |....|..............|\n 5 15\n\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .\n rp2o *-------->*rp2\n\n\n (+10)\n po *-------->* p\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .(+30)\n rp2o *---------------------------->*rp2\n\n\n (+25)\n po *----------------------->* p\n\n\n\nvim: set ts=4 sw=4 expandtab:\n*****/\n","/**\n * Converts a string into a list of tokens.\n */\n\n/**\n * Create a new token\n * @param {string} char a single char\n */\nfunction Token(char) {\n this.char = char;\n this.state = {};\n this.activeState = null;\n}\n\n/**\n * Create a new context range\n * @param {number} startIndex range start index\n * @param {number} endOffset range end index offset\n * @param {string} contextName owner context name\n */\nfunction ContextRange(startIndex, endOffset, contextName) {\n this.contextName = contextName;\n this.startIndex = startIndex;\n this.endOffset = endOffset;\n}\n\n/**\n * Check context start and end\n * @param {string} contextName a unique context name\n * @param {function} checkStart a predicate function the indicates a context's start\n * @param {function} checkEnd a predicate function the indicates a context's end\n */\nfunction ContextChecker(contextName, checkStart, checkEnd) {\n this.contextName = contextName;\n this.openRange = null;\n this.ranges = [];\n this.checkStart = checkStart;\n this.checkEnd = checkEnd;\n}\n\n/**\n * @typedef ContextParams\n * @type Object\n * @property {array} context context items\n * @property {number} currentIndex current item index\n */\n\n/**\n * Create a context params\n * @param {array} context a list of items\n * @param {number} currentIndex current item index\n */\nfunction ContextParams(context, currentIndex) {\n this.context = context;\n this.index = currentIndex;\n this.length = context.length;\n this.current = context[currentIndex];\n this.backtrack = context.slice(0, currentIndex);\n this.lookahead = context.slice(currentIndex + 1);\n}\n\n/**\n * Create an event instance\n * @param {string} eventId event unique id\n */\nfunction Event(eventId) {\n this.eventId = eventId;\n this.subscribers = [];\n}\n\n/**\n * Initialize a core events and auto subscribe required event handlers\n * @param {any} events an object that enlists core events handlers\n */\nfunction initializeCoreEvents(events) {\n const coreEvents = [\n 'start', 'end', 'next', 'newToken', 'contextStart',\n 'contextEnd', 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD', 'updateContextsRanges'\n ];\n\n coreEvents.forEach(eventId => {\n Object.defineProperty(this.events, eventId, {\n value: new Event(eventId)\n });\n });\n\n if (!!events) {\n coreEvents.forEach(eventId => {\n const event = events[eventId];\n if (typeof event === 'function') {\n this.events[eventId].subscribe(event);\n }\n });\n }\n const requiresContextUpdate = [\n 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD'\n ];\n requiresContextUpdate.forEach(eventId => {\n this.events[eventId].subscribe(\n this.updateContextsRanges\n );\n });\n}\n\n/**\n * Converts a string into a list of tokens\n * @param {any} events tokenizer core events\n */\nfunction Tokenizer(events) {\n this.tokens = [];\n this.registeredContexts = {};\n this.contextCheckers = [];\n this.events = {};\n this.registeredModifiers = [];\n\n initializeCoreEvents.call(this, events);\n}\n\n/**\n * Sets the state of a token, usually called by a state modifier.\n * @param {string} key state item key\n * @param {any} value state item value\n */\nToken.prototype.setState = function(key, value) {\n this.state[key] = value;\n this.activeState = { key, value: this.state[key] };\n return this.activeState;\n};\n\nToken.prototype.getState = function (stateId) {\n return this.state[stateId] || null;\n};\n\n/**\n * Checks if an index exists in the tokens list.\n * @param {number} index token index\n */\nTokenizer.prototype.inboundIndex = function(index) {\n return index >= 0 && index < this.tokens.length;\n};\n\n/**\n * Compose and apply a list of operations (replace, update, delete)\n * @param {array} RUDs replace, update and delete operations\n * TODO: Perf. Optimization (lengthBefore === lengthAfter ? dispatch once)\n */\nTokenizer.prototype.composeRUD = function (RUDs) {\n const silent = true;\n const state = RUDs.map(RUD => (\n this[RUD[0]].apply(this, RUD.slice(1).concat(silent))\n ));\n const hasFAILObject = obj => (\n typeof obj === 'object' &&\n obj.hasOwnProperty('FAIL')\n );\n if (state.every(hasFAILObject)) {\n return {\n FAIL: `composeRUD: one or more operations hasn't completed successfully`,\n report: state.filter(hasFAILObject)\n };\n }\n this.dispatch('composeRUD', [state.filter(op => !hasFAILObject(op))]);\n};\n\n/**\n * Replace a range of tokens with a list of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {token} tokens a list of tokens to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceRange = function (startIndex, offset, tokens, silent) {\n offset = offset !== null ? offset : this.tokens.length;\n const isTokenType = tokens.every(token => token instanceof Token);\n if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {\n const replaced = this.tokens.splice.apply(\n this.tokens, [startIndex, offset].concat(tokens)\n );\n if (!silent) this.dispatch('replaceToken', [startIndex, offset, tokens]);\n return [replaced, tokens];\n } else {\n return { FAIL: 'replaceRange: invalid tokens or startIndex.' };\n }\n};\n\n/**\n * Replace a token with another token\n * @param {number} index token index\n * @param {token} token a token to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceToken = function (index, token, silent) {\n if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) {\n const replaced = this.tokens.splice(index, 1, token);\n if (!silent) this.dispatch('replaceToken', [index, token]);\n return [replaced[0], token];\n } else {\n return { FAIL: 'replaceToken: invalid token or index.' };\n }\n};\n\n/**\n * Removes a range of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeRange = function(startIndex, offset, silent) {\n offset = !isNaN(offset) ? offset : this.tokens.length;\n const tokens = this.tokens.splice(startIndex, offset);\n if (!silent) this.dispatch('removeRange', [tokens, startIndex, offset]);\n return tokens;\n};\n\n/**\n * Remove a token at a certain index\n * @param {number} index token index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeToken = function(index, silent) {\n if (!isNaN(index) && this.inboundIndex(index)) {\n const token = this.tokens.splice(index, 1);\n if (!silent) this.dispatch('removeToken', [token, index]);\n return token;\n } else {\n return { FAIL: 'removeToken: invalid token index.' };\n }\n};\n\n/**\n * Insert a list of tokens at a certain index\n * @param {array} tokens a list of tokens to insert\n * @param {number} index insert the list of tokens at index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.insertToken = function (tokens, index, silent) {\n const tokenType = tokens.every(\n token => token instanceof Token\n );\n if (tokenType) {\n this.tokens.splice.apply(\n this.tokens, [index, 0].concat(tokens)\n );\n if (!silent) this.dispatch('insertToken', [tokens, index]);\n return tokens;\n } else {\n return { FAIL: 'insertToken: invalid token(s).' };\n }\n};\n\n/**\n * A state modifier that is called on 'newToken' event\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a function to update token state\n */\nTokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.events.newToken.subscribe(function(token, contextParams) {\n const conditionParams = [token, contextParams];\n const canApplyModifier = (\n condition === null ||\n condition.apply(this, conditionParams) === true\n );\n const modifierParams = [token, contextParams];\n if (canApplyModifier) {\n let newStateValue = modifier.apply(this, modifierParams);\n token.setState(modifierId, newStateValue);\n }\n });\n this.registeredModifiers.push(modifierId);\n};\n\n/**\n * Subscribe a handler to an event\n * @param {function} eventHandler an event handler function\n */\nEvent.prototype.subscribe = function (eventHandler) {\n if (typeof eventHandler === 'function') {\n return ((this.subscribers.push(eventHandler)) - 1);\n } else {\n return { FAIL: `invalid '${this.eventId}' event handler`};\n }\n};\n\n/**\n * Unsubscribe an event handler\n * @param {string} subsId subscription id\n */\nEvent.prototype.unsubscribe = function (subsId) {\n this.subscribers.splice(subsId, 1);\n};\n\n/**\n * Sets context params current value index\n * @param {number} index context params current value index\n */\nContextParams.prototype.setCurrentIndex = function(index) {\n this.index = index;\n this.current = this.context[index];\n this.backtrack = this.context.slice(0, index);\n this.lookahead = this.context.slice(index + 1);\n};\n\n/**\n * Get an item at an offset from the current value\n * example (current value is 3):\n * 1 2 [3] 4 5 | items values\n * -2 -1 0 1 2 | offset values\n * @param {number} offset an offset from current value index\n */\nContextParams.prototype.get = function (offset) {\n switch (true) {\n case (offset === 0):\n return this.current;\n case (offset < 0 && Math.abs(offset) <= this.backtrack.length):\n return this.backtrack.slice(offset)[0];\n case (offset > 0 && offset <= this.lookahead.length):\n return this.lookahead[offset - 1];\n default:\n return null;\n }\n};\n\n/**\n * Converts a context range into a string value\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.rangeToText = function (range) {\n if (range instanceof ContextRange) {\n return (\n this.getRangeTokens(range)\n .map(token => token.char).join('')\n );\n }\n};\n\n/**\n * Converts all tokens into a string\n */\nTokenizer.prototype.getText = function () {\n return this.tokens.map(token => token.char).join('');\n};\n\n/**\n * Get a context by name\n * @param {string} contextName context name to get\n */\nTokenizer.prototype.getContext = function (contextName) {\n let context = this.registeredContexts[contextName];\n return !!context ? context : null;\n};\n\n/**\n * Subscribes a new event handler to an event\n * @param {string} eventName event name to subscribe to\n * @param {function} eventHandler a function to be invoked on event\n */\nTokenizer.prototype.on = function(eventName, eventHandler) {\n const event = this.events[eventName];\n if (!!event) {\n return event.subscribe(eventHandler);\n } else {\n return null;\n }\n};\n\n/**\n * Dispatches an event\n * @param {string} eventName event name\n * @param {any} args event handler arguments\n */\nTokenizer.prototype.dispatch = function(eventName, args) {\n const event = this.events[eventName];\n if (event instanceof Event) {\n event.subscribers.forEach(subscriber => {\n subscriber.apply(this, args || []);\n });\n }\n};\n\n/**\n * Register a new context checker\n * @param {string} contextName a unique context name\n * @param {function} contextStartCheck a predicate function that returns true on context start\n * @param {function} contextEndCheck a predicate function that returns true on context end\n * TODO: call tokenize on registration to update context ranges with the new context.\n */\nTokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {\n if (!!this.getContext(contextName)) return {\n FAIL:\n `context name '${contextName}' is already registered.`\n };\n if (typeof contextStartCheck !== 'function') return {\n FAIL:\n `missing context start check.`\n };\n if (typeof contextEndCheck !== 'function') return {\n FAIL:\n `missing context end check.`\n };\n const contextCheckers = new ContextChecker(\n contextName, contextStartCheck, contextEndCheck\n );\n this.registeredContexts[contextName] = contextCheckers;\n this.contextCheckers.push(contextCheckers);\n return contextCheckers;\n};\n\n/**\n * Gets a context range tokens\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.getRangeTokens = function(range) {\n const endIndex = range.startIndex + range.endOffset;\n return [].concat(\n this.tokens\n .slice(range.startIndex, endIndex)\n );\n};\n\n/**\n * Gets the ranges of a context\n * @param {string} contextName context name\n */\nTokenizer.prototype.getContextRanges = function(contextName) {\n const context = this.getContext(contextName);\n if (!!context) {\n return context.ranges;\n } else {\n return { FAIL: `context checker '${contextName}' is not registered.` };\n }\n};\n\n/**\n * Resets context ranges to run context update\n */\nTokenizer.prototype.resetContextsRanges = function () {\n const registeredContexts = this.registeredContexts;\n for (const contextName in registeredContexts) {\n if (registeredContexts.hasOwnProperty(contextName)) {\n const context = registeredContexts[contextName];\n context.ranges = [];\n }\n }\n};\n\n/**\n * Updates context ranges\n */\nTokenizer.prototype.updateContextsRanges = function () {\n this.resetContextsRanges();\n const chars = this.tokens.map(token => token.char);\n for (let i = 0; i < chars.length; i++) {\n const contextParams = new ContextParams(chars, i);\n this.runContextCheck(contextParams);\n }\n this.dispatch('updateContextsRanges', [this.registeredContexts]);\n};\n\n/**\n * Sets the end offset of an open range\n * @param {number} offset range end offset\n * @param {string} contextName context name\n */\nTokenizer.prototype.setEndOffset = function (offset, contextName) {\n const startIndex = this.getContext(contextName).openRange.startIndex;\n let range = new ContextRange(startIndex, offset, contextName);\n const ranges = this.getContext(contextName).ranges;\n range.rangeId = `${contextName}.${ranges.length}`;\n ranges.push(range);\n this.getContext(contextName).openRange = null;\n return range;\n};\n\n/**\n * Runs a context check on the current context\n * @param {contextParams} contextParams current context params\n */\nTokenizer.prototype.runContextCheck = function(contextParams) {\n const index = contextParams.index;\n this.contextCheckers.forEach(contextChecker => {\n let contextName = contextChecker.contextName;\n let openRange = this.getContext(contextName).openRange;\n if (!openRange && contextChecker.checkStart(contextParams)) {\n openRange = new ContextRange(index, null, contextName);\n this.getContext(contextName).openRange = openRange;\n this.dispatch('contextStart', [contextName, index]);\n }\n if (!!openRange && contextChecker.checkEnd(contextParams)) {\n const offset = (index - openRange.startIndex) + 1;\n const range = this.setEndOffset(offset, contextName);\n this.dispatch('contextEnd', [contextName, range]);\n }\n });\n};\n\n/**\n * Converts a text into a list of tokens\n * @param {string} text a text to tokenize\n */\nTokenizer.prototype.tokenize = function (text) {\n this.tokens = [];\n this.resetContextsRanges();\n let chars = Array.from(text);\n this.dispatch('start');\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const contextParams = new ContextParams(chars, i);\n this.dispatch('next', [contextParams]);\n this.runContextCheck(contextParams);\n let token = new Token(char);\n this.tokens.push(token);\n this.dispatch('newToken', [token, contextParams]);\n }\n this.dispatch('end', [this.tokens]);\n return this.tokens;\n};\n\nexport default Tokenizer;\nexport { Token, Event, ContextRange, ContextParams };\n","// ╭─┄┄┄────────────────────────┄─────────────────────────────────────────────╮\n// ┊ Character Class Assertions ┊ Checks if a char belongs to a certain class ┊\n// ╰─╾──────────────────────────┄─────────────────────────────────────────────╯\n// jscs:disable maximumLineLength\n/**\n * Check if a char is Arabic\n * @param {string} c a single char\n */\nexport function isArabicChar(c) {\n return /[\\u0600-\\u065F\\u066A-\\u06D2\\u06FA-\\u06FF]/.test(c);\n}\n\n/**\n * Check if a char is an isolated arabic char\n * @param {string} c a single char\n */\nexport function isIsolatedArabicChar(char) {\n return /[\\u0630\\u0690\\u0621\\u0631\\u0661\\u0671\\u0622\\u0632\\u0672\\u0692\\u06C2\\u0623\\u0673\\u0693\\u06C3\\u0624\\u0694\\u06C4\\u0625\\u0675\\u0695\\u06C5\\u06E5\\u0676\\u0696\\u06C6\\u0627\\u0677\\u0697\\u06C7\\u0648\\u0688\\u0698\\u06C8\\u0689\\u0699\\u06C9\\u068A\\u06CA\\u066B\\u068B\\u06CB\\u068C\\u068D\\u06CD\\u06FD\\u068E\\u06EE\\u06FE\\u062F\\u068F\\u06CF\\u06EF]/.test(char);\n}\n\n/**\n * Check if a char is an Arabic Tashkeel char\n * @param {string} c a single char\n */\nexport function isTashkeelArabicChar(char) {\n return /[\\u0600-\\u0605\\u060C-\\u060E\\u0610-\\u061B\\u061E\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]/.test(char);\n}\n\n/**\n * Check if a char is Latin\n * @param {string} c a single char\n */\nexport function isLatinChar(c) {\n return /[A-z]/.test(c);\n}\n\n/**\n * Check if a char is whitespace char\n * @param {string} c a single char\n */\nexport function isWhiteSpace(c) {\n return /\\s/.test(c);\n}\n","/**\n * Query a feature by some of it's properties to lookup a glyph substitution.\n */\n\nimport { ContextParams } from '../tokenizer';\nimport { isTashkeelArabicChar } from '../char';\n\n/**\n * Create feature query instance\n * @param {Font} font opentype font instance\n */\nfunction FeatureQuery(font) {\n this.font = font;\n this.features = {};\n}\n\n/**\n * @typedef SubstitutionAction\n * @type Object\n * @property {number} id substitution type\n * @property {string} tag feature tag\n * @property {any} substitution substitution value(s)\n */\n\n/**\n * Create a substitution action instance\n * @param {SubstitutionAction} action\n */\nfunction SubstitutionAction(action) {\n this.id = action.id;\n this.tag = action.tag;\n this.substitution = action.substitution;\n}\n\n/**\n * Lookup a coverage table\n * @param {number} glyphIndex glyph index\n * @param {CoverageTable} coverage coverage table\n */\nfunction lookupCoverage(glyphIndex, coverage) {\n if (!glyphIndex) return -1;\n switch (coverage.format) {\n case 1:\n return coverage.glyphs.indexOf(glyphIndex);\n\n case 2:\n let ranges = coverage.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (glyphIndex >= range.start && glyphIndex <= range.end) {\n let offset = glyphIndex - range.start;\n return range.index + offset;\n }\n }\n break;\n default:\n return -1; // not found\n }\n return -1;\n}\n\n/**\n * Handle a single substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return glyphIndex + subtable.deltaGlyphId;\n}\n\n/**\n * Handle a single substitution - format 2\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat2(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.substitute[substituteIndex];\n}\n\n/**\n * Lookup a list of coverage tables\n * @param {any} coverageList a list of coverage tables\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction lookupCoverageList(coverageList, contextParams) {\n let lookupList = [];\n for (let i = 0; i < coverageList.length; i++) {\n const coverage = coverageList[i];\n let glyphIndex = contextParams.current;\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n const lookupIndex = lookupCoverage(glyphIndex, coverage);\n if (lookupIndex !== -1) {\n lookupList.push(lookupIndex);\n }\n }\n if (lookupList.length !== coverageList.length) return -1;\n return lookupList;\n}\n\n/**\n * Handle chaining context substitution - format 3\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction chainingSubstitutionFormat3(contextParams, subtable) {\n const lookupsCount = (\n subtable.inputCoverage.length +\n subtable.lookaheadCoverage.length +\n subtable.backtrackCoverage.length\n );\n if (contextParams.context.length < lookupsCount) return [];\n // INPUT LOOKUP //\n let inputLookups = lookupCoverageList(\n subtable.inputCoverage, contextParams\n );\n if (inputLookups === -1) return [];\n // LOOKAHEAD LOOKUP //\n const lookaheadOffset = subtable.inputCoverage.length - 1;\n if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) return [];\n let lookaheadContext = contextParams.lookahead.slice(lookaheadOffset);\n while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) {\n lookaheadContext.shift();\n }\n const lookaheadParams = new ContextParams(lookaheadContext, 0);\n let lookaheadLookups = lookupCoverageList(\n subtable.lookaheadCoverage, lookaheadParams\n );\n // BACKTRACK LOOKUP //\n let backtrackContext = [].concat(contextParams.backtrack);\n backtrackContext.reverse();\n while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) {\n backtrackContext.shift();\n }\n if (backtrackContext.length < subtable.backtrackCoverage.length) return [];\n const backtrackParams = new ContextParams(backtrackContext, 0);\n let backtrackLookups = lookupCoverageList(\n subtable.backtrackCoverage, backtrackParams\n );\n const contextRulesMatch = (\n inputLookups.length === subtable.inputCoverage.length &&\n lookaheadLookups.length === subtable.lookaheadCoverage.length &&\n backtrackLookups.length === subtable.backtrackCoverage.length\n );\n let substitutions = [];\n if (contextRulesMatch) {\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n const subtable = lookupTable.subtables[s];\n const lookup = this.getLookupMethod(lookupTable, subtable);\n const substitutionType = this.getSubstitutionType(lookupTable, subtable);\n if (substitutionType === '12') {\n for (let n = 0; n < inputLookups.length; n++) {\n const glyphIndex = contextParams.get(n);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n }\n }\n }\n }\n }\n return substitutions;\n}\n\n/**\n * Handle ligature substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction ligatureSubstitutionFormat1(contextParams, subtable) {\n // COVERAGE LOOKUP //\n let glyphIndex = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (ligSetIndex === -1) return null;\n // COMPONENTS LOOKUP\n // (!) note, components are ordered in the written direction.\n let ligature;\n let ligatureSet = subtable.ligatureSets[ligSetIndex];\n for (let s = 0; s < ligatureSet.length; s++) {\n ligature = ligatureSet[s];\n for (let l = 0; l < ligature.components.length; l++) {\n const lookaheadItem = contextParams.lookahead[l];\n const component = ligature.components[l];\n if (lookaheadItem !== component) break;\n if (l === ligature.components.length - 1) return ligature;\n }\n }\n return null;\n}\n\n/**\n * Handle decomposition substitution - format 1\n * @param {number} glyphIndex glyph index\n * @param {any} subtable subtable\n */\nfunction decompositionSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.sequences[substituteIndex];\n}\n\n/**\n * Get default script features indexes\n */\nFeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function () {\n const scripts = this.font.tables.gsub.scripts;\n for (let s = 0; s < scripts.length; s++) {\n const script = scripts[s];\n if (script.tag === 'DFLT') return (\n script.script.defaultLangSys.featureIndexes\n );\n }\n return [];\n};\n\n/**\n * Get feature indexes of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {\n const tables = this.font.tables;\n if (!tables.gsub) return [];\n if (!scriptTag) return this.getDefaultScriptFeaturesIndexes();\n const scripts = this.font.tables.gsub.scripts;\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.tag === scriptTag && script.script.defaultLangSys) {\n return script.script.defaultLangSys.featureIndexes;\n } else {\n let langSysRecords = script.langSysRecords;\n if (!!langSysRecords) {\n for (let j = 0; j < langSysRecords.length; j++) {\n const langSysRecord = langSysRecords[j];\n if (langSysRecord.tag === scriptTag) {\n let langSys = langSysRecord.langSys;\n return langSys.featureIndexes;\n }\n }\n }\n }\n }\n return this.getDefaultScriptFeaturesIndexes();\n};\n\n/**\n * Map a feature tag to a gsub feature\n * @param {any} features gsub features\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.mapTagsToFeatures = function (features, scriptTag) {\n let tags = {};\n for (let i = 0; i < features.length; i++) {\n const tag = features[i].tag;\n const feature = features[i].feature;\n tags[tag] = feature;\n }\n this.features[scriptTag].tags = tags;\n};\n\n/**\n * Get features of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeatures = function (scriptTag) {\n let features = this.features[scriptTag];\n if (this.features.hasOwnProperty(scriptTag)) return features;\n const featuresIndexes = this.getScriptFeaturesIndexes(scriptTag);\n if (!featuresIndexes) return null;\n const gsub = this.font.tables.gsub;\n features = featuresIndexes.map(index => gsub.features[index]);\n this.features[scriptTag] = features;\n this.mapTagsToFeatures(features, scriptTag);\n return features;\n};\n\n/**\n * Get substitution type\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {\n const lookupType = lookupTable.lookupType.toString();\n const substFormat = subtable.substFormat.toString();\n return lookupType + substFormat;\n};\n\n/**\n * Get lookup method\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {\n let substitutionType = this.getSubstitutionType(lookupTable, subtable);\n switch (substitutionType) {\n case '11':\n return glyphIndex => singleSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n case '12':\n return glyphIndex => singleSubstitutionFormat2.apply(\n this, [glyphIndex, subtable]\n );\n case '63':\n return contextParams => chainingSubstitutionFormat3.apply(\n this, [contextParams, subtable]\n );\n case '41':\n return contextParams => ligatureSubstitutionFormat1.apply(\n this, [contextParams, subtable]\n );\n case '21':\n return glyphIndex => decompositionSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n default:\n throw new Error(\n `lookupType: ${lookupTable.lookupType} - ` +\n `substFormat: ${subtable.substFormat} ` +\n `is not yet supported`\n );\n }\n};\n\n/**\n * [ LOOKUP TYPES ]\n * -------------------------------\n * Single 1;\n * Multiple 2;\n * Alternate 3;\n * Ligature 4;\n * Context 5;\n * ChainingContext 6;\n * ExtensionSubstitution 7;\n * ReverseChainingContext 8;\n * -------------------------------\n *\n */\n\n/**\n * @typedef FQuery\n * @type Object\n * @param {string} tag feature tag\n * @param {string} script feature script\n * @param {ContextParams} contextParams context params\n */\n\n/**\n * Lookup a feature using a query parameters\n * @param {FQuery} query feature query\n */\nFeatureQuery.prototype.lookupFeature = function (query) {\n let contextParams = query.contextParams;\n let currentIndex = contextParams.index;\n const feature = this.getFeature({\n tag: query.tag, script: query.script\n });\n if (!feature) return new Error(\n `font '${this.font.names.fullName.en}' ` +\n `doesn't support feature '${query.tag}' ` +\n `for script '${query.script}'.`\n );\n const lookups = this.getFeatureLookups(feature);\n const substitutions = [].concat(contextParams.context);\n for (let l = 0; l < lookups.length; l++) {\n const lookupTable = lookups[l];\n const subtables = this.getLookupSubtables(lookupTable);\n for (let s = 0; s < subtables.length; s++) {\n const subtable = subtables[s];\n const substType = this.getSubstitutionType(lookupTable, subtable);\n const lookup = this.getLookupMethod(lookupTable, subtable);\n let substitution;\n switch (substType) {\n case '11':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 11, tag: query.tag, substitution\n }));\n }\n break;\n case '12':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 12, tag: query.tag, substitution\n }));\n }\n break;\n case '63':\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 63, tag: query.tag, substitution\n }));\n }\n break;\n case '41':\n substitution = lookup(contextParams);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 41, tag: query.tag, substitution\n }));\n }\n break;\n case '21':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 21, tag: query.tag, substitution\n }));\n }\n break;\n }\n contextParams = new ContextParams(substitutions, currentIndex);\n if (Array.isArray(substitution) && !substitution.length) continue;\n substitution = null;\n }\n }\n return substitutions.length ? substitutions : null;\n};\n\n/**\n * Checks if a font supports a specific features\n * @param {FQuery} query feature query object\n */\nFeatureQuery.prototype.supports = function (query) {\n if (!query.script) return false;\n this.getScriptFeatures(query.script);\n const supportedScript = this.features.hasOwnProperty(query.script);\n if (!query.tag) return supportedScript;\n const supportedFeature = (\n this.features[query.script].some(feature => feature.tag === query.tag)\n );\n return supportedScript && supportedFeature;\n};\n\n/**\n * Get lookup table subtables\n * @param {any} lookupTable lookup table\n */\nFeatureQuery.prototype.getLookupSubtables = function (lookupTable) {\n return lookupTable.subtables || null;\n};\n\n/**\n * Get lookup table by index\n * @param {number} index lookup table index\n */\nFeatureQuery.prototype.getLookupByIndex = function (index) {\n const lookups = this.font.tables.gsub.lookups;\n return lookups[index] || null;\n};\n\n/**\n * Get lookup tables for a feature\n * @param {string} feature\n */\nFeatureQuery.prototype.getFeatureLookups = function (feature) {\n // TODO: memoize\n return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));\n};\n\n/**\n * Query a feature by it's properties\n * @param {any} query an object that describes the properties of a query\n */\nFeatureQuery.prototype.getFeature = function getFeature(query) {\n if (!this.font) return { FAIL: `No font was found`};\n if (!this.features.hasOwnProperty(query.script)) {\n this.getScriptFeatures(query.script);\n }\n const scriptFeatures = this.features[query.script];\n if (!scriptFeatures) return (\n { FAIL: `No feature for script ${query.script}`}\n );\n if (!scriptFeatures.tags[query.tag]) return null;\n return this.features[query.script].tags[query.tag];\n};\n\nexport default FeatureQuery;\nexport { FeatureQuery, SubstitutionAction };\n","/**\n * Arabic word context checkers\n */\n\nimport { isArabicChar } from '../../../char';\n\nfunction arabicWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? arabic first char\n (prevChar === null && isArabicChar(char)) ||\n // ? arabic char preceded with a non arabic char\n (!isArabicChar(prevChar) && isArabicChar(char))\n );\n}\n\nfunction arabicWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last arabic char\n (nextChar === null) ||\n // ? next char is not arabic\n (!isArabicChar(nextChar))\n );\n}\n\nexport default {\n startCheck: arabicWordStartCheck,\n endCheck: arabicWordEndCheck\n};\n","/**\n * Arabic sentence context checkers\n */\n\nimport { isArabicChar, isWhiteSpace, isTashkeelArabicChar } from '../../../char';\n\nfunction arabicSentenceStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? an arabic char preceded with a non arabic char\n (isArabicChar(char) || isTashkeelArabicChar(char)) &&\n !isArabicChar(prevChar)\n );\n}\n\nfunction arabicSentenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n switch (true) {\n case nextChar === null:\n return true;\n case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)):\n const nextIsWhitespace = isWhiteSpace(nextChar);\n if (!nextIsWhitespace) return true;\n if (nextIsWhitespace) {\n let arabicCharAhead = false;\n arabicCharAhead = (\n contextParams.lookahead.some(\n c => isArabicChar(c) || isTashkeelArabicChar(c)\n )\n );\n if (!arabicCharAhead) return true;\n }\n break;\n default:\n return false;\n }\n}\n\nexport default {\n startCheck: arabicSentenceStartCheck,\n endCheck: arabicSentenceEndCheck\n};\n","import { SubstitutionAction } from './featureQuery';\n\n/**\n * Apply single substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat1(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply single substitution format 2\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat2(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply chaining context substitution format 3\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction chainingSubstitutionFormat3(action, tokens, index) {\n action.substitution.forEach((subst, offset) => {\n const token = tokens[index + offset];\n token.setState(action.tag, subst);\n });\n}\n\n/**\n * Apply ligature substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction ligatureSubstitutionFormat1(action, tokens, index) {\n let token = tokens[index];\n token.setState(action.tag, action.substitution.ligGlyph);\n const compsCount = action.substitution.components.length;\n for (let i = 0; i < compsCount; i++) {\n token = tokens[index + i + 1];\n token.setState('deleted', true);\n }\n}\n\n/**\n * Supported substitutions\n */\nconst SUBSTITUTIONS = {\n 11: singleSubstitutionFormat1,\n 12: singleSubstitutionFormat2,\n 63: chainingSubstitutionFormat3,\n 41: ligatureSubstitutionFormat1\n};\n\n/**\n * Apply substitutions to a list of tokens\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction applySubstitution(action, tokens, index) {\n if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) {\n SUBSTITUTIONS[action.id](action, tokens, index);\n }\n}\n\nexport default applySubstitution;\n","/**\n * Apply Arabic presentation forms to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport { isIsolatedArabicChar, isTashkeelArabicChar } from '../../char';\nimport { SubstitutionAction } from '../featureQuery';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Check if a char can be connected to it's preceding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectPrev(charContextParams) {\n let backtrack = [].concat(charContextParams.backtrack);\n for (let i = backtrack.length - 1; i >= 0; i--) {\n const prevChar = backtrack[i];\n const isolated = isIsolatedArabicChar(prevChar);\n const tashkeel = isTashkeelArabicChar(prevChar);\n if (!isolated && !tashkeel) return true;\n if (isolated) return false;\n }\n return false;\n}\n\n/**\n * Check if a char can be connected to it's proceeding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectNext(charContextParams) {\n if (isIsolatedArabicChar(charContextParams.current)) return false;\n for (let i = 0; i < charContextParams.lookahead.length; i++) {\n const nextChar = charContextParams.lookahead[i];\n const tashkeel = isTashkeelArabicChar(nextChar);\n if (!tashkeel) return true;\n }\n return false;\n}\n\n/**\n * Apply arabic presentation forms to a list of tokens\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicPresentationForms(range) {\n const script = 'arab';\n const tags = this.featuresTags[script];\n const tokens = this.tokenizer.getRangeTokens(range);\n if (tokens.length === 1) return;\n let contextParams = new ContextParams(\n tokens.map(token => token.getState('glyphIndex')\n ), 0);\n const charContextParams = new ContextParams(\n tokens.map(token => token.char\n ), 0);\n tokens.forEach((token, index) => {\n if (isTashkeelArabicChar(token.char)) return;\n contextParams.setCurrentIndex(index);\n charContextParams.setCurrentIndex(index);\n let CONNECT = 0; // 2 bits 00 (10: can connect next) (01: can connect prev)\n if (willConnectPrev(charContextParams)) CONNECT |= 1;\n if (willConnectNext(charContextParams)) CONNECT |= 2;\n let tag;\n switch (CONNECT) {\n case 1: (tag = 'fina'); break;\n case 2: (tag = 'init'); break;\n case 3: (tag = 'medi'); break;\n }\n if (tags.indexOf(tag) === -1) return;\n let substitutions = this.query.lookupFeature({\n tag, script, contextParams\n });\n if (substitutions instanceof Error) return console.info(substitutions.message);\n substitutions.forEach((action, index) => {\n if (action instanceof SubstitutionAction) {\n applySubstitution(action, tokens, index);\n contextParams.context[index] = action.substitution;\n }\n });\n });\n}\n\nexport default arabicPresentationForms;\nexport { arabicPresentationForms };\n","/**\n * Apply Arabic required ligatures feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicRequiredLigatures(range) {\n const script = 'arab';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'rlig', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default arabicRequiredLigatures;\nexport { arabicRequiredLigatures };\n","/**\n * Latin word context checkers\n */\n\nimport { isLatinChar } from '../../../char';\n\nfunction latinWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? latin first char\n (prevChar === null && isLatinChar(char)) ||\n // ? latin char preceded with a non latin char\n (!isLatinChar(prevChar) && isLatinChar(char))\n );\n}\n\nfunction latinWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last latin char\n (nextChar === null) ||\n // ? next char is not latin\n (!isLatinChar(nextChar))\n );\n}\n\nexport default {\n startCheck: latinWordStartCheck,\n endCheck: latinWordEndCheck\n};\n","/**\n * Apply Latin ligature feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction latinLigature(range) {\n const script = 'latn';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'liga', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default latinLigature;\n","/**\n * Infer bidirectional properties for a given text and apply\n * the corresponding layout rules.\n */\n\nimport Tokenizer from './tokenizer';\nimport FeatureQuery from './features/featureQuery';\nimport arabicWordCheck from './features/arab/contextCheck/arabicWord';\nimport arabicSentenceCheck from './features/arab/contextCheck/arabicSentence';\nimport arabicPresentationForms from './features/arab/arabicPresentationForms';\nimport arabicRequiredLigatures from './features/arab/arabicRequiredLigatures';\nimport latinWordCheck from './features/latn/contextCheck/latinWord';\nimport latinLigature from './features/latn/latinLigatures';\n\n/**\n * Create Bidi. features\n * @param {string} baseDir text base direction. value either 'ltr' or 'rtl'\n */\nfunction Bidi(baseDir) {\n this.baseDir = baseDir || 'ltr';\n this.tokenizer = new Tokenizer();\n this.featuresTags = {};\n}\n\n/**\n * Sets Bidi text\n * @param {string} text a text input\n */\nBidi.prototype.setText = function (text) {\n this.text = text;\n};\n\n/**\n * Store essential context checks:\n * arabic word check for applying gsub features\n * arabic sentence check for adjusting arabic layout\n */\nBidi.prototype.contextChecks = ({\n latinWordCheck,\n arabicWordCheck,\n arabicSentenceCheck\n});\n\n/**\n * Register arabic word check\n */\nfunction registerContextChecker(checkId) {\n const check = this.contextChecks[`${checkId}Check`];\n return this.tokenizer.registerContextChecker(\n checkId, check.startCheck, check.endCheck\n );\n}\n\n/**\n * Perform pre tokenization procedure then\n * tokenize text input\n */\nfunction tokenizeText() {\n registerContextChecker.call(this, 'latinWord');\n registerContextChecker.call(this, 'arabicWord');\n registerContextChecker.call(this, 'arabicSentence');\n return this.tokenizer.tokenize(this.text);\n}\n\n/**\n * Reverse arabic sentence layout\n * TODO: check base dir before applying adjustments - priority low\n */\nfunction reverseArabicSentences() {\n const ranges = this.tokenizer.getContextRanges('arabicSentence');\n ranges.forEach(range => {\n let rangeTokens = this.tokenizer.getRangeTokens(range);\n this.tokenizer.replaceRange(\n range.startIndex,\n range.endOffset,\n rangeTokens.reverse()\n );\n });\n}\n\n/**\n * Register supported features tags\n * @param {script} script script tag\n * @param {Array} tags features tags list\n */\nBidi.prototype.registerFeatures = function (script, tags) {\n const supportedTags = tags.filter(\n tag => this.query.supports({script, tag})\n );\n if (!this.featuresTags.hasOwnProperty(script)) {\n this.featuresTags[script] = supportedTags;\n } else {\n this.featuresTags[script] =\n this.featuresTags[script].concat(supportedTags);\n }\n};\n\n/**\n * Apply GSUB features\n * @param {Array} tagsList a list of features tags\n * @param {string} script a script tag\n * @param {Font} font opentype font instance\n */\nBidi.prototype.applyFeatures = function (font, features) {\n if (!font) throw new Error(\n 'No valid font was provided to apply features'\n );\n if (!this.query) this.query = new FeatureQuery(font);\n for (let f = 0; f < features.length; f++) {\n const feature = features[f];\n if (!this.query.supports({script: feature.script})) continue;\n this.registerFeatures(feature.script, feature.tags);\n }\n};\n\n/**\n * Register a state modifier\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a modifier function to set token state\n */\nBidi.prototype.registerModifier = function (modifierId, condition, modifier) {\n this.tokenizer.registerModifier(modifierId, condition, modifier);\n};\n\n/**\n * Check if 'glyphIndex' is registered\n */\nfunction checkGlyphIndexStatus() {\n if (this.tokenizer.registeredModifiers.indexOf('glyphIndex') === -1) {\n throw new Error(\n 'glyphIndex modifier is required to apply ' +\n 'arabic presentation features.'\n );\n }\n}\n\n/**\n * Apply arabic presentation forms features\n */\nfunction applyArabicPresentationForms() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicPresentationForms.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyArabicRequireLigatures() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('rlig') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicRequiredLigatures.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyLatinLigatures() {\n const script = 'latn';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('liga') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('latinWord');\n ranges.forEach(range => {\n latinLigature.call(this, range);\n });\n}\n\n/**\n * Check if a context is registered\n * @param {string} contextId context id\n */\nBidi.prototype.checkContextReady = function (contextId) {\n return !!this.tokenizer.getContext(contextId);\n};\n\n/**\n * Apply features to registered contexts\n */\nBidi.prototype.applyFeaturesToContexts = function () {\n if (this.checkContextReady('arabicWord')) {\n applyArabicPresentationForms.call(this);\n applyArabicRequireLigatures.call(this);\n }\n if (this.checkContextReady('latinWord')) {\n applyLatinLigatures.call(this);\n }\n if (this.checkContextReady('arabicSentence')) {\n reverseArabicSentences.call(this);\n }\n};\n\n/**\n * process text input\n * @param {string} text an input text\n */\nBidi.prototype.processText = function(text) {\n if (!this.text || this.text !== text) {\n this.setText(text);\n tokenizeText.call(this);\n this.applyFeaturesToContexts();\n }\n};\n\n/**\n * Process a string of text to identify and adjust\n * bidirectional text entities.\n * @param {string} text input text\n */\nBidi.prototype.getBidiText = function (text) {\n this.processText(text);\n return this.tokenizer.getText();\n};\n\n/**\n * Get the current state index of each token\n * @param {text} text an input text\n */\nBidi.prototype.getTextGlyphs = function (text) {\n this.processText(text);\n let indexes = [];\n for (let i = 0; i < this.tokenizer.tokens.length; i++) {\n const token = this.tokenizer.tokens[i];\n if (token.state.deleted) continue;\n const index = token.activeState.value;\n indexes.push(Array.isArray(index) ? index[0] : index);\n }\n return indexes;\n};\n\nexport default Bidi;\n","// The Font object\n\nimport Path from './path';\nimport { DefaultEncoding } from './encoding';\nimport glyphset from './glyphset';\nimport Position from './position';\nimport Substitution from './substitution';\nimport { checkArgument } from './util';\nimport HintingTrueType from './hintingtt';\nimport Bidi from './bidi';\n\n/**\n * @typedef FontOptions\n * @type Object\n * @property {Boolean} empty - whether to create a new empty font\n * @property {string} familyName\n * @property {string} styleName\n * @property {string=} fullName\n * @property {string=} postScriptName\n * @property {string=} designer\n * @property {string=} designerURL\n * @property {string=} manufacturer\n * @property {string=} manufacturerURL\n * @property {string=} license\n * @property {string=} licenseURL\n * @property {string=} version\n * @property {string=} description\n * @property {string=} copyright\n * @property {string=} trademark\n * @property {Number} unitsPerEm\n * @property {Number} ascender\n * @property {Number} descender\n * @property {Number} createdTimestamp\n * @property {string=} weightClass\n * @property {string=} widthClass\n * @property {string=} fsSelection\n */\n\n/**\n * A Font represents a loaded OpenType font file.\n * It contains a set of glyphs and methods to draw text on a drawing context,\n * or to get a path representing the text.\n * @exports opentype.Font\n * @class\n * @param {FontOptions}\n * @constructor\n */\nfunction Font(options) {\n options = options || {};\n options.tables = options.tables || {};\n\n if (!options.empty) {\n // Check that we've provided the minimum set of names.\n checkArgument(\n options.familyName,\n 'When creating a new Font object, familyName is required.'\n );\n checkArgument(\n options.styleName,\n 'When creating a new Font object, styleName is required.'\n );\n checkArgument(\n options.unitsPerEm,\n 'When creating a new Font object, unitsPerEm is required.'\n );\n checkArgument(\n options.ascender,\n 'When creating a new Font object, ascender is required.'\n );\n checkArgument(\n options.descender <= 0,\n 'When creating a new Font object, negative descender value is required.'\n );\n\n this.unitsPerEm = options.unitsPerEm || 1000;\n this.ascender = options.ascender;\n this.descender = options.descender;\n this.createdTimestamp = options.createdTimestamp;\n this.tables = Object.assign(options.tables, {\n os2: Object.assign(\n {\n usWeightClass:\n options.weightClass || this.usWeightClasses.MEDIUM,\n usWidthClass:\n options.widthClass || this.usWidthClasses.MEDIUM,\n fsSelection:\n options.fsSelection || this.fsSelectionValues.REGULAR,\n },\n options.tables.os2\n ),\n });\n }\n\n this.supported = true; // Deprecated: parseBuffer will throw an error if font is not supported.\n this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []);\n this.encoding = new DefaultEncoding(this);\n this.position = new Position(this);\n this.substitution = new Substitution(this);\n this.tables = this.tables || {};\n\n // needed for low memory mode only.\n this._push = null;\n this._hmtxTableData = {};\n\n Object.defineProperty(this, 'hinting', {\n get: function () {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === 'truetype') {\n return (this._hinting = new HintingTrueType(this));\n }\n },\n });\n}\n\n/**\n * Check if the font has a glyph for the given character.\n * @param {string}\n * @return {Boolean}\n */\nFont.prototype.hasChar = function (c) {\n return this.encoding.charToGlyphIndex(c) !== null;\n};\n\n/**\n * Convert the given character to a single glyph index.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {Number}\n */\nFont.prototype.charToGlyphIndex = function (s) {\n return this.encoding.charToGlyphIndex(s);\n};\n\n/**\n * Convert the given character to a single Glyph object.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {opentype.Glyph}\n */\nFont.prototype.charToGlyph = function (c) {\n const glyphIndex = this.charToGlyphIndex(c);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n // .notdef\n glyph = this.glyphs.get(0);\n }\n\n return glyph;\n};\n\n/**\n * Update features\n * @param {any} options features options\n */\nFont.prototype.updateFeatures = function (options) {\n // TODO: update all features options not only 'latn'.\n return this.defaultRenderOptions.features.map((feature) => {\n if (feature.script === 'latn') {\n return {\n script: 'latn',\n tags: feature.tags.filter((tag) => options[tag]),\n };\n } else {\n return feature;\n }\n });\n};\n\n/**\n * Convert the given text to a list of Glyph objects.\n * Note that there is no strict one-to-one mapping between characters and\n * glyphs, so the list of returned glyphs can be larger or smaller than the\n * length of the given string.\n * @param {string}\n * @param {GlyphRenderOptions} [options]\n * @return {opentype.Glyph[]}\n */\nFont.prototype.stringToGlyphs = function (s, options) {\n const bidi = new Bidi();\n\n // Create and register 'glyphIndex' state modifier\n const charToGlyphIndexMod = (token) => this.charToGlyphIndex(token.char);\n bidi.registerModifier('glyphIndex', null, charToGlyphIndexMod);\n\n // roll-back to default features\n let features = options\n ? this.updateFeatures(options.features)\n : this.defaultRenderOptions.features;\n\n bidi.applyFeatures(this, features);\n\n const indexes = bidi.getTextGlyphs(s);\n\n let length = indexes.length;\n\n // convert glyph indexes to glyph objects\n const glyphs = new Array(length);\n const notdef = this.glyphs.get(0);\n for (let i = 0; i < length; i += 1) {\n glyphs[i] = this.glyphs.get(indexes[i]) || notdef;\n }\n return glyphs;\n};\n\n/**\n * Retrieve the value of the kerning pair between the left glyph (or its index)\n * and the right glyph (or its index). If no kerning pair is found, return 0.\n * The kerning value gets added to the advance width when calculating the spacing\n * between glyphs.\n * For GPOS kerning, this method uses the default script and language, which covers\n * most use cases. To have greater control, use font.position.getKerningValue .\n * @param {opentype.Glyph} leftGlyph\n * @param {opentype.Glyph} rightGlyph\n * @return {Number}\n */\nFont.prototype.getKerningValue = function (leftGlyph, rightGlyph) {\n leftGlyph = leftGlyph.index || leftGlyph;\n rightGlyph = rightGlyph.index || rightGlyph;\n const gposKerning = this.position.defaultKerningTables;\n if (gposKerning) {\n return this.position.getKerningValue(\n gposKerning,\n leftGlyph,\n rightGlyph\n );\n }\n // \"kern\" table\n return this.kerningPairs[leftGlyph + ',' + rightGlyph] || 0;\n};\n\n/**\n * @typedef GlyphRenderOptions\n * @type Object\n * @property {string} [script] - script used to determine which features to apply. By default, 'DFLT' or 'latn' is used.\n * See https://www.microsoft.com/typography/otspec/scripttags.htm\n * @property {string} [language='dflt'] - language system used to determine which features to apply.\n * See https://www.microsoft.com/typography/developers/opentype/languagetags.aspx\n * @property {boolean} [kerning=true] - whether to include kerning values\n * @property {object} [features] - OpenType Layout feature tags. Used to enable or disable the features of the given script/language system.\n * See https://www.microsoft.com/typography/otspec/featuretags.htm\n */\nFont.prototype.defaultRenderOptions = {\n kerning: true,\n features: [\n /**\n * these 4 features are required to render Arabic text properly\n * and shouldn't be turned off when rendering arabic text.\n */\n { script: 'arab', tags: ['init', 'medi', 'fina', 'rlig'] },\n { script: 'latn', tags: ['liga', 'rlig'] },\n ],\n};\n\n/**\n * Helper function that invokes the given callback for each glyph in the given text.\n * The callback gets `(glyph, x, y, fontSize, options)`.* @param {string} text\n * @param {string} text - The text to apply.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @param {Function} callback\n */\nFont.prototype.forEachGlyph = function (\n text,\n x,\n y,\n fontSize,\n options,\n callback\n) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fontScale = (1 / this.unitsPerEm) * fontSize;\n const glyphs = this.stringToGlyphs(text, options);\n let kerningLookups;\n if (options.kerning) {\n const script = options.script || this.position.getDefaultScriptName();\n kerningLookups = this.position.getKerningTables(\n script,\n options.language\n );\n }\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs[i];\n callback.call(this, glyph, x, y, fontSize, options);\n if (glyph.advanceWidth) {\n x += glyph.advanceWidth * fontScale;\n }\n\n if (options.kerning && i < glyphs.length - 1) {\n // We should apply position adjustment lookups in a more generic way.\n // Here we only use the xAdvance value.\n const kerningValue = kerningLookups\n ? this.position.getKerningValue(\n kerningLookups,\n glyph.index,\n glyphs[i + 1].index\n )\n : this.getKerningValue(glyph, glyphs[i + 1]);\n x += kerningValue * fontScale;\n }\n\n if (options.letterSpacing) {\n x += options.letterSpacing * fontSize;\n } else if (options.tracking) {\n x += (options.tracking / 1000) * fontSize;\n }\n }\n return x;\n};\n\n/**\n * Create a Path object that represents the given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path}\n */\nFont.prototype.getPath = function (text, x, y, fontSize, options) {\n const fullPath = new Path();\n this.forEachGlyph(\n text,\n x,\n y,\n fontSize,\n options,\n function (glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n fullPath.extend(glyphPath);\n }\n );\n return fullPath;\n};\n\n/**\n * Create an array of Path objects that represent the glyphs of a given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path[]}\n */\nFont.prototype.getPaths = function (text, x, y, fontSize, options) {\n const glyphPaths = [];\n this.forEachGlyph(\n text,\n x,\n y,\n fontSize,\n options,\n function (glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n glyphPaths.push(glyphPath);\n }\n );\n\n return glyphPaths;\n};\n\n/**\n * Returns the advance width of a text.\n *\n * This is something different than Path.getBoundingBox() as for example a\n * suffixed whitespace increases the advanceWidth but not the bounding box\n * or an overhanging letter like a calligraphic 'f' might have a quite larger\n * bounding box than its advance width.\n *\n * This corresponds to canvas2dContext.measureText(text).width\n *\n * @param {string} text - The text to create.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return advance width\n */\nFont.prototype.getAdvanceWidth = function (text, fontSize, options) {\n return this.forEachGlyph(text, 0, 0, fontSize, options, function () {});\n};\n\n/**\n * @private\n */\nFont.prototype.fsSelectionValues = {\n ITALIC: 0x001, //1\n UNDERSCORE: 0x002, //2\n NEGATIVE: 0x004, //4\n OUTLINED: 0x008, //8\n STRIKEOUT: 0x010, //16\n BOLD: 0x020, //32\n REGULAR: 0x040, //64\n USER_TYPO_METRICS: 0x080, //128\n WWS: 0x100, //256\n OBLIQUE: 0x200, //512\n};\n\n/**\n * @private\n */\nFont.prototype.usWidthClasses = {\n ULTRA_CONDENSED: 1,\n EXTRA_CONDENSED: 2,\n CONDENSED: 3,\n SEMI_CONDENSED: 4,\n MEDIUM: 5,\n SEMI_EXPANDED: 6,\n EXPANDED: 7,\n EXTRA_EXPANDED: 8,\n ULTRA_EXPANDED: 9,\n};\n\n/**\n * @private\n */\nFont.prototype.usWeightClasses = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900,\n};\n\nexport default Font;\n","// The `cmap` table stores the mappings from characters to glyphs.\n// https://www.microsoft.com/typography/OTSPEC/cmap.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseCmapTableFormat12(cmap, p) {\n //Skip reserved.\n p.parseUShort();\n\n // Length in bytes of the sub-tables.\n cmap.length = p.parseULong();\n cmap.language = p.parseULong();\n\n let groupCount;\n cmap.groupCount = groupCount = p.parseULong();\n cmap.glyphIndexMap = {};\n\n for (let i = 0; i < groupCount; i += 1) {\n const startCharCode = p.parseULong();\n const endCharCode = p.parseULong();\n let startGlyphId = p.parseULong();\n\n for (let c = startCharCode; c <= endCharCode; c += 1) {\n cmap.glyphIndexMap[c] = startGlyphId;\n startGlyphId++;\n }\n }\n}\n\nfunction parseCmapTableFormat4(cmap, p, data, start, offset) {\n // Length in bytes of the sub-tables.\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort();\n\n // segCount is stored x 2.\n let segCount;\n cmap.segCount = segCount = p.parseUShort() >> 1;\n\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n\n // The \"unrolled\" mapping from character codes to glyph indices.\n cmap.glyphIndexMap = {};\n const endCountParser = new parse.Parser(data, start + offset + 14);\n const startCountParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 2\n );\n const idDeltaParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 4\n );\n const idRangeOffsetParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 6\n );\n let glyphIndexOffset = start + offset + 16 + segCount * 8;\n for (let i = 0; i < segCount - 1; i += 1) {\n let glyphIndex;\n const endCount = endCountParser.parseUShort();\n const startCount = startCountParser.parseUShort();\n const idDelta = idDeltaParser.parseShort();\n const idRangeOffset = idRangeOffsetParser.parseUShort();\n for (let c = startCount; c <= endCount; c += 1) {\n if (idRangeOffset !== 0) {\n // The idRangeOffset is relative to the current position in the idRangeOffset array.\n // Take the current offset in the idRangeOffset array.\n glyphIndexOffset =\n idRangeOffsetParser.offset +\n idRangeOffsetParser.relativeOffset -\n 2;\n\n // Add the value of the idRangeOffset, which will move us into the glyphIndex array.\n glyphIndexOffset += idRangeOffset;\n\n // Then add the character index of the current segment, multiplied by 2 for USHORTs.\n glyphIndexOffset += (c - startCount) * 2;\n glyphIndex = parse.getUShort(data, glyphIndexOffset);\n if (glyphIndex !== 0) {\n glyphIndex = (glyphIndex + idDelta) & 0xffff;\n }\n } else {\n glyphIndex = (c + idDelta) & 0xffff;\n }\n\n cmap.glyphIndexMap[c] = glyphIndex;\n }\n }\n}\n\n// Parse the `cmap` table. This table stores the mappings from characters to glyphs.\n// There are many available formats, but we only support the Windows format 4 and 12.\n// This function returns a `CmapEncoding` object or null if no supported format could be found.\nfunction parseCmapTable(data, start) {\n const cmap = {};\n cmap.version = parse.getUShort(data, start);\n check.argument(cmap.version === 0, 'cmap table version should be 0.');\n\n // The cmap table can contain many sub-tables, each with their own format.\n // We're only interested in a \"platform 0\" (Unicode format) and \"platform 3\" (Windows format) table.\n cmap.numTables = parse.getUShort(data, start + 2);\n let offset = -1;\n for (let i = cmap.numTables - 1; i >= 0; i -= 1) {\n const platformId = parse.getUShort(data, start + 4 + i * 8);\n const encodingId = parse.getUShort(data, start + 4 + i * 8 + 2);\n if (\n (platformId === 3 &&\n (encodingId === 0 || encodingId === 1 || encodingId === 10)) ||\n (platformId === 0 &&\n (encodingId === 0 ||\n encodingId === 1 ||\n encodingId === 2 ||\n encodingId === 3 ||\n encodingId === 4))\n ) {\n offset = parse.getULong(data, start + 4 + i * 8 + 4);\n break;\n }\n }\n\n if (offset === -1) {\n // There is no cmap table in the font that we support.\n throw new Error('No valid cmap sub-tables found.');\n }\n\n const p = new parse.Parser(data, start + offset);\n cmap.format = p.parseUShort();\n\n if (cmap.format === 12) {\n parseCmapTableFormat12(cmap, p);\n } else if (cmap.format === 4) {\n parseCmapTableFormat4(cmap, p, data, start, offset);\n } else {\n throw new Error(\n 'Only format 4 and 12 cmap tables are supported (found format ' +\n cmap.format +\n ').'\n );\n }\n\n return cmap;\n}\n\nexport default { parse: parseCmapTable };\n","// The `CFF` table contains the glyph outlines in PostScript format.\n// https://www.microsoft.com/typography/OTSPEC/cff.htm\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/cff.pdf\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/type2.pdf\n\nimport {\n CffEncoding,\n cffStandardEncoding,\n cffExpertEncoding,\n cffStandardStrings,\n} from '../encoding';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\n\n// Subroutines are encoded using the negative half of the number space.\n// See type 2 chapter 4.7 \"Subroutine operators\".\nfunction calcCFFSubroutineBias(subrs) {\n let bias;\n if (subrs.length < 1240) {\n bias = 107;\n } else if (subrs.length < 33900) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n return bias;\n}\n\n// Parse a `CFF` INDEX array.\n// An index array consists of a list of offsets, then a list of objects at those offsets.\nfunction parseCFFIndex(data, start, conversionFn) {\n const offsets = [];\n const objects = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n for (let i = 0; i < offsets.length - 1; i += 1) {\n let value = parse.getBytes(\n data,\n objectOffset + offsets[i],\n objectOffset + offsets[i + 1]\n );\n if (conversionFn) {\n value = conversionFn(value);\n }\n\n objects.push(value);\n }\n\n return { objects: objects, startOffset: start, endOffset: endOffset };\n}\n\nfunction parseCFFIndexLowMemory(data, start) {\n const offsets = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n return { offsets: offsets, startOffset: start, endOffset: endOffset };\n}\nfunction getCffIndexObject(i, offsets, data, start, conversionFn) {\n const count = parse.getCard16(data, start);\n let objectOffset = 0;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n }\n\n let value = parse.getBytes(\n data,\n objectOffset + offsets[i],\n objectOffset + offsets[i + 1]\n );\n if (conversionFn) {\n value = conversionFn(value);\n }\n return value;\n}\n\n// Parse a `CFF` DICT real value.\nfunction parseFloatOperand(parser) {\n let s = '';\n const eof = 15;\n const lookup = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n 'E',\n 'E-',\n null,\n '-',\n ];\n while (true) {\n const b = parser.parseByte();\n const n1 = b >> 4;\n const n2 = b & 15;\n\n if (n1 === eof) {\n break;\n }\n\n s += lookup[n1];\n\n if (n2 === eof) {\n break;\n }\n\n s += lookup[n2];\n }\n\n return parseFloat(s);\n}\n\n// Parse a `CFF` DICT operand.\nfunction parseOperand(parser, b0) {\n let b1;\n let b2;\n let b3;\n let b4;\n if (b0 === 28) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n return (b1 << 8) | b2;\n }\n\n if (b0 === 29) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n b3 = parser.parseByte();\n b4 = parser.parseByte();\n return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4;\n }\n\n if (b0 === 30) {\n return parseFloatOperand(parser);\n }\n\n if (b0 >= 32 && b0 <= 246) {\n return b0 - 139;\n }\n\n if (b0 >= 247 && b0 <= 250) {\n b1 = parser.parseByte();\n return (b0 - 247) * 256 + b1 + 108;\n }\n\n if (b0 >= 251 && b0 <= 254) {\n b1 = parser.parseByte();\n return -(b0 - 251) * 256 - b1 - 108;\n }\n\n throw new Error('Invalid b0 ' + b0);\n}\n\n// Convert the entries returned by `parseDict` to a proper dictionary.\n// If a value is a list of one, it is unpacked.\nfunction entriesToObject(entries) {\n const o = {};\n for (let i = 0; i < entries.length; i += 1) {\n const key = entries[i][0];\n const values = entries[i][1];\n let value;\n if (values.length === 1) {\n value = values[0];\n } else {\n value = values;\n }\n\n if (o.hasOwnProperty(key) && !isNaN(o[key])) {\n throw new Error('Object ' + o + ' already has key ' + key);\n }\n\n o[key] = value;\n }\n\n return o;\n}\n\n// Parse a `CFF` DICT object.\n// A dictionary contains key-value pairs in a compact tokenized format.\nfunction parseCFFDict(data, start, size) {\n start = start !== undefined ? start : 0;\n const parser = new parse.Parser(data, start);\n const entries = [];\n let operands = [];\n size = size !== undefined ? size : data.length;\n\n while (parser.relativeOffset < size) {\n let op = parser.parseByte();\n\n // The first byte for each dict item distinguishes between operator (key) and operand (value).\n // Values <= 21 are operators.\n if (op <= 21) {\n // Two-byte operators have an initial escape byte of 12.\n if (op === 12) {\n op = 1200 + parser.parseByte();\n }\n\n entries.push([op, operands]);\n operands = [];\n } else {\n // Since the operands (values) come before the operators (keys), we store all operands in a list\n // until we encounter an operator.\n operands.push(parseOperand(parser, op));\n }\n }\n\n return entriesToObject(entries);\n}\n\n// Given a String Index (SID), return the value of the string.\n// Strings below index 392 are standard CFF strings and are not encoded in the font.\nfunction getCFFString(strings, index) {\n if (index <= 390) {\n index = cffStandardStrings[index];\n } else {\n index = strings[index - 391];\n }\n\n return index;\n}\n\n// Interpret a dictionary and return a new dictionary with readable keys and values for missing entries.\n// This function takes `meta` which is a list of objects containing `operand`, `name` and `default`.\nfunction interpretDict(dict, meta, strings) {\n const newDict = {};\n let value;\n\n // Because we also want to include missing values, we start out from the meta list\n // and lookup values in the dict.\n for (let i = 0; i < meta.length; i += 1) {\n const m = meta[i];\n\n if (Array.isArray(m.type)) {\n const values = [];\n values.length = m.type.length;\n for (let j = 0; j < m.type.length; j++) {\n value = dict[m.op] !== undefined ? dict[m.op][j] : undefined;\n if (value === undefined) {\n value =\n m.value !== undefined && m.value[j] !== undefined\n ? m.value[j]\n : null;\n }\n if (m.type[j] === 'SID') {\n value = getCFFString(strings, value);\n }\n values[j] = value;\n }\n newDict[m.name] = values;\n } else {\n value = dict[m.op];\n if (value === undefined) {\n value = m.value !== undefined ? m.value : null;\n }\n\n if (m.type === 'SID') {\n value = getCFFString(strings, value);\n }\n newDict[m.name] = value;\n }\n }\n\n return newDict;\n}\n\n// Parse the CFF header.\nfunction parseCFFHeader(data, start) {\n const header = {};\n header.formatMajor = parse.getCard8(data, start);\n header.formatMinor = parse.getCard8(data, start + 1);\n header.size = parse.getCard8(data, start + 2);\n header.offsetSize = parse.getCard8(data, start + 3);\n header.startOffset = start;\n header.endOffset = start + 4;\n return header;\n}\n\nconst TOP_DICT_META = [\n { name: 'version', op: 0, type: 'SID' },\n { name: 'notice', op: 1, type: 'SID' },\n { name: 'copyright', op: 1200, type: 'SID' },\n { name: 'fullName', op: 2, type: 'SID' },\n { name: 'familyName', op: 3, type: 'SID' },\n { name: 'weight', op: 4, type: 'SID' },\n { name: 'isFixedPitch', op: 1201, type: 'number', value: 0 },\n { name: 'italicAngle', op: 1202, type: 'number', value: 0 },\n { name: 'underlinePosition', op: 1203, type: 'number', value: -100 },\n { name: 'underlineThickness', op: 1204, type: 'number', value: 50 },\n { name: 'paintType', op: 1205, type: 'number', value: 0 },\n { name: 'charstringType', op: 1206, type: 'number', value: 2 },\n {\n name: 'fontMatrix',\n op: 1207,\n type: ['real', 'real', 'real', 'real', 'real', 'real'],\n value: [0.001, 0, 0, 0.001, 0, 0],\n },\n { name: 'uniqueId', op: 13, type: 'number' },\n {\n name: 'fontBBox',\n op: 5,\n type: ['number', 'number', 'number', 'number'],\n value: [0, 0, 0, 0],\n },\n { name: 'strokeWidth', op: 1208, type: 'number', value: 0 },\n { name: 'xuid', op: 14, type: [], value: null },\n { name: 'charset', op: 15, type: 'offset', value: 0 },\n { name: 'encoding', op: 16, type: 'offset', value: 0 },\n { name: 'charStrings', op: 17, type: 'offset', value: 0 },\n { name: 'private', op: 18, type: ['number', 'offset'], value: [0, 0] },\n { name: 'ros', op: 1230, type: ['SID', 'SID', 'number'] },\n { name: 'cidFontVersion', op: 1231, type: 'number', value: 0 },\n { name: 'cidFontRevision', op: 1232, type: 'number', value: 0 },\n { name: 'cidFontType', op: 1233, type: 'number', value: 0 },\n { name: 'cidCount', op: 1234, type: 'number', value: 8720 },\n { name: 'uidBase', op: 1235, type: 'number' },\n { name: 'fdArray', op: 1236, type: 'offset' },\n { name: 'fdSelect', op: 1237, type: 'offset' },\n { name: 'fontName', op: 1238, type: 'SID' },\n];\n\nconst PRIVATE_DICT_META = [\n { name: 'subrs', op: 19, type: 'offset', value: 0 },\n { name: 'defaultWidthX', op: 20, type: 'number', value: 0 },\n { name: 'nominalWidthX', op: 21, type: 'number', value: 0 },\n];\n\n// Parse the CFF top dictionary. A CFF table can contain multiple fonts, each with their own top dictionary.\n// The top dictionary contains the essential metadata for the font, together with the private dictionary.\nfunction parseCFFTopDict(data, strings) {\n const dict = parseCFFDict(data, 0, data.byteLength);\n return interpretDict(dict, TOP_DICT_META, strings);\n}\n\n// Parse the CFF private dictionary. We don't fully parse out all the values, only the ones we need.\nfunction parseCFFPrivateDict(data, start, size, strings) {\n const dict = parseCFFDict(data, start, size);\n return interpretDict(dict, PRIVATE_DICT_META, strings);\n}\n\n// Returns a list of \"Top DICT\"s found using an INDEX list.\n// Used to read both the usual high-level Top DICTs and also the FDArray\n// discovered inside CID-keyed fonts. When a Top DICT has a reference to\n// a Private DICT that is read and saved into the Top DICT.\n//\n// In addition to the expected/optional values as outlined in TOP_DICT_META\n// the following values might be saved into the Top DICT.\n//\n// _subrs [] array of local CFF subroutines from Private DICT\n// _subrsBias bias value computed from number of subroutines\n// (see calcCFFSubroutineBias() and parseCFFCharstring())\n// _defaultWidthX default widths for CFF characters\n// _nominalWidthX bias added to width embedded within glyph description\n//\n// _privateDict saved copy of parsed Private DICT from Top DICT\nfunction gatherCFFTopDicts(data, start, cffIndex, strings) {\n const topDictArray = [];\n for (let iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) {\n const topDictData = new DataView(\n new Uint8Array(cffIndex[iTopDict]).buffer\n );\n const topDict = parseCFFTopDict(topDictData, strings);\n topDict._subrs = [];\n topDict._subrsBias = 0;\n topDict._defaultWidthX = 0;\n topDict._nominalWidthX = 0;\n const privateSize = topDict.private[0];\n const privateOffset = topDict.private[1];\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(\n data,\n privateOffset + start,\n privateSize,\n strings\n );\n topDict._defaultWidthX = privateDict.defaultWidthX;\n topDict._nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start);\n topDict._subrs = subrIndex.objects;\n topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs);\n }\n topDict._privateDict = privateDict;\n }\n topDictArray.push(topDict);\n }\n return topDictArray;\n}\n\n// Parse the CFF charset table, which contains internal names for all the glyphs.\n// This function will return a list of glyph names.\n// See Adobe TN #5176 chapter 13, \"Charsets\".\nfunction parseCFFCharset(data, start, nGlyphs, strings) {\n let sid;\n let count;\n const parser = new parse.Parser(data, start);\n\n // The .notdef glyph is not included, so subtract 1.\n nGlyphs -= 1;\n const charset = ['.notdef'];\n\n const format = parser.parseCard8();\n if (format === 0) {\n for (let i = 0; i < nGlyphs; i += 1) {\n sid = parser.parseSID();\n charset.push(getCFFString(strings, sid));\n }\n } else if (format === 1) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard8();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else if (format === 2) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard16();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else {\n throw new Error('Unknown charset format ' + format);\n }\n\n return charset;\n}\n\n// Parse the CFF encoding data. Only one encoding can be specified per font.\n// See Adobe TN #5176 chapter 12, \"Encodings\".\nfunction parseCFFEncoding(data, start, charset) {\n let code;\n const enc = {};\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n const nCodes = parser.parseCard8();\n for (let i = 0; i < nCodes; i += 1) {\n code = parser.parseCard8();\n enc[code] = i;\n }\n } else if (format === 1) {\n const nRanges = parser.parseCard8();\n code = 1;\n for (let i = 0; i < nRanges; i += 1) {\n const first = parser.parseCard8();\n const nLeft = parser.parseCard8();\n for (let j = first; j <= first + nLeft; j += 1) {\n enc[j] = code;\n code += 1;\n }\n }\n } else {\n throw new Error('Unknown encoding format ' + format);\n }\n\n return new CffEncoding(enc, charset);\n}\n\n// Take in charstring code and return a Glyph object.\n// The encoding is described in the Type 2 Charstring Format\n// https://www.microsoft.com/typography/OTSPEC/charstr2.htm\nfunction parseCFFCharstring(font, glyph, code) {\n let c1x;\n let c1y;\n let c2x;\n let c2y;\n const p = new Path();\n const stack = [];\n let nStems = 0;\n let haveWidth = false;\n let open = false;\n let x = 0;\n let y = 0;\n let subrs;\n let subrsBias;\n let defaultWidthX;\n let nominalWidthX;\n if (font.isCIDFont) {\n const fdIndex = font.tables.cff.topDict._fdSelect[glyph.index];\n const fdDict = font.tables.cff.topDict._fdArray[fdIndex];\n subrs = fdDict._subrs;\n subrsBias = fdDict._subrsBias;\n defaultWidthX = fdDict._defaultWidthX;\n nominalWidthX = fdDict._nominalWidthX;\n } else {\n subrs = font.tables.cff.topDict._subrs;\n subrsBias = font.tables.cff.topDict._subrsBias;\n defaultWidthX = font.tables.cff.topDict._defaultWidthX;\n nominalWidthX = font.tables.cff.topDict._nominalWidthX;\n }\n let width = defaultWidthX;\n\n function newContour(x, y) {\n if (open) {\n p.closePath();\n }\n\n p.moveTo(x, y);\n open = true;\n }\n\n function parseStems() {\n let hasWidthArg;\n\n // The number of stem operators on the stack is always even.\n // If the value is uneven, that means a width is specified.\n hasWidthArg = stack.length % 2 !== 0;\n if (hasWidthArg && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n }\n\n nStems += stack.length >> 1;\n stack.length = 0;\n haveWidth = true;\n }\n\n function parse(code) {\n let b1;\n let b2;\n let b3;\n let b4;\n let codeIndex;\n let subrCode;\n let jpx;\n let jpy;\n let c3x;\n let c3y;\n let c4x;\n let c4y;\n\n let i = 0;\n while (i < code.length) {\n let v = code[i];\n i += 1;\n switch (v) {\n case 1: // hstem\n parseStems();\n break;\n case 3: // vstem\n parseStems();\n break;\n case 4: // vmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n newContour(x, y);\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n x += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 10: // callsubr\n codeIndex = stack.pop() + subrsBias;\n subrCode = subrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 11: // return\n return;\n case 12: // flex operators\n v = code[i];\n i += 1;\n switch (v) {\n case 35: // flex\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 dx6 dy6 fd flex (12 35) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n y = c4y + stack.shift(); // dy6\n stack.shift(); // flex depth\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 34: // hflex\n // |- dx1 dx2 dy2 dx3 dx4 dx5 dx6 hflex (12 34) |-\n c1x = x + stack.shift(); // dx1\n c1y = y; // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = y; // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 36: // hflex1\n // |- dx1 dy1 dx2 dy2 dx3 dx4 dx5 dy5 dx6 hflex1 (12 36) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 37: // flex1\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 d6 flex1 (12 37) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n if (Math.abs(c4x - x) > Math.abs(c4y - y)) {\n x = c4x + stack.shift();\n } else {\n y = c4y + stack.shift();\n }\n\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n default:\n console.log(\n 'Glyph ' +\n glyph.index +\n ': unknown operator ' +\n 1200 +\n v\n );\n stack.length = 0;\n }\n break;\n case 14: // endchar\n if (stack.length > 0 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n if (open) {\n p.closePath();\n open = false;\n }\n\n break;\n case 18: // hstemhm\n parseStems();\n break;\n case 19: // hintmask\n case 20: // cntrmask\n parseStems();\n i += (nStems + 7) >> 3;\n break;\n case 21: // rmoveto\n if (stack.length > 2 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n x += stack.pop();\n newContour(x, y);\n break;\n case 22: // hmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n x += stack.pop();\n newContour(x, y);\n break;\n case 23: // vstemhm\n parseStems();\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 28: // shortint\n b1 = code[i];\n b2 = code[i + 1];\n stack.push(((b1 << 24) | (b2 << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n codeIndex = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n default:\n if (v < 32) {\n console.log(\n 'Glyph ' + glyph.index + ': unknown operator ' + v\n );\n } else if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n b1 = code[i];\n i += 1;\n stack.push((v - 247) * 256 + b1 + 108);\n } else if (v < 255) {\n b1 = code[i];\n i += 1;\n stack.push(-(v - 251) * 256 - b1 - 108);\n } else {\n b1 = code[i];\n b2 = code[i + 1];\n b3 = code[i + 2];\n b4 = code[i + 3];\n i += 4;\n stack.push(\n ((b1 << 24) | (b2 << 16) | (b3 << 8) | b4) / 65536\n );\n }\n }\n }\n }\n\n parse(code);\n\n glyph.advanceWidth = width;\n return p;\n}\n\nfunction parseCFFFDSelect(data, start, nGlyphs, fdArrayCount) {\n const fdSelect = [];\n let fdIndex;\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n // Simple list of nGlyphs elements\n for (let iGid = 0; iGid < nGlyphs; iGid++) {\n fdIndex = parser.parseCard8();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\n 'CFF table CID Font FDSelect has bad FD index value ' +\n fdIndex +\n ' (FD count ' +\n fdArrayCount +\n ')'\n );\n }\n fdSelect.push(fdIndex);\n }\n } else if (format === 3) {\n // Ranges\n const nRanges = parser.parseCard16();\n let first = parser.parseCard16();\n if (first !== 0) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad initial GID ' +\n first\n );\n }\n let next;\n for (let iRange = 0; iRange < nRanges; iRange++) {\n fdIndex = parser.parseCard8();\n next = parser.parseCard16();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\n 'CFF table CID Font FDSelect has bad FD index value ' +\n fdIndex +\n ' (FD count ' +\n fdArrayCount +\n ')'\n );\n }\n if (next > nGlyphs) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad GID ' +\n next\n );\n }\n for (; first < next; first++) {\n fdSelect.push(fdIndex);\n }\n first = next;\n }\n if (next !== nGlyphs) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad final GID ' +\n next\n );\n }\n } else {\n throw new Error(\n 'CFF Table CID Font FDSelect table has unsupported format ' + format\n );\n }\n return fdSelect;\n}\n\n// Parse the `CFF` table, which contains the glyph outlines in PostScript format.\nfunction parseCFFTable(data, start, font, opt) {\n font.tables.cff = {};\n const header = parseCFFHeader(data, start);\n const nameIndex = parseCFFIndex(\n data,\n header.endOffset,\n parse.bytesToString\n );\n const topDictIndex = parseCFFIndex(data, nameIndex.endOffset);\n const stringIndex = parseCFFIndex(\n data,\n topDictIndex.endOffset,\n parse.bytesToString\n );\n const globalSubrIndex = parseCFFIndex(data, stringIndex.endOffset);\n font.gsubrs = globalSubrIndex.objects;\n font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs);\n\n const topDictArray = gatherCFFTopDicts(\n data,\n start,\n topDictIndex.objects,\n stringIndex.objects\n );\n if (topDictArray.length !== 1) {\n throw new Error(\n \"CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = \" +\n topDictArray.length\n );\n }\n\n const topDict = topDictArray[0];\n font.tables.cff.topDict = topDict;\n\n if (topDict._privateDict) {\n font.defaultWidthX = topDict._privateDict.defaultWidthX;\n font.nominalWidthX = topDict._privateDict.nominalWidthX;\n }\n\n if (topDict.ros[0] !== undefined && topDict.ros[1] !== undefined) {\n font.isCIDFont = true;\n }\n\n if (font.isCIDFont) {\n let fdArrayOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (fdArrayOffset === 0 || fdSelectOffset === 0) {\n throw new Error(\n 'Font is marked as a CID font, but FDArray and/or FDSelect information is missing'\n );\n }\n fdArrayOffset += start;\n const fdArrayIndex = parseCFFIndex(data, fdArrayOffset);\n const fdArray = gatherCFFTopDicts(\n data,\n start,\n fdArrayIndex.objects,\n stringIndex.objects\n );\n topDict._fdArray = fdArray;\n fdSelectOffset += start;\n topDict._fdSelect = parseCFFFDSelect(\n data,\n fdSelectOffset,\n font.numGlyphs,\n fdArray.length\n );\n }\n\n const privateDictOffset = start + topDict.private[1];\n const privateDict = parseCFFPrivateDict(\n data,\n privateDictOffset,\n topDict.private[0],\n stringIndex.objects\n );\n font.defaultWidthX = privateDict.defaultWidthX;\n font.nominalWidthX = privateDict.nominalWidthX;\n\n if (privateDict.subrs !== 0) {\n const subrOffset = privateDictOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset);\n font.subrs = subrIndex.objects;\n font.subrsBias = calcCFFSubroutineBias(font.subrs);\n } else {\n font.subrs = [];\n font.subrsBias = 0;\n }\n\n // Offsets in the top dict are relative to the beginning of the CFF data, so add the CFF start offset.\n let charStringsIndex;\n if (opt.lowMemory) {\n charStringsIndex = parseCFFIndexLowMemory(\n data,\n start + topDict.charStrings\n );\n font.nGlyphs = charStringsIndex.offsets.length;\n } else {\n charStringsIndex = parseCFFIndex(data, start + topDict.charStrings);\n font.nGlyphs = charStringsIndex.objects.length;\n }\n\n const charset = parseCFFCharset(\n data,\n start + topDict.charset,\n font.nGlyphs,\n stringIndex.objects\n );\n if (topDict.encoding === 0) {\n // Standard encoding\n font.cffEncoding = new CffEncoding(cffStandardEncoding, charset);\n } else if (topDict.encoding === 1) {\n // Expert encoding\n font.cffEncoding = new CffEncoding(cffExpertEncoding, charset);\n } else {\n font.cffEncoding = parseCFFEncoding(\n data,\n start + topDict.encoding,\n charset\n );\n }\n\n // Prefer the CMAP encoding to the CFF encoding.\n font.encoding = font.encoding || font.cffEncoding;\n\n font.glyphs = new glyphset.GlyphSet(font);\n if (opt.lowMemory) {\n font._push = function (i) {\n const charString = getCffIndexObject(\n i,\n charStringsIndex.offsets,\n data,\n start + topDict.charStrings\n );\n font.glyphs.push(\n i,\n glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)\n );\n };\n } else {\n for (let i = 0; i < font.nGlyphs; i += 1) {\n const charString = charStringsIndex.objects[i];\n font.glyphs.push(\n i,\n glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)\n );\n }\n }\n}\n\nexport default { parse: parseCFFTable };\n","// The `fvar` table stores font variation axes and instances.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseFvarAxis(data, start, names) {\n const axis = {};\n const p = new parse.Parser(data, start);\n axis.tag = p.parseTag();\n axis.minValue = p.parseFixed();\n axis.defaultValue = p.parseFixed();\n axis.maxValue = p.parseFixed();\n p.skip('uShort', 1); // reserved for flags; no values defined\n axis.name = names[p.parseUShort()] || {};\n return axis;\n}\n\nfunction parseFvarInstance(data, start, axes, names) {\n const inst = {};\n const p = new parse.Parser(data, start);\n inst.name = names[p.parseUShort()] || {};\n p.skip('uShort', 1); // reserved for flags; no values defined\n\n inst.coordinates = {};\n for (let i = 0; i < axes.length; ++i) {\n inst.coordinates[axes[i].tag] = p.parseFixed();\n }\n\n return inst;\n}\n\nfunction parseFvarTable(data, start, names) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(\n tableVersion === 0x00010000,\n 'Unsupported fvar table version.'\n );\n const offsetToData = p.parseOffset16();\n // Skip countSizePairs.\n p.skip('uShort', 1);\n const axisCount = p.parseUShort();\n const axisSize = p.parseUShort();\n const instanceCount = p.parseUShort();\n const instanceSize = p.parseUShort();\n\n const axes = [];\n for (let i = 0; i < axisCount; i++) {\n axes.push(\n parseFvarAxis(data, start + offsetToData + i * axisSize, names)\n );\n }\n\n const instances = [];\n const instanceStart = start + offsetToData + axisCount * axisSize;\n for (let j = 0; j < instanceCount; j++) {\n instances.push(\n parseFvarInstance(\n data,\n instanceStart + j * instanceSize,\n axes,\n names\n )\n );\n }\n\n return { axes: axes, instances: instances };\n}\n\nexport default { parse: parseFvarTable };\n","// The `GDEF` table contains various glyph properties\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gdef\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nvar attachList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n attachPoints: this.parseList(Parser.pointer(Parser.uShortList))\n };\n};\n\nvar caretValue = function() {\n var format = this.parseUShort();\n check.argument(format === 1 || format === 2 || format === 3,\n 'Unsupported CaretValue table version.');\n if (format === 1) {\n return { coordinate: this.parseShort() };\n } else if (format === 2) {\n return { pointindex: this.parseShort() };\n } else if (format === 3) {\n // Device / Variation Index tables unsupported\n return { coordinate: this.parseShort() };\n }\n};\n\nvar ligGlyph = function() {\n return this.parseList(Parser.pointer(caretValue));\n};\n\nvar ligCaretList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n ligGlyphs: this.parseList(Parser.pointer(ligGlyph))\n };\n};\n\nvar markGlyphSets = function() {\n this.parseUShort(); // Version\n return this.parseList(Parser.pointer(Parser.coverage));\n};\n\nfunction parseGDEFTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3,\n 'Unsupported GDEF table version.');\n var gdef = {\n version: tableVersion,\n classDef: p.parsePointer(Parser.classDef),\n attachList: p.parsePointer(attachList),\n ligCaretList: p.parsePointer(ligCaretList),\n markAttachClassDef: p.parsePointer(Parser.classDef)\n };\n if (tableVersion >= 1.2) {\n gdef.markGlyphSets = p.parsePointer(markGlyphSets);\n }\n return gdef;\n}\nexport default { parse: parseGDEFTable };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nconst subtableParsers = new Array(10); // subtableParsers[0] is unused\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-1-single-adjustment-positioning-subtable\n// this = Parser instance\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const posformat = this.parseUShort();\n if (posformat === 1) {\n return {\n posFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n value: this.parseValueRecord(),\n };\n } else if (posformat === 2) {\n return {\n posFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n values: this.parseValueRecordList(),\n };\n }\n check.assert(\n false,\n '0x' +\n start.toString(16) +\n ': GPOS lookup type 1 format must be 1 or 2.'\n );\n};\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable\nsubtableParsers[2] = function parseLookup2() {\n const start = this.offset + this.relativeOffset;\n const posFormat = this.parseUShort();\n check.assert(\n posFormat === 1 || posFormat === 2,\n '0x' +\n start.toString(16) +\n ': GPOS lookup type 2 format must be 1 or 2.'\n );\n const coverage = this.parsePointer(Parser.coverage);\n const valueFormat1 = this.parseUShort();\n const valueFormat2 = this.parseUShort();\n if (posFormat === 1) {\n // Adjustments for Glyph Pairs\n return {\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n pairSets: this.parseList(\n Parser.pointer(\n Parser.list(function () {\n return {\n // pairValueRecord\n secondGlyph: this.parseUShort(),\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2),\n };\n })\n )\n ),\n };\n } else if (posFormat === 2) {\n const classDef1 = this.parsePointer(Parser.classDef);\n const classDef2 = this.parsePointer(Parser.classDef);\n const class1Count = this.parseUShort();\n const class2Count = this.parseUShort();\n return {\n // Class Pair Adjustment\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n classDef1: classDef1,\n classDef2: classDef2,\n class1Count: class1Count,\n class2Count: class2Count,\n classRecords: this.parseList(\n class1Count,\n Parser.list(class2Count, function () {\n return {\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2),\n };\n })\n ),\n };\n }\n};\n\nsubtableParsers[3] = function parseLookup3() {\n return { error: 'GPOS Lookup 3 not supported' };\n};\nsubtableParsers[4] = function parseLookup4() {\n return { error: 'GPOS Lookup 4 not supported' };\n};\nsubtableParsers[5] = function parseLookup5() {\n return { error: 'GPOS Lookup 5 not supported' };\n};\nsubtableParsers[6] = function parseLookup6() {\n return { error: 'GPOS Lookup 6 not supported' };\n};\nsubtableParsers[7] = function parseLookup7() {\n return { error: 'GPOS Lookup 7 not supported' };\n};\nsubtableParsers[8] = function parseLookup8() {\n return { error: 'GPOS Lookup 8 not supported' };\n};\nsubtableParsers[9] = function parseLookup9() {\n return { error: 'GPOS Lookup 9 not supported' };\n};\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\nfunction parseGposTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(\n tableVersion === 1 || tableVersion === 1.1,\n 'Unsupported GPOS table version ' + tableVersion\n );\n\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList(),\n };\n }\n}\n\nexport default { parse: parseGposTable };\n","// The `GSUB` table contains ligatures, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nconst subtableParsers = new Array(9); // subtableParsers[0] is unused\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#SS\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n deltaGlyphId: this.parseUShort(),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n substitute: this.parseOffset16List(),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 1 format must be 1 or 2.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#MS\nsubtableParsers[2] = function parseLookup2() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Multiple Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n sequences: this.parseListOfLists(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#AS\nsubtableParsers[3] = function parseLookup3() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Alternate Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n alternateSets: this.parseListOfLists(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#LS\nsubtableParsers[4] = function parseLookup4() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB ligature table identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ligatureSets: this.parseListOfLists(function () {\n return {\n ligGlyph: this.parseUShort(),\n components: this.parseUShortList(this.parseUShort() - 1),\n };\n }),\n };\n};\n\nconst lookupRecordDesc = {\n sequenceIndex: Parser.uShort,\n lookupListIndex: Parser.uShort,\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CSF\nsubtableParsers[5] = function parseLookup5() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n\n if (substFormat === 1) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ruleSets: this.parseListOfLists(function () {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n input: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(\n substCount,\n lookupRecordDesc\n ),\n };\n }),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n classDef: this.parsePointer(Parser.classDef),\n classSets: this.parseListOfLists(function () {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n classes: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(\n substCount,\n lookupRecordDesc\n ),\n };\n }),\n };\n } else if (substFormat === 3) {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n substFormat: substFormat,\n coverages: this.parseList(\n glyphCount,\n Parser.pointer(Parser.coverage)\n ),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 5 format must be 1, 2 or 3.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CC\nsubtableParsers[6] = function parseLookup6() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n chainRuleSets: this.parseListOfLists(function () {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n backtrackClassDef: this.parsePointer(Parser.classDef),\n inputClassDef: this.parsePointer(Parser.classDef),\n lookaheadClassDef: this.parsePointer(Parser.classDef),\n chainClassSet: this.parseListOfLists(function () {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }),\n };\n } else if (substFormat === 3) {\n return {\n substFormat: 3,\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n inputCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 6 format must be 1, 2 or 3.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#ES\nsubtableParsers[7] = function parseLookup7() {\n // Extension Substitution subtable\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Extension Substitution subtable identifier-format must be 1'\n );\n const extensionLookupType = this.parseUShort();\n const extensionParser = new Parser(\n this.data,\n this.offset + this.parseULong()\n );\n return {\n substFormat: 1,\n lookupType: extensionLookupType,\n extension: subtableParsers[extensionLookupType].call(extensionParser),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#RCCS\nsubtableParsers[8] = function parseLookup8() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n substitutes: this.parseUShortList(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\nfunction parseGsubTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(\n tableVersion === 1 || tableVersion === 1.1,\n 'Unsupported GSUB table version.'\n );\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList(),\n };\n }\n}\n\nexport default { parse: parseGsubTable };\n","// The `head` table contains global information about the font.\n// https://www.microsoft.com/typography/OTSPEC/head.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\n// Parse the header `head` table\nfunction parseHeadTable(data, start) {\n const head = {};\n const p = new parse.Parser(data, start);\n head.version = p.parseVersion();\n head.fontRevision = Math.round(p.parseFixed() * 1000) / 1000;\n head.checkSumAdjustment = p.parseULong();\n head.magicNumber = p.parseULong();\n check.argument(\n head.magicNumber === 0x5f0f3cf5,\n 'Font header has wrong magic number.'\n );\n head.flags = p.parseUShort();\n head.unitsPerEm = p.parseUShort();\n head.created = p.parseLongDateTime();\n head.modified = p.parseLongDateTime();\n head.xMin = p.parseShort();\n head.yMin = p.parseShort();\n head.xMax = p.parseShort();\n head.yMax = p.parseShort();\n head.macStyle = p.parseUShort();\n head.lowestRecPPEM = p.parseUShort();\n head.fontDirectionHint = p.parseShort();\n head.indexToLocFormat = p.parseShort();\n head.glyphDataFormat = p.parseShort();\n return head;\n}\n\nexport default { parse: parseHeadTable };\n","// The `hhea` table contains information for horizontal layout.\n// https://www.microsoft.com/typography/OTSPEC/hhea.htm\n\nimport parse from '../parse';\n\n// Parse the horizontal header `hhea` table\nfunction parseHheaTable(data, start) {\n const hhea = {};\n const p = new parse.Parser(data, start);\n hhea.version = p.parseVersion();\n hhea.ascender = p.parseShort();\n hhea.descender = p.parseShort();\n hhea.lineGap = p.parseShort();\n hhea.advanceWidthMax = p.parseUShort();\n hhea.minLeftSideBearing = p.parseShort();\n hhea.minRightSideBearing = p.parseShort();\n hhea.xMaxExtent = p.parseShort();\n hhea.caretSlopeRise = p.parseShort();\n hhea.caretSlopeRun = p.parseShort();\n hhea.caretOffset = p.parseShort();\n p.relativeOffset += 8;\n hhea.metricDataFormat = p.parseShort();\n hhea.numberOfHMetrics = p.parseUShort();\n return hhea;\n}\n\nexport default { parse: parseHheaTable };\n","// The `hmtx` table contains the horizontal metrics for all glyphs.\n// https://www.microsoft.com/typography/OTSPEC/hmtx.htm\n\nimport parse from '../parse';\n\nfunction parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) {\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n const glyph = glyphs.get(i);\n glyph.advanceWidth = advanceWidth;\n glyph.leftSideBearing = leftSideBearing;\n }\n}\n\nfunction parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) {\n font._hmtxTableData = {};\n\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n font._hmtxTableData[i] = {\n advanceWidth: advanceWidth,\n leftSideBearing: leftSideBearing,\n };\n }\n}\n\n// Parse the `hmtx` table, which contains the horizontal metrics for all glyphs.\n// This function augments the glyph array, adding the advanceWidth and leftSideBearing to each glyph.\nfunction parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) {\n if (opt.lowMemory)\n parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs);\n else parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs);\n}\n\nexport default { parse: parseHmtxTable };\n","// The `kern` table contains kerning pairs.\n// Note that some fonts use the GPOS OpenType layout table to specify kerning.\n// https://www.microsoft.com/typography/OTSPEC/kern.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseWindowsKernTable(p) {\n const pairs = {};\n // Skip nTables.\n p.skip('uShort');\n const subtableVersion = p.parseUShort();\n check.argument(subtableVersion === 0, 'Unsupported kern sub-table version.');\n // Skip subtableLength, subtableCoverage\n p.skip('uShort', 2);\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n return pairs;\n}\n\nfunction parseMacKernTable(p) {\n const pairs = {};\n // The Mac kern table stores the version as a fixed (32 bits) but we only loaded the first 16 bits.\n // Skip the rest.\n p.skip('uShort');\n const nTables = p.parseULong();\n //check.argument(nTables === 1, 'Only 1 subtable is supported (got ' + nTables + ').');\n if (nTables > 1) {\n console.warn('Only the first kern subtable is supported.');\n }\n p.skip('uLong');\n const coverage = p.parseUShort();\n const subtableVersion = coverage & 0xFF;\n p.skip('uShort');\n if (subtableVersion === 0) {\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n }\n return pairs;\n}\n\n// Parse the `kern` table which contains kerning pairs.\nfunction parseKernTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseUShort();\n if (tableVersion === 0) {\n return parseWindowsKernTable(p);\n } else if (tableVersion === 1) {\n return parseMacKernTable(p);\n } else {\n throw new Error('Unsupported kern table version (' + tableVersion + ').');\n }\n}\n\nexport default { parse: parseKernTable };\n","// The `ltag` table stores IETF BCP-47 language tags. It allows supporting\n// languages for which TrueType does not assign a numeric code.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html\n// http://www.w3.org/International/articles/language-tags/\n// http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseLtagTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported ltag table version.');\n // The 'ltag' specification does not define any flags; skip the field.\n p.skip('uLong', 1);\n const numTags = p.parseULong();\n\n const tags = [];\n for (let i = 0; i < numTags; i++) {\n let tag = '';\n const offset = start + p.parseUShort();\n const length = p.parseUShort();\n for (let j = offset; j < offset + length; ++j) {\n tag += String.fromCharCode(data.getInt8(j));\n }\n\n tags.push(tag);\n }\n\n return tags;\n}\n\nexport default { parse: parseLtagTable };\n","// The `loca` table stores the offsets to the locations of the glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/loca.htm\n\nimport parse from '../parse';\n\n// Parse the `loca` table. This table stores the offsets to the locations of the glyphs in the font,\n// relative to the beginning of the glyphData table.\n// The number of glyphs stored in the `loca` table is specified in the `maxp` table (under numGlyphs)\n// The loca table has two versions: a short version where offsets are stored as uShorts, and a long\n// version where offsets are stored as uLongs. The `head` table specifies which version to use\n// (under indexToLocFormat).\nfunction parseLocaTable(data, start, numGlyphs, shortVersion) {\n const p = new parse.Parser(data, start);\n const parseFn = shortVersion ? p.parseUShort : p.parseULong;\n // There is an extra entry after the last index element to compute the length of the last glyph.\n // That's why we use numGlyphs + 1.\n const glyphOffsets = [];\n for (let i = 0; i < numGlyphs + 1; i += 1) {\n let glyphOffset = parseFn.call(p);\n if (shortVersion) {\n // The short table version stores the actual offset divided by 2.\n glyphOffset *= 2;\n }\n\n glyphOffsets.push(glyphOffset);\n }\n\n return glyphOffsets;\n}\n\nexport default { parse: parseLocaTable };\n","// The `maxp` table establishes the memory requirements for the font.\n// We need it just to get the number of glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/maxp.htm\n\nimport parse from '../parse';\n\n// Parse the maximum profile `maxp` table.\nfunction parseMaxpTable(data, start) {\n const maxp = {};\n const p = new parse.Parser(data, start);\n maxp.version = p.parseVersion();\n maxp.numGlyphs = p.parseUShort();\n if (maxp.version === 1.0) {\n maxp.maxPoints = p.parseUShort();\n maxp.maxContours = p.parseUShort();\n maxp.maxCompositePoints = p.parseUShort();\n maxp.maxCompositeContours = p.parseUShort();\n maxp.maxZones = p.parseUShort();\n maxp.maxTwilightPoints = p.parseUShort();\n maxp.maxStorage = p.parseUShort();\n maxp.maxFunctionDefs = p.parseUShort();\n maxp.maxInstructionDefs = p.parseUShort();\n maxp.maxStackElements = p.parseUShort();\n maxp.maxSizeOfInstructions = p.parseUShort();\n maxp.maxComponentElements = p.parseUShort();\n maxp.maxComponentDepth = p.parseUShort();\n }\n\n return maxp;\n}\n\nexport default { parse: parseMaxpTable };\n","// The `OS/2` table contains metrics required in OpenType fonts.\n// https://www.microsoft.com/typography/OTSPEC/os2.htm\n\nimport parse from '../parse';\n\n// Parse the OS/2 and Windows metrics `OS/2` table\nfunction parseOS2Table(data, start) {\n const os2 = {};\n const p = new parse.Parser(data, start);\n os2.version = p.parseUShort();\n os2.xAvgCharWidth = p.parseShort();\n os2.usWeightClass = p.parseUShort();\n os2.usWidthClass = p.parseUShort();\n os2.fsType = p.parseUShort();\n os2.ySubscriptXSize = p.parseShort();\n os2.ySubscriptYSize = p.parseShort();\n os2.ySubscriptXOffset = p.parseShort();\n os2.ySubscriptYOffset = p.parseShort();\n os2.ySuperscriptXSize = p.parseShort();\n os2.ySuperscriptYSize = p.parseShort();\n os2.ySuperscriptXOffset = p.parseShort();\n os2.ySuperscriptYOffset = p.parseShort();\n os2.yStrikeoutSize = p.parseShort();\n os2.yStrikeoutPosition = p.parseShort();\n os2.sFamilyClass = p.parseShort();\n os2.panose = [];\n for (let i = 0; i < 10; i++) {\n os2.panose[i] = p.parseByte();\n }\n\n os2.ulUnicodeRange1 = p.parseULong();\n os2.ulUnicodeRange2 = p.parseULong();\n os2.ulUnicodeRange3 = p.parseULong();\n os2.ulUnicodeRange4 = p.parseULong();\n os2.achVendID = String.fromCharCode(\n p.parseByte(),\n p.parseByte(),\n p.parseByte(),\n p.parseByte()\n );\n os2.fsSelection = p.parseUShort();\n os2.usFirstCharIndex = p.parseUShort();\n os2.usLastCharIndex = p.parseUShort();\n os2.sTypoAscender = p.parseShort();\n os2.sTypoDescender = p.parseShort();\n os2.sTypoLineGap = p.parseShort();\n os2.usWinAscent = p.parseUShort();\n os2.usWinDescent = p.parseUShort();\n if (os2.version >= 1) {\n os2.ulCodePageRange1 = p.parseULong();\n os2.ulCodePageRange2 = p.parseULong();\n }\n\n if (os2.version >= 2) {\n os2.sxHeight = p.parseShort();\n os2.sCapHeight = p.parseShort();\n os2.usDefaultChar = p.parseUShort();\n os2.usBreakChar = p.parseUShort();\n os2.usMaxContent = p.parseUShort();\n }\n\n return os2;\n}\n\nexport default { parse: parseOS2Table };\n","// The `post` table stores additional PostScript information, such as glyph names.\n// https://www.microsoft.com/typography/OTSPEC/post.htm\n\nimport parse from '../parse';\n\n// Parse the PostScript `post` table\nfunction parsePostTable(data, start) {\n const post = {};\n const p = new parse.Parser(data, start);\n post.version = p.parseVersion();\n post.italicAngle = p.parseFixed();\n post.underlinePosition = p.parseShort();\n post.underlineThickness = p.parseShort();\n post.isFixedPitch = p.parseULong();\n post.minMemType42 = p.parseULong();\n post.maxMemType42 = p.parseULong();\n post.minMemType1 = p.parseULong();\n post.maxMemType1 = p.parseULong();\n post.names = [];\n switch (post.version) {\n case 1:\n break;\n case 2:\n post.numberOfGlyphs = p.parseUShort();\n post.glyphNameIndex = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.glyphNameIndex[i] = p.parseUShort();\n }\n break;\n case 2.5:\n post.numberOfGlyphs = p.parseUShort();\n post.offset = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.offset[i] = p.parseChar();\n }\n break;\n }\n return post;\n}\n\nexport default { parse: parsePostTable };\n","// Data types used in the OpenType font file.\n// All OpenType fonts use Motorola-style byte ordering (Big Endian)\n\nimport check from './check';\n\nconst LIMIT16 = 32768; // The limit at which a 16-bit number switches signs == 2^15\nconst LIMIT32 = 2147483648; // The limit at which a 32-bit number switches signs == 2 ^ 31\n\n/**\n * @exports opentype.decode\n * @class\n */\nconst decode = {};\n/**\n * @exports opentype.encode\n * @class\n */\nconst encode = {};\n/**\n * @exports opentype.sizeOf\n * @class\n */\nconst sizeOf = {};\n\n// Return a function that always returns the same value.\nfunction constant(v) {\n return function() {\n return v;\n };\n}\n\n// OpenType data types //////////////////////////////////////////////////////\n\n/**\n * Convert an 8-bit unsigned integer to a list of 1 byte.\n * @param {number}\n * @returns {Array}\n */\nencode.BYTE = function(v) {\n check.argument(v >= 0 && v <= 255, 'Byte value should be between 0 and 255.');\n return [v];\n};\n/**\n * @constant\n * @type {number}\n */\nsizeOf.BYTE = constant(1);\n\n/**\n * Convert a 8-bit signed integer to a list of 1 byte.\n * @param {string}\n * @returns {Array}\n */\nencode.CHAR = function(v) {\n return [v.charCodeAt(0)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.CHAR = constant(1);\n\n/**\n * Convert an ASCII string to a list of bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n v = '';\n console.warn('Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.');\n }\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n b[i] = v.charCodeAt(i);\n }\n\n return b;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n return 0;\n }\n return v.length;\n};\n\n/**\n * Convert a 16-bit unsigned integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.USHORT = function(v) {\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.USHORT = constant(2);\n\n/**\n * Convert a 16-bit signed integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.SHORT = function(v) {\n // Two's complement\n if (v >= LIMIT16) {\n v = -(2 * LIMIT16 - v);\n }\n\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.SHORT = constant(2);\n\n/**\n * Convert a 24-bit unsigned integer to a list of 3 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.UINT24 = function(v) {\n return [(v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.UINT24 = constant(3);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.ULONG = function(v) {\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.ULONG = constant(4);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.LONG = function(v) {\n // Two's complement\n if (v >= LIMIT32) {\n v = -(2 * LIMIT32 - v);\n }\n\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONG = constant(4);\n\nencode.FIXED = encode.ULONG;\nsizeOf.FIXED = sizeOf.ULONG;\n\nencode.FWORD = encode.SHORT;\nsizeOf.FWORD = sizeOf.SHORT;\n\nencode.UFWORD = encode.USHORT;\nsizeOf.UFWORD = sizeOf.USHORT;\n\n/**\n * Convert a 32-bit Apple Mac timestamp integer to a list of 8 bytes, 64-bit timestamp.\n * @param {number}\n * @returns {Array}\n */\nencode.LONGDATETIME = function(v) {\n return [0, 0, 0, 0, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONGDATETIME = constant(8);\n\n/**\n * Convert a 4-char tag to a list of 4 bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.TAG = function(v) {\n check.argument(v.length === 4, 'Tag should be exactly 4 ASCII characters.');\n return [v.charCodeAt(0),\n v.charCodeAt(1),\n v.charCodeAt(2),\n v.charCodeAt(3)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.TAG = constant(4);\n\n// CFF data types ///////////////////////////////////////////////////////////\n\nencode.Card8 = encode.BYTE;\nsizeOf.Card8 = sizeOf.BYTE;\n\nencode.Card16 = encode.USHORT;\nsizeOf.Card16 = sizeOf.USHORT;\n\nencode.OffSize = encode.BYTE;\nsizeOf.OffSize = sizeOf.BYTE;\n\nencode.SID = encode.USHORT;\nsizeOf.SID = sizeOf.USHORT;\n\n// Convert a numeric operand or charstring number to a variable-size list of bytes.\n/**\n * Convert a numeric operand or charstring number to a variable-size list of bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER = function(v) {\n if (v >= -107 && v <= 107) {\n return [v + 139];\n } else if (v >= 108 && v <= 1131) {\n v = v - 108;\n return [(v >> 8) + 247, v & 0xFF];\n } else if (v >= -1131 && v <= -108) {\n v = -v - 108;\n return [(v >> 8) + 251, v & 0xFF];\n } else if (v >= -32768 && v <= 32767) {\n return encode.NUMBER16(v);\n } else {\n return encode.NUMBER32(v);\n }\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.NUMBER = function(v) {\n return encode.NUMBER(v).length;\n};\n\n/**\n * Convert a signed number between -32768 and +32767 to a three-byte value.\n * This ensures we always use three bytes, but is not the most compact format.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER16 = function(v) {\n return [28, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER16 = constant(3);\n\n/**\n * Convert a signed number between -(2^31) and +(2^31-1) to a five-byte value.\n * This is useful if you want to be sure you always use four bytes,\n * at the expense of wasting a few bytes for smaller numbers.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER32 = function(v) {\n return [29, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER32 = constant(5);\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.REAL = function(v) {\n let value = v.toString();\n\n // Some numbers use an epsilon to encode the value. (e.g. JavaScript will store 0.0000001 as 1e-7)\n // This code converts it back to a number without the epsilon.\n const m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n const epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(v * epsilon) / epsilon).toString();\n }\n\n let nibbles = '';\n for (let i = 0, ii = value.length; i < ii; i += 1) {\n const c = value[i];\n if (c === 'e') {\n nibbles += value[++i] === '-' ? 'c' : 'b';\n } else if (c === '.') {\n nibbles += 'a';\n } else if (c === '-') {\n nibbles += 'e';\n } else {\n nibbles += c;\n }\n }\n\n nibbles += (nibbles.length & 1) ? 'f' : 'ff';\n const out = [30];\n for (let i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n\n return out;\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.REAL = function(v) {\n return encode.REAL(v).length;\n};\n\nencode.NAME = encode.CHARARRAY;\nsizeOf.NAME = sizeOf.CHARARRAY;\n\nencode.STRING = encode.CHARARRAY;\nsizeOf.STRING = sizeOf.CHARARRAY;\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF8 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes;\n for (let j = 0; j < numChars; j++, offset += 1) {\n codePoints[j] = data.getUint8(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF16 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes / 2;\n for (let j = 0; j < numChars; j++, offset += 2) {\n codePoints[j] = data.getUint16(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * Convert a JavaScript string to UTF16-BE.\n * @param {string}\n * @returns {Array}\n */\nencode.UTF16 = function(v) {\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n const codepoint = v.charCodeAt(i);\n b[b.length] = (codepoint >> 8) & 0xFF;\n b[b.length] = codepoint & 0xFF;\n }\n\n return b;\n};\n\n/**\n * @param {string}\n * @returns {number}\n */\nsizeOf.UTF16 = function(v) {\n return v.length * 2;\n};\n\n// Data for converting old eight-bit Macintosh encodings to Unicode.\n// This representation is optimized for decoding; encoding is slower\n// and needs more memory. The assumption is that all opentype.js users\n// want to open fonts, but saving a font will be comparatively rare\n// so it can be more expensive. Keyed by IANA character set name.\n//\n// Python script for generating these strings:\n//\n// s = u''.join([chr(c).decode('mac_greek') for c in range(128, 256)])\n// print(s.encode('utf-8'))\n/**\n * @private\n */\nconst eightBitMacEncodings = {\n 'x-mac-croatian': // Python: 'mac_croatian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø' +\n '¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ',\n 'x-mac-cyrillic': // Python: 'mac_cyrillic'\n 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњ' +\n 'јЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю',\n 'x-mac-gaelic': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæø' +\n 'ṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ',\n 'x-mac-greek': // Python: 'mac_greek'\n 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩ' +\n 'άΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\\u00AD',\n 'x-mac-icelandic': // Python: 'mac_iceland'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-inuit': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗ' +\n 'ᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł',\n 'x-mac-ce': // Python: 'mac_latin2'\n 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅ' +\n 'ņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ',\n macintosh: // Python: 'mac_roman'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-romanian': // Python: 'mac_romanian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-turkish': // Python: 'mac_turkish'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ'\n};\n\n/**\n * Decodes an old-style Macintosh string. Returns either a Unicode JavaScript\n * string, or 'undefined' if the encoding is unsupported. For example, we do\n * not support Chinese, Japanese or Korean because these would need large\n * mapping tables.\n * @param {DataView} dataView\n * @param {number} offset\n * @param {number} dataLength\n * @param {string} encoding\n * @returns {string}\n */\ndecode.MACSTRING = function(dataView, offset, dataLength, encoding) {\n const table = eightBitMacEncodings[encoding];\n if (table === undefined) {\n return undefined;\n }\n\n let result = '';\n for (let i = 0; i < dataLength; i++) {\n const c = dataView.getUint8(offset + i);\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c <= 0x7F) {\n result += String.fromCharCode(c);\n } else {\n result += table[c & 0x7F];\n }\n }\n\n return result;\n};\n\n// Helper function for encode.MACSTRING. Returns a dictionary for mapping\n// Unicode character codes to their 8-bit MacOS equivalent. This table\n// is not exactly a super cheap data structure, but we do not care because\n// encoding Macintosh strings is only rarely needed in typical applications.\nconst macEncodingTableCache = typeof WeakMap === 'function' && new WeakMap();\nlet macEncodingCacheKeys;\nconst getMacEncodingTable = function (encoding) {\n // Since we use encoding as a cache key for WeakMap, it has to be\n // a String object and not a literal. And at least on NodeJS 2.10.1,\n // WeakMap requires that the same String instance is passed for cache hits.\n if (!macEncodingCacheKeys) {\n macEncodingCacheKeys = {};\n for (let e in eightBitMacEncodings) {\n /*jshint -W053 */ // Suppress \"Do not use String as a constructor.\"\n macEncodingCacheKeys[e] = new String(e);\n }\n }\n\n const cacheKey = macEncodingCacheKeys[encoding];\n if (cacheKey === undefined) {\n return undefined;\n }\n\n // We can't do \"if (cache.has(key)) {return cache.get(key)}\" here:\n // since garbage collection may run at any time, it could also kick in\n // between the calls to cache.has() and cache.get(). In that case,\n // we would return 'undefined' even though we do support the encoding.\n if (macEncodingTableCache) {\n const cachedTable = macEncodingTableCache.get(cacheKey);\n if (cachedTable !== undefined) {\n return cachedTable;\n }\n }\n\n const decodingTable = eightBitMacEncodings[encoding];\n if (decodingTable === undefined) {\n return undefined;\n }\n\n const encodingTable = {};\n for (let i = 0; i < decodingTable.length; i++) {\n encodingTable[decodingTable.charCodeAt(i)] = i + 0x80;\n }\n\n if (macEncodingTableCache) {\n macEncodingTableCache.set(cacheKey, encodingTable);\n }\n\n return encodingTable;\n};\n\n/**\n * Encodes an old-style Macintosh string. Returns a byte array upon success.\n * If the requested encoding is unsupported, or if the input string contains\n * a character that cannot be expressed in the encoding, the function returns\n * 'undefined'.\n * @param {string} str\n * @param {string} encoding\n * @returns {Array}\n */\nencode.MACSTRING = function(str, encoding) {\n const table = getMacEncodingTable(encoding);\n if (table === undefined) {\n return undefined;\n }\n\n const result = [];\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c >= 0x80) {\n c = table[c];\n if (c === undefined) {\n // str contains a Unicode character that cannot be encoded\n // in the requested encoding.\n return undefined;\n }\n }\n result[i] = c;\n // result.push(c);\n }\n\n return result;\n};\n\n/**\n * @param {string} str\n * @param {string} encoding\n * @returns {number}\n */\nsizeOf.MACSTRING = function(str, encoding) {\n const b = encode.MACSTRING(str, encoding);\n if (b !== undefined) {\n return b.length;\n } else {\n return 0;\n }\n};\n\n// Helper for encode.VARDELTAS\nfunction isByteEncodable(value) {\n return value >= -128 && value <= 127;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsZeroes(deltas, pos, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) {\n ++pos;\n ++runLength;\n }\n result.push(0x80 | (runLength - 1));\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsBytes(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (!isByteEncodable(value)) {\n break;\n }\n\n // Within a byte-encoded run of deltas, a single zero is best\n // stored literally as 0x00 value. However, if we have two or\n // more zeroes in a sequence, it is better to start a new run.\n // Fore example, the sequence of deltas [15, 15, 0, 15, 15]\n // becomes 6 bytes (04 0F 0F 00 0F 0F) when storing the zero\n // within the current run, but 7 bytes (01 0F 0F 80 01 0F 0F)\n // when starting a new run.\n if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(runLength - 1);\n for (let i = offset; i < pos; ++i) {\n result.push((deltas[i] + 256) & 0xff);\n }\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsWords(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n\n // Within a word-encoded run of deltas, it is easiest to start\n // a new run (with a different encoding) whenever we encounter\n // a zero value. For example, the sequence [0x6666, 0, 0x7777]\n // needs 7 bytes when storing the zero inside the current run\n // (42 66 66 00 00 77 77), and equally 7 bytes when starting a\n // new run (40 66 66 80 40 77 77).\n if (value === 0) {\n break;\n }\n\n // Within a word-encoded run of deltas, a single value in the\n // range (-128..127) should be encoded within the current run\n // because it is more compact. For example, the sequence\n // [0x6666, 2, 0x7777] becomes 7 bytes when storing the value\n // literally (42 66 66 00 02 77 77), but 8 bytes when starting\n // a new run (40 66 66 00 02 40 77 77).\n if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(0x40 | (runLength - 1));\n for (let i = offset; i < pos; ++i) {\n const val = deltas[i];\n result.push(((val + 0x10000) >> 8) & 0xff, (val + 0x100) & 0xff);\n }\n return pos;\n}\n\n/**\n * Encode a list of variation adjustment deltas.\n *\n * Variation adjustment deltas are used in ‘gvar’ and ‘cvar’ tables.\n * They indicate how points (in ‘gvar’) or values (in ‘cvar’) get adjusted\n * when generating instances of variation fonts.\n *\n * @see https://www.microsoft.com/typography/otspec/gvar.htm\n * @see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6gvar.html\n * @param {Array}\n * @return {Array}\n */\nencode.VARDELTAS = function(deltas) {\n let pos = 0;\n const result = [];\n while (pos < deltas.length) {\n const value = deltas[pos];\n if (value === 0) {\n pos = encodeVarDeltaRunAsZeroes(deltas, pos, result);\n } else if (value >= -128 && value <= 127) {\n pos = encodeVarDeltaRunAsBytes(deltas, pos, result);\n } else {\n pos = encodeVarDeltaRunAsWords(deltas, pos, result);\n }\n }\n return result;\n};\n\n// Convert a list of values to a CFF INDEX structure.\n// The values should be objects containing name / type / value.\n/**\n * @param {Array} l\n * @returns {Array}\n */\nencode.INDEX = function(l) {\n //var offset, offsets, offsetEncoder, encodedOffsets, encodedOffset, data,\n // i, v;\n // Because we have to know which data type to use to encode the offsets,\n // we have to go through the values twice: once to encode the data and\n // calculate the offsets, then again to encode the offsets using the fitting data type.\n let offset = 1; // First offset is always 1.\n const offsets = [offset];\n const data = [];\n for (let i = 0; i < l.length; i += 1) {\n const v = encode.OBJECT(l[i]);\n Array.prototype.push.apply(data, v);\n offset += v.length;\n offsets.push(offset);\n }\n\n if (data.length === 0) {\n return [0, 0];\n }\n\n const encodedOffsets = [];\n const offSize = (1 + Math.floor(Math.log(offset) / Math.log(2)) / 8) | 0;\n const offsetEncoder = [undefined, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize];\n for (let i = 0; i < offsets.length; i += 1) {\n const encodedOffset = offsetEncoder(offsets[i]);\n Array.prototype.push.apply(encodedOffsets, encodedOffset);\n }\n\n return Array.prototype.concat(encode.Card16(l.length),\n encode.OffSize(offSize),\n encodedOffsets,\n data);\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.INDEX = function(v) {\n return encode.INDEX(v).length;\n};\n\n/**\n * Convert an object to a CFF DICT structure.\n * The keys should be numeric.\n * The values should be objects containing name / type / value.\n * @param {Object} m\n * @returns {Array}\n */\nencode.DICT = function(m) {\n let d = [];\n const keys = Object.keys(m);\n const length = keys.length;\n\n for (let i = 0; i < length; i += 1) {\n // Object.keys() return string keys, but our keys are always numeric.\n const k = parseInt(keys[i], 0);\n const v = m[k];\n // Value comes before the key.\n d = d.concat(encode.OPERAND(v.value, v.type));\n d = d.concat(encode.OPERATOR(k));\n }\n\n return d;\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.DICT = function(m) {\n return encode.DICT(m).length;\n};\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.OPERATOR = function(v) {\n if (v < 1200) {\n return [v];\n } else {\n return [12, v - 1200];\n }\n};\n\n/**\n * @param {Array} v\n * @param {string}\n * @returns {Array}\n */\nencode.OPERAND = function(v, type) {\n let d = [];\n if (Array.isArray(type)) {\n for (let i = 0; i < type.length; i += 1) {\n check.argument(v.length === type.length, 'Not enough arguments given for type' + type);\n d = d.concat(encode.OPERAND(v[i], type[i]));\n }\n } else {\n if (type === 'SID') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'offset') {\n // We make it easy for ourselves and always encode offsets as\n // 4 bytes. This makes offset calculation for the top dict easier.\n d = d.concat(encode.NUMBER32(v));\n } else if (type === 'number') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'real') {\n d = d.concat(encode.REAL(v));\n } else {\n throw new Error('Unknown operand type ' + type);\n // FIXME Add support for booleans\n }\n }\n\n return d;\n};\n\nencode.OP = encode.BYTE;\nsizeOf.OP = sizeOf.BYTE;\n\n// memoize charstring encoding using WeakMap if available\nconst wmm = typeof WeakMap === 'function' && new WeakMap();\n\n/**\n * Convert a list of CharString operations to bytes.\n * @param {Array}\n * @returns {Array}\n */\nencode.CHARSTRING = function(ops) {\n // See encode.MACSTRING for why we don't do \"if (wmm && wmm.has(ops))\".\n if (wmm) {\n const cachedValue = wmm.get(ops);\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n\n let d = [];\n const length = ops.length;\n\n for (let i = 0; i < length; i += 1) {\n const op = ops[i];\n d = d.concat(encode[op.type](op.value));\n }\n\n if (wmm) {\n wmm.set(ops, d);\n }\n\n return d;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARSTRING = function(ops) {\n return encode.CHARSTRING(ops).length;\n};\n\n// Utility functions ////////////////////////////////////////////////////////\n\n/**\n * Convert an object containing name / type / value to bytes.\n * @param {Object}\n * @returns {Array}\n */\nencode.OBJECT = function(v) {\n const encodingFunction = encode[v.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for type ' + v.type);\n return encodingFunction(v.value);\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.OBJECT = function(v) {\n const sizeOfFunction = sizeOf[v.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for type ' + v.type);\n return sizeOfFunction(v.value);\n};\n\n/**\n * Convert a table object to bytes.\n * A table contains a list of fields containing the metadata (name, type and default value).\n * The table itself has the field values set as attributes.\n * @param {opentype.Table}\n * @returns {Array}\n */\nencode.TABLE = function(table) {\n let d = [];\n const length = table.fields.length;\n const subtables = [];\n const subtableOffsets = [];\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const encodingFunction = encode[field.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n const bytes = encodingFunction(value);\n\n if (field.type === 'TABLE') {\n subtableOffsets.push(d.length);\n d = d.concat([0, 0]);\n subtables.push(bytes);\n } else {\n d = d.concat(bytes);\n }\n }\n\n for (let i = 0; i < subtables.length; i += 1) {\n const o = subtableOffsets[i];\n const offset = d.length;\n check.argument(offset < 65536, 'Table ' + table.tableName + ' too big.');\n d[o] = offset >> 8;\n d[o + 1] = offset & 0xff;\n d = d.concat(subtables[i]);\n }\n\n return d;\n};\n\n/**\n * @param {opentype.Table}\n * @returns {number}\n */\nsizeOf.TABLE = function(table) {\n let numBytes = 0;\n const length = table.fields.length;\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const sizeOfFunction = sizeOf[field.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n numBytes += sizeOfFunction(value);\n\n // Subtables take 2 more bytes for offsets.\n if (field.type === 'TABLE') {\n numBytes += 2;\n }\n }\n\n return numBytes;\n};\n\nencode.RECORD = encode.TABLE;\nsizeOf.RECORD = sizeOf.TABLE;\n\n// Merge in a list of bytes.\nencode.LITERAL = function(v) {\n return v;\n};\n\nsizeOf.LITERAL = function(v) {\n return v.length;\n};\n\nexport { decode, encode, sizeOf };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gpos.htm\n\nimport check from '../check';\nimport { decode } from '../types';\nimport parse from '../parse';\n\n// Parse the metadata `meta` table.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html\nfunction parseMetaTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported META table version.');\n p.parseULong(); // flags - currently unused and set to 0\n p.parseULong(); // tableOffset\n const numDataMaps = p.parseULong();\n\n const tags = {};\n for (let i = 0; i < numDataMaps; i++) {\n const tag = p.parseTag();\n const dataOffset = p.parseULong();\n const dataLength = p.parseULong();\n const text = decode.UTF8(data, start + dataOffset, dataLength);\n\n tags[tag] = text;\n }\n return tags;\n}\n\nexport default { parse: parseMetaTable };\n","// opentype.js\n// https://github.com/opentypejs/opentype.js\n// (c) 2015 Frederik De Bleser\n// opentype.js may be freely distributed under the MIT license.\n\n/* global DataView, Uint8Array */\n\nimport { inflateSync } from 'fflate';\nimport Font from './font';\nimport Glyph from './glyph';\nimport { CmapEncoding, addGlyphNames } from './encoding';\nimport parse from './parse';\nimport Path from './path';\nimport cmap from './tables/cmap';\nimport cff from './tables/cff';\nimport fvar from './tables/fvar';\nimport glyf from './tables/glyf';\nimport gdef from './tables/gdef';\nimport gpos from './tables/gpos';\nimport gsub from './tables/gsub';\nimport head from './tables/head';\nimport hhea from './tables/hhea';\nimport hmtx from './tables/hmtx';\nimport kern from './tables/kern';\nimport ltag from './tables/ltag';\nimport loca from './tables/loca';\nimport maxp from './tables/maxp';\nimport os2 from './tables/os2';\nimport post from './tables/post';\nimport meta from './tables/meta';\n\n/**\n * The opentype library.\n * @namespace opentype\n */\n\n// Table Directory Entries //////////////////////////////////////////////\n/**\n * Parses OpenType table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseOpenTypeTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 12;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const checksum = parse.getULong(data, p + 4);\n const offset = parse.getULong(data, p + 8);\n const length = parse.getULong(data, p + 12);\n tableEntries.push({\n tag: tag,\n checksum: checksum,\n offset: offset,\n length: length,\n compression: false,\n });\n p += 16;\n }\n\n return tableEntries;\n}\n\n/**\n * Parses WOFF table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseWOFFTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 44; // offset to the first table directory entry.\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const offset = parse.getULong(data, p + 4);\n const compLength = parse.getULong(data, p + 8);\n const origLength = parse.getULong(data, p + 12);\n let compression;\n if (compLength < origLength) {\n compression = 'WOFF';\n } else {\n compression = false;\n }\n\n tableEntries.push({\n tag: tag,\n offset: offset,\n compression: compression,\n compressedLength: compLength,\n length: origLength,\n });\n p += 20;\n }\n\n return tableEntries;\n}\n\n/**\n * @typedef TableData\n * @type Object\n * @property {DataView} data - The DataView\n * @property {number} offset - The data offset.\n */\n\n/**\n * @param {DataView}\n * @param {Object}\n * @return {TableData}\n */\nfunction uncompressTable(data, tableEntry) {\n if (tableEntry.compression === 'WOFF') {\n const inBuffer = new Uint8Array(\n data.buffer,\n tableEntry.offset + 2,\n tableEntry.compressedLength - 2\n );\n const outBuffer = new Uint8Array(tableEntry.length);\n inflateSync(inBuffer, outBuffer);\n if (outBuffer.byteLength !== tableEntry.length) {\n throw new Error(\n 'Decompression error: ' +\n tableEntry.tag +\n ` decompressed length doesn't match recorded length`\n );\n }\n\n const view = new DataView(outBuffer.buffer, 0);\n return { data: view, offset: 0 };\n } else {\n return { data: data, offset: tableEntry.offset };\n }\n}\n\n// Public API ///////////////////////////////////////////////////////////\n\n/**\n * Parse the OpenType file data (as an ArrayBuffer) and return a Font object.\n * Throws an error if the font could not be parsed.\n * @param {ArrayBuffer}\n * @param {Object} opt - options for parsing\n * @return {opentype.Font}\n */\nfunction parseBuffer(buffer, opt) {\n opt = opt === undefined || opt === null ? {} : opt;\n\n let indexToLocFormat;\n\n // Since the constructor can also be called to create new fonts from scratch, we indicate this\n // should be an empty font that we'll fill with our own data.\n const font = new Font({ empty: true });\n\n // OpenType fonts use big endian byte ordering.\n // We can't rely on typed array view types, because they operate with the endianness of the host computer.\n // Instead we use DataViews where we can specify endianness.\n const data = new DataView(buffer, 0);\n let numTables;\n let tableEntries = [];\n const signature = parse.getTag(data, 0);\n if (\n signature === String.fromCharCode(0, 1, 0, 0) ||\n signature === 'true' ||\n signature === 'typ1'\n ) {\n font.outlinesFormat = 'truetype';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'OTTO') {\n font.outlinesFormat = 'cff';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'wOFF') {\n const flavor = parse.getTag(data, 4);\n if (flavor === String.fromCharCode(0, 1, 0, 0)) {\n font.outlinesFormat = 'truetype';\n } else if (flavor === 'OTTO') {\n font.outlinesFormat = 'cff';\n } else {\n throw new Error('Unsupported OpenType flavor ' + signature);\n }\n\n numTables = parse.getUShort(data, 12);\n tableEntries = parseWOFFTableEntries(data, numTables);\n } else {\n throw new Error('Unsupported OpenType signature ' + signature);\n }\n\n let cffTableEntry;\n let fvarTableEntry;\n let glyfTableEntry;\n let gdefTableEntry;\n let gposTableEntry;\n let gsubTableEntry;\n let hmtxTableEntry;\n let kernTableEntry;\n let locaTableEntry;\n let metaTableEntry;\n let p;\n\n for (let i = 0; i < numTables; i += 1) {\n const tableEntry = tableEntries[i];\n let table;\n switch (tableEntry.tag) {\n case 'cmap':\n table = uncompressTable(data, tableEntry);\n font.tables.cmap = cmap.parse(table.data, table.offset);\n font.encoding = new CmapEncoding(font.tables.cmap);\n break;\n case 'cvt ':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.cvt = p.parseShortList(tableEntry.length / 2);\n break;\n case 'fvar':\n fvarTableEntry = tableEntry;\n break;\n case 'fpgm':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.fpgm = p.parseByteList(tableEntry.length);\n break;\n case 'head':\n table = uncompressTable(data, tableEntry);\n font.tables.head = head.parse(table.data, table.offset);\n font.unitsPerEm = font.tables.head.unitsPerEm;\n indexToLocFormat = font.tables.head.indexToLocFormat;\n break;\n case 'hhea':\n table = uncompressTable(data, tableEntry);\n font.tables.hhea = hhea.parse(table.data, table.offset);\n font.ascender = font.tables.hhea.ascender;\n font.descender = font.tables.hhea.descender;\n font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics;\n break;\n case 'hmtx':\n hmtxTableEntry = tableEntry;\n break;\n case 'ltag':\n table = uncompressTable(data, tableEntry);\n ltagTable = ltag.parse(table.data, table.offset);\n break;\n case 'maxp':\n table = uncompressTable(data, tableEntry);\n font.tables.maxp = maxp.parse(table.data, table.offset);\n font.numGlyphs = font.tables.maxp.numGlyphs;\n break;\n case 'OS/2':\n table = uncompressTable(data, tableEntry);\n font.tables.os2 = os2.parse(table.data, table.offset);\n break;\n case 'post':\n table = uncompressTable(data, tableEntry);\n font.tables.post = post.parse(table.data, table.offset);\n break;\n case 'prep':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.prep = p.parseByteList(tableEntry.length);\n break;\n case 'glyf':\n glyfTableEntry = tableEntry;\n break;\n case 'loca':\n locaTableEntry = tableEntry;\n break;\n case 'CFF ':\n cffTableEntry = tableEntry;\n break;\n case 'kern':\n kernTableEntry = tableEntry;\n break;\n case 'GDEF':\n gdefTableEntry = tableEntry;\n break;\n case 'GPOS':\n gposTableEntry = tableEntry;\n break;\n case 'GSUB':\n gsubTableEntry = tableEntry;\n break;\n case 'meta':\n metaTableEntry = tableEntry;\n break;\n }\n }\n\n if (glyfTableEntry && locaTableEntry) {\n const shortVersion = indexToLocFormat === 0;\n const locaTable = uncompressTable(data, locaTableEntry);\n const locaOffsets = loca.parse(\n locaTable.data,\n locaTable.offset,\n font.numGlyphs,\n shortVersion\n );\n const glyfTable = uncompressTable(data, glyfTableEntry);\n font.glyphs = glyf.parse(\n glyfTable.data,\n glyfTable.offset,\n locaOffsets,\n font,\n opt\n );\n } else if (cffTableEntry) {\n const cffTable = uncompressTable(data, cffTableEntry);\n cff.parse(cffTable.data, cffTable.offset, font, opt);\n } else {\n throw new Error(`Font doesn't contain TrueType or CFF outlines.`);\n }\n\n const hmtxTable = uncompressTable(data, hmtxTableEntry);\n hmtx.parse(\n font,\n hmtxTable.data,\n hmtxTable.offset,\n font.numberOfHMetrics,\n font.numGlyphs,\n font.glyphs,\n opt\n );\n addGlyphNames(font, opt);\n\n if (kernTableEntry) {\n const kernTable = uncompressTable(data, kernTableEntry);\n font.kerningPairs = kern.parse(kernTable.data, kernTable.offset);\n } else {\n font.kerningPairs = {};\n }\n\n if (gdefTableEntry) {\n const gdefTable = uncompressTable(data, gdefTableEntry);\n font.tables.gdef = gdef.parse(gdefTable.data, gdefTable.offset);\n }\n\n if (gposTableEntry) {\n const gposTable = uncompressTable(data, gposTableEntry);\n font.tables.gpos = gpos.parse(gposTable.data, gposTable.offset);\n font.position.init();\n }\n\n if (gsubTableEntry) {\n const gsubTable = uncompressTable(data, gsubTableEntry);\n font.tables.gsub = gsub.parse(gsubTable.data, gsubTable.offset);\n }\n\n if (fvarTableEntry) {\n const fvarTable = uncompressTable(data, fvarTableEntry);\n font.tables.fvar = fvar.parse(\n fvarTable.data,\n fvarTable.offset,\n font.names\n );\n }\n\n if (metaTableEntry) {\n const metaTable = uncompressTable(data, metaTableEntry);\n font.tables.meta = meta.parse(metaTable.data, metaTable.offset);\n font.metas = font.tables.meta;\n }\n\n return font;\n}\n\nfunction load() {}\nfunction loadSync() {}\n\nexport {\n Font,\n Glyph,\n Path,\n parse as _parse,\n parseBuffer as parse,\n load,\n loadSync,\n};\n","export async function getYogaModule() {\n const { default: initYoga } = await import('yoga-wasm-web/asm')\n return initYoga()\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n if (value.includes(\"var(\") || value.includes(\"calc(\")) {\n return `calc(${value} * -1)`;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"display\",\n \"aspectRatio\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"whitespace\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n }))), \n ];\n return pluginNames;\n}\n","/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n caretColor: ({ theme }) => theme('colors'),\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n container: {},\n content: {\n none: 'none',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => theme('colors'),\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-full': '1 / -1',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridTemplateColumns: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringColor: ({ theme }) => ({\n DEFAULT: theme(`colors.blue.500`, '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n stroke: ({ theme }) => theme('colors'),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n variantOrder: [\n 'first',\n 'last',\n 'odd',\n 'even',\n 'visited',\n 'checked',\n 'empty',\n 'read-only',\n 'group-hover',\n 'group-focus',\n 'focus-within',\n 'hover',\n 'focus',\n 'focus-visible',\n 'active',\n 'disabled',\n ],\n plugins: [],\n}\n","export default {\n info(key, messages) {\n console.info(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n warn(key, messages) {\n console.warn(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n risk(key, messages) {\n console.error(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"../util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\", \n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: ()=>defaults\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var ref;\n if (!(target === null || target === void 0 ? void 0 : (ref = target.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k1 of Object.getOwnPropertySymbols(source)){\n var ref1;\n if (!(target === null || target === void 0 ? void 0 : (ref1 = target.hasOwnProperty) === null || ref1 === void 0 ? void 0 : ref1.call(target, k1))) {\n target[k1] = source[k1];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: ()=>toPath\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: ()=>normalizeConfig\n});\nconst _log = /*#__PURE__*/ _interopRequireWildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array\n * | {\n * files: Array,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `extract` and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record\n if (typeof config.content.transform === \"object\") {\n for (let value1 of Object.values(config.content.transform)){\n if (typeof value1 !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\", \n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var ref;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (ref = purge.options) === null || ref === void 0 ? void 0 : ref.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\", \n ]);\n config.prefix = \"\";\n } else {\n var _prefix;\n config.prefix = (_prefix = config.prefix) !== null && _prefix !== void 0 ? _prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.extract) return config.purge.extract;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.extract) return config.content.extract;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.extract) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.extract.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.extract) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.extract.DEFAULT;\n if ((ref6 = config.purge) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.options) === null || ref7 === void 0 ? void 0 : ref7.extractors) return config.purge.options.extractors;\n if ((ref8 = config.content) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.options) === null || ref9 === void 0 ? void 0 : ref9.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var ref, ref1, ref2, ref3;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : (ref1 = ref.options) === null || ref1 === void 0 ? void 0 : ref1.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((ref2 = config.content) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.options) === null || ref3 === void 0 ? void 0 : ref3.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.transform) return config.purge.transform;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.transform) return config.content.transform;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.transform) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.transform.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.transform) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>isPlainObject\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: ()=>cloneDeep\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n var lower = str.toLowerCase();\n var hex = '';\n var spaceTerminated = false;\n\n for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n spaceTerminated = code === 32;\n\n if (!valid) {\n break;\n }\n\n hex += lower[i];\n }\n\n if (hex.length === 0) {\n return undefined;\n }\n\n var codePoint = parseInt(hex, 16);\n var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n }\n\n return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n var needToProcess = CONTAINS_ESCAPE.test(str);\n\n if (!needToProcess) {\n return str;\n }\n\n var ret = \"\";\n\n for (var i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n if (gobbled !== undefined) {\n ret += gobbled[0];\n i += gobbled[1];\n continue;\n } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n if (str[i + 1] === \"\\\\\") {\n ret += \"\\\\\";\n i++;\n continue;\n } // if \\\\ is at the end of the string retain it\n // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n if (str.length === i + 1) {\n ret += str[i];\n }\n\n continue;\n }\n\n ret += str[i];\n }\n\n return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n return undefined;\n }\n\n obj = obj[prop];\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n obj[prop] = {};\n }\n\n obj = obj[prop];\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n var s = \"\";\n var commentStart = str.indexOf(\"/*\");\n var lastEnd = 0;\n\n while (commentStart >= 0) {\n s = s + str.slice(lastEnd, commentStart);\n var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n if (commentEnd < 0) {\n return s;\n }\n\n lastEnd = commentEnd + 2;\n commentStart = str.indexOf(\"/*\", lastEnd);\n }\n\n s = s + str.slice(lastEnd);\n return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) {\n cloned[i] = parent;\n }\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n cloned[i] = cloneNode(value, cloned);\n }\n }\n\n return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n Object.assign(this, opts);\n this.spaces = this.spaces || {};\n this.spaces.before = this.spaces.before || '';\n this.spaces.after = this.spaces.after || '';\n }\n\n var _proto = Node.prototype;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var index in arguments) {\n this.parent.insertBefore(this, arguments[index]);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n _proto.next = function next() {\n return this.parent.at(this.parent.index(this) + 1);\n };\n\n _proto.prev = function prev() {\n return this.parent.at(this.parent.index(this) - 1);\n };\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows non standard syntax to be appended to an existing property\n * by specifying the escaped value. By specifying the escaped value,\n * illegal characters are allowed to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped optional. the escaped value of the property.\n */\n ;\n\n _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n var originalValue = this[name];\n var originalEscaped = this.raws[name];\n this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (originalEscaped || valueEscaped !== value) {\n this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n } else {\n delete this.raws[name]; // delete any escaped value that was created by the setter.\n }\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows the escaped value to be specified directly, allowing illegal\n * characters to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped the escaped value of the property.\n */\n ;\n\n _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n this.raws[name] = valueEscaped;\n }\n /**\n * When you want a value to passed through to CSS directly. This method\n * deletes the corresponding raw value causing the stringifier to fallback\n * to the unescaped value.\n * @param {string} name the property to set.\n * @param {any} value The value that is both escaped and unescaped.\n */\n ;\n\n _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (this.raws) {\n delete this.raws[name];\n }\n }\n /**\n *\n * @param {number} line The number (starting with 1)\n * @param {number} column The column number (starting with 1)\n */\n ;\n\n _proto.isAtPosition = function isAtPosition(line, column) {\n if (this.source && this.source.start && this.source.end) {\n if (this.source.start.line > line) {\n return false;\n }\n\n if (this.source.end.line < line) {\n return false;\n }\n\n if (this.source.start.line === line && this.source.start.column > column) {\n return false;\n }\n\n if (this.source.end.line === line && this.source.end.column < column) {\n return false;\n }\n\n return true;\n }\n\n return undefined;\n };\n\n _proto.stringifyProperty = function stringifyProperty(name) {\n return this.raws && this.raws[name] || this[name];\n };\n\n _proto.valueToString = function valueToString() {\n return String(this.stringifyProperty(\"value\"));\n };\n\n _proto.toString = function toString() {\n return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n };\n\n _createClass(Node, [{\n key: \"rawSpaceBefore\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces && this.spaces.before;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.before = raw;\n }\n }, {\n key: \"rawSpaceAfter\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces.after;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.after = raw;\n }\n }]);\n\n return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n\n if (!_this.nodes) {\n _this.nodes = [];\n }\n\n return _this;\n }\n\n var _proto = Container.prototype;\n\n _proto.append = function append(selector) {\n selector.parent = this;\n this.nodes.push(selector);\n return this;\n };\n\n _proto.prepend = function prepend(selector) {\n selector.parent = this;\n this.nodes.unshift(selector);\n return this;\n };\n\n _proto.at = function at(index) {\n return this.nodes[index];\n };\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.at(child).parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n _proto.removeAll = function removeAll() {\n for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n var node = _step.value;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n };\n\n _proto.empty = function empty() {\n return this.removeAll();\n };\n\n _proto.insertAfter = function insertAfter(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex + 1, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (oldIndex <= index) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto.insertBefore = function insertBefore(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index <= oldIndex) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n var found = undefined;\n this.each(function (node) {\n if (node.atPosition) {\n var foundChild = node.atPosition(line, col);\n\n if (foundChild) {\n found = foundChild;\n return false;\n }\n } else if (node.isAtPosition(line, col)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Return the most specific node at the line and column number given.\n * The source location is based on the original parsed location, locations aren't\n * updated as selector nodes are mutated.\n * \n * Note that this location is relative to the location of the first character\n * of the selector, and not the location of the selector in the overall document\n * when used in conjunction with postcss.\n *\n * If not found, returns undefined.\n * @param {number} line The line number of the node to find. (1-based index)\n * @param {number} col The column number of the node to find. (1-based index)\n */\n ;\n\n _proto.atPosition = function atPosition(line, col) {\n if (this.isAtPosition(line, col)) {\n return this._findChildAtPosition(line, col) || this;\n } else {\n return undefined;\n }\n };\n\n _proto._inferEndPosition = function _inferEndPosition() {\n if (this.last && this.last.source && this.last.source.end) {\n this.source = this.source || {};\n this.source.end = this.source.end || {};\n Object.assign(this.source.end, this.last.source.end);\n }\n };\n\n _proto.each = function each(callback) {\n if (!this.lastEach) {\n this.lastEach = 0;\n }\n\n if (!this.indexes) {\n this.indexes = {};\n }\n\n this.lastEach++;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.length) {\n return undefined;\n }\n\n var index, result;\n\n while (this.indexes[id] < this.length) {\n index = this.indexes[id];\n result = callback(this.at(index), index);\n\n if (result === false) {\n break;\n }\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n if (result === false) {\n return false;\n }\n };\n\n _proto.walk = function walk(callback) {\n return this.each(function (node, i) {\n var result = callback(node, i);\n\n if (result !== false && node.length) {\n result = node.walk(callback);\n }\n\n if (result === false) {\n return false;\n }\n });\n };\n\n _proto.walkAttributes = function walkAttributes(callback) {\n var _this2 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ATTRIBUTE) {\n return callback.call(_this2, selector);\n }\n });\n };\n\n _proto.walkClasses = function walkClasses(callback) {\n var _this3 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.CLASS) {\n return callback.call(_this3, selector);\n }\n });\n };\n\n _proto.walkCombinators = function walkCombinators(callback) {\n var _this4 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMBINATOR) {\n return callback.call(_this4, selector);\n }\n });\n };\n\n _proto.walkComments = function walkComments(callback) {\n var _this5 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMMENT) {\n return callback.call(_this5, selector);\n }\n });\n };\n\n _proto.walkIds = function walkIds(callback) {\n var _this6 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ID) {\n return callback.call(_this6, selector);\n }\n });\n };\n\n _proto.walkNesting = function walkNesting(callback) {\n var _this7 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.NESTING) {\n return callback.call(_this7, selector);\n }\n });\n };\n\n _proto.walkPseudos = function walkPseudos(callback) {\n var _this8 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.PSEUDO) {\n return callback.call(_this8, selector);\n }\n });\n };\n\n _proto.walkTags = function walkTags(callback) {\n var _this9 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.TAG) {\n return callback.call(_this9, selector);\n }\n });\n };\n\n _proto.walkUniversals = function walkUniversals(callback) {\n var _this10 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.UNIVERSAL) {\n return callback.call(_this10, selector);\n }\n });\n };\n\n _proto.split = function split(callback) {\n var _this11 = this;\n\n var current = [];\n return this.reduce(function (memo, node, index) {\n var split = callback.call(_this11, node);\n current.push(node);\n\n if (split) {\n memo.push(current);\n current = [];\n } else if (index === _this11.length - 1) {\n memo.push(current);\n }\n\n return memo;\n }, []);\n };\n\n _proto.map = function map(callback) {\n return this.nodes.map(callback);\n };\n\n _proto.reduce = function reduce(callback, memo) {\n return this.nodes.reduce(callback, memo);\n };\n\n _proto.every = function every(callback) {\n return this.nodes.every(callback);\n };\n\n _proto.some = function some(callback) {\n return this.nodes.some(callback);\n };\n\n _proto.filter = function filter(callback) {\n return this.nodes.filter(callback);\n };\n\n _proto.sort = function sort(callback) {\n return this.nodes.sort(callback);\n };\n\n _proto.toString = function toString() {\n return this.map(String).join('');\n };\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n return this.at(0);\n }\n }, {\n key: \"last\",\n get: function get() {\n return this.at(this.length - 1);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.nodes.length;\n }\n }]);\n\n return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.ROOT;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.toString = function toString() {\n var str = this.reduce(function (memo, selector) {\n memo.push(String(selector));\n return memo;\n }, []).join(',');\n return this.trailingComma ? str + ',' : str;\n };\n\n _proto.error = function error(message, options) {\n if (this._error) {\n return this._error(message, options);\n } else {\n return new Error(message);\n }\n };\n\n _createClass(Root, [{\n key: \"errorGenerator\",\n set: function set(handler) {\n this._error = handler;\n }\n }]);\n\n return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Selector, _Container);\n\n function Selector(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.SELECTOR;\n return _this;\n }\n\n return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ClassName, _Node);\n\n function ClassName(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.CLASS;\n _this._constructed = true;\n return _this;\n }\n\n var _proto = ClassName.prototype;\n\n _proto.valueToString = function valueToString() {\n return '.' + _Node.prototype.valueToString.call(this);\n };\n\n _createClass(ClassName, [{\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(v) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped !== v) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.value = escaped;\n } else if (this.raws) {\n delete this.raws.value;\n }\n }\n\n this._value = v;\n }\n }]);\n\n return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMMENT;\n return _this;\n }\n\n return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ID, _Node);\n\n function ID(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.ID;\n return _this;\n }\n\n var _proto = ID.prototype;\n\n _proto.valueToString = function valueToString() {\n return '#' + _Node.prototype.valueToString.call(this);\n };\n\n return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Namespace, _Node);\n\n function Namespace() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Namespace.prototype;\n\n _proto.qualifiedName = function qualifiedName(value) {\n if (this.namespace) {\n return this.namespaceString + \"|\" + value;\n } else {\n return value;\n }\n };\n\n _proto.valueToString = function valueToString() {\n return this.qualifiedName(_Node.prototype.valueToString.call(this));\n };\n\n _createClass(Namespace, [{\n key: \"namespace\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n this._namespace = namespace;\n\n if (this.raws) {\n delete this.raws.namespace;\n }\n\n return;\n }\n\n var escaped = (0, _cssesc[\"default\"])(namespace, {\n isIdentifier: true\n });\n this._namespace = namespace;\n\n if (escaped !== namespace) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.namespace = escaped;\n } else if (this.raws) {\n delete this.raws.namespace;\n }\n }\n }, {\n key: \"ns\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n this.namespace = namespace;\n }\n }, {\n key: \"namespaceString\",\n get: function get() {\n if (this.namespace) {\n var ns = this.stringifyProperty(\"namespace\");\n\n if (ns === true) {\n return '';\n } else {\n return ns;\n }\n } else {\n return '';\n }\n }\n }]);\n\n return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Tag, _Namespace);\n\n function Tag(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.TAG;\n return _this;\n }\n\n return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n _inheritsLoose(String, _Node);\n\n function String(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.STRING;\n return _this;\n }\n\n return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Pseudo, _Container);\n\n function Pseudo(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.PSEUDO;\n return _this;\n }\n\n var _proto = Pseudo.prototype;\n\n _proto.toString = function toString() {\n var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n };\n\n return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","module.exports = function deprecate(fn, message) {\n return function (...args) {\n console.warn(message)\n return fn(...args)\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n var deprecatedUsage = false;\n var quoteMark = null;\n var unescaped = value;\n var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n if (m) {\n quoteMark = m[1];\n unescaped = m[2];\n }\n\n unescaped = (0, _unesc[\"default\"])(unescaped);\n\n if (unescaped !== value) {\n deprecatedUsage = true;\n }\n\n return {\n deprecatedUsage: deprecatedUsage,\n unescaped: unescaped,\n quoteMark: quoteMark\n };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n if (opts.quoteMark !== undefined) {\n return opts;\n }\n\n if (opts.value === undefined) {\n return opts;\n }\n\n warnOfDeprecatedConstructor();\n\n var _unescapeValue = unescapeValue(opts.value),\n quoteMark = _unescapeValue.quoteMark,\n unescaped = _unescapeValue.unescaped;\n\n if (!opts.raws) {\n opts.raws = {};\n }\n\n if (opts.raws.value === undefined) {\n opts.raws.value = opts.value;\n }\n\n opts.value = unescaped;\n opts.quoteMark = quoteMark;\n return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Attribute, _Namespace);\n\n function Attribute(opts) {\n var _this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n _this.type = _types.ATTRIBUTE;\n _this.raws = _this.raws || {};\n Object.defineProperty(_this.raws, 'unquoted', {\n get: deprecate(function () {\n return _this.value;\n }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n set: deprecate(function () {\n return _this.value;\n }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n });\n _this._constructed = true;\n return _this;\n }\n /**\n * Returns the Attribute's value quoted such that it would be legal to use\n * in the value of a css file. The original value's quotation setting\n * used for stringification is left unchanged. See `setValue(value, options)`\n * if you want to control the quote settings of a new value for the attribute.\n *\n * You can also change the quotation used for the current value by setting quoteMark.\n *\n * Options:\n * * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n * option is not set, the original value for quoteMark will be used. If\n * indeterminate, a double quote is used. The legal values are:\n * * `null` - the value will be unquoted and characters will be escaped as necessary.\n * * `'` - the value will be quoted with a single quote and single quotes are escaped.\n * * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n * over the quoteMark option value.\n * * smart {boolean} - if true, will select a quote mark based on the value\n * and the other options specified here. See the `smartQuoteMark()`\n * method.\n **/\n\n\n var _proto = Attribute.prototype;\n\n _proto.getQuotedValue = function getQuotedValue(options) {\n if (options === void 0) {\n options = {};\n }\n\n var quoteMark = this._determineQuoteMark(options);\n\n var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n return escaped;\n };\n\n _proto._determineQuoteMark = function _determineQuoteMark(options) {\n return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n }\n /**\n * Set the unescaped value with the specified quotation options. The value\n * provided must not include any wrapping quote marks -- those quotes will\n * be interpreted as part of the value and escaped accordingly.\n */\n ;\n\n _proto.setValue = function setValue(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._value = value;\n this._quoteMark = this._determineQuoteMark(options);\n\n this._syncRawValue();\n }\n /**\n * Intelligently select a quoteMark value based on the value's contents. If\n * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n * mark will be picked that minimizes the number of escapes.\n *\n * If there's no clear winner, the quote mark from these options is used,\n * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n * true). If the quoteMark is unspecified, a double quote is used.\n *\n * @param options This takes the quoteMark and preferCurrentQuoteMark options\n * from the quoteValue method.\n */\n ;\n\n _proto.smartQuoteMark = function smartQuoteMark(options) {\n var v = this.value;\n var numSingleQuotes = v.replace(/[^']/g, '').length;\n var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n if (numSingleQuotes + numDoubleQuotes === 0) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped === v) {\n return Attribute.NO_QUOTE;\n } else {\n var pref = this.preferredQuoteMark(options);\n\n if (pref === Attribute.NO_QUOTE) {\n // pick a quote mark that isn't none and see if it's smaller\n var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n var opts = CSSESC_QUOTE_OPTIONS[quote];\n var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n if (quoteValue.length < escaped.length) {\n return quote;\n }\n }\n\n return pref;\n }\n } else if (numDoubleQuotes === numSingleQuotes) {\n return this.preferredQuoteMark(options);\n } else if (numDoubleQuotes < numSingleQuotes) {\n return Attribute.DOUBLE_QUOTE;\n } else {\n return Attribute.SINGLE_QUOTE;\n }\n }\n /**\n * Selects the preferred quote mark based on the options and the current quote mark value.\n * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n * instead.\n */\n ;\n\n _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n if (quoteMark === undefined) {\n quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n }\n\n if (quoteMark === undefined) {\n quoteMark = Attribute.DOUBLE_QUOTE;\n }\n\n return quoteMark;\n };\n\n _proto._syncRawValue = function _syncRawValue() {\n var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n if (rawValue === this._value) {\n if (this.raws) {\n delete this.raws.value;\n }\n } else {\n this.raws.value = rawValue;\n }\n };\n\n _proto._handleEscapes = function _handleEscapes(prop, value) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(value, {\n isIdentifier: true\n });\n\n if (escaped !== value) {\n this.raws[prop] = escaped;\n } else {\n delete this.raws[prop];\n }\n }\n };\n\n _proto._spacesFor = function _spacesFor(name) {\n var attrSpaces = {\n before: '',\n after: ''\n };\n var spaces = this.spaces[name] || {};\n var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n return Object.assign(attrSpaces, spaces, rawSpaces);\n };\n\n _proto._stringFor = function _stringFor(name, spaceName, concat) {\n if (spaceName === void 0) {\n spaceName = name;\n }\n\n if (concat === void 0) {\n concat = defaultAttrConcat;\n }\n\n var attrSpaces = this._spacesFor(spaceName);\n\n return concat(this.stringifyProperty(name), attrSpaces);\n }\n /**\n * returns the offset of the attribute part specified relative to the\n * start of the node of the output string.\n *\n * * \"ns\" - alias for \"namespace\"\n * * \"namespace\" - the namespace if it exists.\n * * \"attribute\" - the attribute name\n * * \"attributeNS\" - the start of the attribute or its namespace\n * * \"operator\" - the match operator of the attribute\n * * \"value\" - The value (string or identifier)\n * * \"insensitive\" - the case insensitivity flag;\n * @param part One of the possible values inside an attribute.\n * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n */\n ;\n\n _proto.offsetOf = function offsetOf(name) {\n var count = 1;\n\n var attributeSpaces = this._spacesFor(\"attribute\");\n\n count += attributeSpaces.before.length;\n\n if (name === \"namespace\" || name === \"ns\") {\n return this.namespace ? count : -1;\n }\n\n if (name === \"attributeNS\") {\n return count;\n }\n\n count += this.namespaceString.length;\n\n if (this.namespace) {\n count += 1;\n }\n\n if (name === \"attribute\") {\n return count;\n }\n\n count += this.stringifyProperty(\"attribute\").length;\n count += attributeSpaces.after.length;\n\n var operatorSpaces = this._spacesFor(\"operator\");\n\n count += operatorSpaces.before.length;\n var operator = this.stringifyProperty(\"operator\");\n\n if (name === \"operator\") {\n return operator ? count : -1;\n }\n\n count += operator.length;\n count += operatorSpaces.after.length;\n\n var valueSpaces = this._spacesFor(\"value\");\n\n count += valueSpaces.before.length;\n var value = this.stringifyProperty(\"value\");\n\n if (name === \"value\") {\n return value ? count : -1;\n }\n\n count += value.length;\n count += valueSpaces.after.length;\n\n var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n count += insensitiveSpaces.before.length;\n\n if (name === \"insensitive\") {\n return this.insensitive ? count : -1;\n }\n\n return -1;\n };\n\n _proto.toString = function toString() {\n var _this2 = this;\n\n var selector = [this.rawSpaceBefore, '['];\n selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n if (this.operator && (this.value || this.value === '')) {\n selector.push(this._stringFor('operator'));\n selector.push(this._stringFor('value'));\n selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n attrSpaces.before = \" \";\n }\n\n return defaultAttrConcat(attrValue, attrSpaces);\n }));\n }\n\n selector.push(']');\n selector.push(this.rawSpaceAfter);\n return selector.join('');\n };\n\n _createClass(Attribute, [{\n key: \"quoted\",\n get: function get() {\n var qm = this.quoteMark;\n return qm === \"'\" || qm === '\"';\n },\n set: function set(value) {\n warnOfDeprecatedQuotedAssignment();\n }\n /**\n * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n * returns `null` if the value is not quoted.\n * returns `undefined` if the quotation state is unknown (this can happen when\n * the attribute is constructed without specifying a quote mark.)\n */\n\n }, {\n key: \"quoteMark\",\n get: function get() {\n return this._quoteMark;\n }\n /**\n * Set the quote mark to be used by this attribute's value.\n * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n * value is updated accordingly.\n *\n * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n */\n ,\n set: function set(quoteMark) {\n if (!this._constructed) {\n this._quoteMark = quoteMark;\n return;\n }\n\n if (this._quoteMark !== quoteMark) {\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n }\n }\n }, {\n key: \"qualifiedAttribute\",\n get: function get() {\n return this.qualifiedName(this.raws.attribute || this.attribute);\n }\n }, {\n key: \"insensitiveFlag\",\n get: function get() {\n return this.insensitive ? 'i' : '';\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n }\n /**\n * Before 3.0, the value had to be set to an escaped value including any wrapped\n * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n * is unescaped during parsing and any quote marks are removed.\n *\n * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n * a deprecation warning is raised when the new value contains any characters that would\n * require escaping (including if it contains wrapped quotes).\n *\n * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n * how the new value is quoted.\n */\n ,\n set: function set(v) {\n if (this._constructed) {\n var _unescapeValue2 = unescapeValue(v),\n deprecatedUsage = _unescapeValue2.deprecatedUsage,\n unescaped = _unescapeValue2.unescaped,\n quoteMark = _unescapeValue2.quoteMark;\n\n if (deprecatedUsage) {\n warnOfDeprecatedValueAssignment();\n }\n\n if (unescaped === this._value && quoteMark === this._quoteMark) {\n return;\n }\n\n this._value = unescaped;\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n } else {\n this._value = v;\n }\n }\n }, {\n key: \"attribute\",\n get: function get() {\n return this._attribute;\n },\n set: function set(name) {\n this._handleEscapes(\"attribute\", name);\n\n this._attribute = name;\n }\n }]);\n\n return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n \"'\": {\n quotes: 'single',\n wrap: true\n },\n '\"': {\n quotes: 'double',\n wrap: true\n }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Universal, _Namespace);\n\n function Universal(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.UNIVERSAL;\n _this.value = '*';\n return _this;\n }\n\n return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Combinator, _Node);\n\n function Combinator(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMBINATOR;\n return _this;\n }\n\n return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Nesting, _Node);\n\n function Nesting(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.NESTING;\n _this.value = '&';\n return _this;\n }\n\n return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n return list.sort(function (a, b) {\n return a - b;\n });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n * Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n var next = start;\n var code;\n\n do {\n code = css.charCodeAt(next);\n\n if (wordDelimiters[code]) {\n return next - 1;\n } else if (code === t.backslash) {\n next = consumeEscape(css, next) + 1;\n } else {\n // All other characters are part of the word\n next++;\n }\n } while (next < css.length);\n\n return next - 1;\n}\n/**\n * Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n var next = start;\n var code = css.charCodeAt(next + 1);\n\n if (unescapable[code]) {// just consume the escape char\n } else if (hex[code]) {\n var hexDigits = 0; // consume up to 6 hex chars\n\n do {\n next++;\n hexDigits++;\n code = css.charCodeAt(next + 1);\n } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n if (hexDigits < 6 && code === t.space) {\n next++;\n }\n } else {\n // the next char is part of the current word\n next++;\n }\n\n return next;\n}\n\nvar FIELDS = {\n TYPE: 0,\n START_LINE: 1,\n START_COL: 2,\n END_LINE: 3,\n END_COL: 4,\n START_POS: 5,\n END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n var tokens = [];\n var css = input.css.valueOf();\n var _css = css,\n length = _css.length;\n var offset = -1;\n var line = 1;\n var start = 0;\n var end = 0;\n var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n function unclosed(what, fix) {\n if (input.safe) {\n // fyi: this is never set to true.\n css += fix;\n next = css.length - 1;\n } else {\n throw input.error('Unclosed ' + what, line, start - offset, start);\n }\n }\n\n while (start < length) {\n code = css.charCodeAt(start);\n\n if (code === t.newline) {\n offset = start;\n line += 1;\n }\n\n switch (code) {\n case t.space:\n case t.tab:\n case t.newline:\n case t.cr:\n case t.feed:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === t.newline) {\n offset = next;\n line += 1;\n }\n } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n tokenType = t.space;\n endLine = line;\n endColumn = next - offset - 1;\n end = next;\n break;\n\n case t.plus:\n case t.greaterThan:\n case t.tilde:\n case t.pipe:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n tokenType = t.combinator;\n endLine = line;\n endColumn = start - offset;\n end = next;\n break;\n // Consume these characters as single tokens.\n\n case t.asterisk:\n case t.ampersand:\n case t.bang:\n case t.comma:\n case t.equals:\n case t.dollar:\n case t.caret:\n case t.openSquare:\n case t.closeSquare:\n case t.colon:\n case t.semicolon:\n case t.openParenthesis:\n case t.closeParenthesis:\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n case t.singleQuote:\n case t.doubleQuote:\n quote = code === t.singleQuote ? \"'\" : '\"';\n next = start;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n unclosed('quote', quote);\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === t.backslash) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokenType = t.str;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n default:\n if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n next = css.indexOf('*/', start + 2) + 1;\n\n if (next === 0) {\n unclosed('comment', '*/');\n }\n\n content = css.slice(start, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokenType = t.comment;\n line = nextLine;\n endLine = nextLine;\n endColumn = next - nextOffset;\n } else if (code === t.slash) {\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n } else {\n next = consumeWord(css, start);\n tokenType = t.word;\n endLine = line;\n endColumn = next - offset;\n }\n\n end = next + 1;\n break;\n } // Ensure that the token structure remains consistent\n\n\n tokens.push([tokenType, // [0] Token type\n line, // [1] Starting line\n start - offset, // [2] Starting column\n endLine, // [3] Ending line\n endColumn, // [4] Ending column\n start, // [5] Start position / Source index\n end // [6] End position\n ]); // Reset offset for the next token\n\n if (nextOffset) {\n offset = nextOffset;\n nextOffset = null;\n }\n\n start = end;\n }\n\n return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n return {\n line: token[_tokenize.FIELDS.START_LINE],\n column: token[_tokenize.FIELDS.START_COL]\n };\n}\n\nfunction tokenEnd(token) {\n return {\n line: token[_tokenize.FIELDS.END_LINE],\n column: token[_tokenize.FIELDS.END_COL]\n };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n return {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n };\n}\n\nfunction getTokenSource(token) {\n return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n if (!startToken) {\n return undefined;\n }\n\n return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n var value = node[prop];\n\n if (typeof value !== \"string\") {\n return;\n }\n\n if (value.indexOf(\"\\\\\") !== -1) {\n (0, _util.ensureObject)(node, 'raws');\n node[prop] = (0, _util.unesc)(value);\n\n if (node.raws[prop] === undefined) {\n node.raws[prop] = value;\n }\n }\n\n return node;\n}\n\nfunction indexesOf(array, item) {\n var i = -1;\n var indexes = [];\n\n while ((i = array.indexOf(item, i + 1)) !== -1) {\n indexes.push(i);\n }\n\n return indexes;\n}\n\nfunction uniqs() {\n var list = Array.prototype.concat.apply([], arguments);\n return list.filter(function (item, i) {\n return i === list.indexOf(item);\n });\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.rule = rule;\n this.options = Object.assign({\n lossy: false,\n safe: false\n }, options);\n this.position = 0;\n this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n this.tokens = (0, _tokenize[\"default\"])({\n css: this.css,\n error: this._errorGenerator(),\n safe: this.options.safe\n });\n var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n this.root = new _root[\"default\"]({\n source: rootSource\n });\n this.root.errorGenerator = this._errorGenerator();\n var selector = new _selector[\"default\"]({\n source: {\n start: {\n line: 1,\n column: 1\n }\n }\n });\n this.root.append(selector);\n this.current = selector;\n this.loop();\n }\n\n var _proto = Parser.prototype;\n\n _proto._errorGenerator = function _errorGenerator() {\n var _this = this;\n\n return function (message, errorOptions) {\n if (typeof _this.rule === 'string') {\n return new Error(message);\n }\n\n return _this.rule.error(message, errorOptions);\n };\n };\n\n _proto.attribute = function attribute() {\n var attr = [];\n var startingToken = this.currToken;\n this.position++;\n\n while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n attr.push(this.currToken);\n this.position++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n\n var len = attr.length;\n var node = {\n source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n };\n\n if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n }\n\n var pos = 0;\n var spaceBefore = '';\n var commentBefore = '';\n var lastAdded = null;\n var spaceAfterMeaningfulToken = false;\n\n while (pos < len) {\n var token = attr[pos];\n var content = this.content(token);\n var next = attr[pos + 1];\n\n switch (token[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n // if (\n // len === 1 ||\n // pos === 0 && this.content(next) === '|'\n // ) {\n // return this.expected('attribute', token[TOKEN.START_POS], content);\n // }\n spaceAfterMeaningfulToken = true;\n\n if (this.options.lossy) {\n break;\n }\n\n if (lastAdded) {\n (0, _util.ensureObject)(node, 'spaces', lastAdded);\n var prevContent = node.spaces[lastAdded].after || '';\n node.spaces[lastAdded].after = prevContent + content;\n var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n if (existingComment) {\n node.raws.spaces[lastAdded].after = existingComment + content;\n }\n } else {\n spaceBefore = spaceBefore + content;\n commentBefore = commentBefore + content;\n }\n\n break;\n\n case tokens.asterisk:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = spaceBefore;\n commentBefore = '';\n }\n\n node.namespace = (node.namespace || \"\") + content;\n var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n if (rawValue) {\n node.raws.namespace += content;\n }\n\n lastAdded = 'namespace';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.dollar:\n if (lastAdded === \"value\") {\n var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n node.value += \"$\";\n\n if (oldRawValue) {\n node.raws.value = oldRawValue + \"$\";\n }\n\n break;\n }\n\n // Falls through\n\n case tokens.caret:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.combinator:\n if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n if (content !== '|') {\n spaceAfterMeaningfulToken = false;\n break;\n }\n\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if (!node.namespace && !node.attribute) {\n node.namespace = true;\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.word:\n if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n !node.operator && !node.namespace) {\n node.namespace = content;\n lastAdded = 'namespace';\n } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = commentBefore;\n commentBefore = '';\n }\n\n node.attribute = (node.attribute || \"\") + content;\n\n var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n if (_rawValue) {\n node.raws.attribute += content;\n }\n\n lastAdded = 'attribute';\n } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n var _unescaped = (0, _util.unesc)(content);\n\n var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n var oldValue = node.value || '';\n node.value = oldValue + _unescaped;\n node.quoteMark = null;\n\n if (_unescaped !== content || _oldRawValue) {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = (_oldRawValue || oldValue) + content;\n }\n\n lastAdded = 'value';\n } else {\n var insensitive = content === 'i' || content === \"I\";\n\n if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n node.insensitive = insensitive;\n\n if (!insensitive || content === \"I\") {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.insensitiveFlag = content;\n }\n\n lastAdded = 'insensitive';\n\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n node.spaces.insensitive.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n node.raws.spaces.insensitive.before = commentBefore;\n commentBefore = '';\n }\n } else if (node.value || node.value === '') {\n lastAdded = 'value';\n node.value += content;\n\n if (node.raws.value) {\n node.raws.value += content;\n }\n }\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.str:\n if (!node.attribute || !node.operator) {\n return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n var _unescapeValue = (0, _attribute.unescapeValue)(content),\n unescaped = _unescapeValue.unescaped,\n quoteMark = _unescapeValue.quoteMark;\n\n node.value = unescaped;\n node.quoteMark = quoteMark;\n lastAdded = 'value';\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = content;\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.equals:\n if (!node.attribute) {\n return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n }\n\n if (node.value) {\n return this.error('Unexpected \"=\" found; an operator was already defined.', {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n node.operator = node.operator ? node.operator + content : content;\n lastAdded = 'operator';\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.comment:\n if (lastAdded) {\n if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n node.raws.spaces[lastAdded].after = rawLastComment + content;\n } else {\n var lastValue = node[lastAdded] || '';\n var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n (0, _util.ensureObject)(node, 'raws');\n node.raws[lastAdded] = rawLastValue + content;\n }\n } else {\n commentBefore = commentBefore + content;\n }\n\n break;\n\n default:\n return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n pos++;\n }\n\n unescapeProp(node, \"attribute\");\n unescapeProp(node, \"namespace\");\n this.newNode(new _attribute[\"default\"](node));\n this.position++;\n }\n /**\n * return a node containing meaningless garbage up to (but not including) the specified token position.\n * if the token position is negative, all remaining tokens are consumed.\n *\n * This returns an array containing a single string node if all whitespace,\n * otherwise an array of comment nodes with space before and after.\n *\n * These tokens are not added to the current selector, the caller can add them or use them to amend\n * a previous node's space metadata.\n *\n * In lossy mode, this returns only comments.\n */\n ;\n\n _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n if (stopPosition < 0) {\n stopPosition = this.tokens.length;\n }\n\n var startPosition = this.position;\n var nodes = [];\n var space = \"\";\n var lastComment = undefined;\n\n do {\n if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n if (!this.options.lossy) {\n space += this.content();\n }\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n var spaces = {};\n\n if (space) {\n spaces.before = space;\n space = \"\";\n }\n\n lastComment = new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n spaces: spaces\n });\n nodes.push(lastComment);\n }\n } while (++this.position < stopPosition);\n\n if (space) {\n if (lastComment) {\n lastComment.spaces.after = space;\n } else if (!this.options.lossy) {\n var firstToken = this.tokens[startPosition];\n var lastToken = this.tokens[this.position - 1];\n nodes.push(new _string[\"default\"]({\n value: '',\n source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: {\n before: space,\n after: ''\n }\n }));\n }\n }\n\n return nodes;\n }\n /**\n * \n * @param {*} nodes \n */\n ;\n\n _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n var _this2 = this;\n\n if (requiredSpace === void 0) {\n requiredSpace = false;\n }\n\n var space = \"\";\n var rawSpace = \"\";\n nodes.forEach(function (n) {\n var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n });\n\n if (rawSpace === space) {\n rawSpace = undefined;\n }\n\n var result = {\n space: space,\n rawSpace: rawSpace\n };\n return result;\n };\n\n _proto.isNamedCombinator = function isNamedCombinator(position) {\n if (position === void 0) {\n position = this.position;\n }\n\n return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n };\n\n _proto.namedCombinator = function namedCombinator() {\n if (this.isNamedCombinator()) {\n var nameRaw = this.content(this.tokens[this.position + 1]);\n var name = (0, _util.unesc)(nameRaw).toLowerCase();\n var raws = {};\n\n if (name !== nameRaw) {\n raws.value = \"/\" + nameRaw + \"/\";\n }\n\n var node = new _combinator[\"default\"]({\n value: \"/\" + name + \"/\",\n source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n raws: raws\n });\n this.position = this.position + 3;\n return node;\n } else {\n this.unexpected();\n }\n };\n\n _proto.combinator = function combinator() {\n var _this3 = this;\n\n if (this.content() === '|') {\n return this.namespace();\n } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n if (nodes.length > 0) {\n var last = this.current.last;\n\n if (last) {\n var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n space = _this$convertWhitespa.space,\n rawSpace = _this$convertWhitespa.rawSpace;\n\n if (rawSpace !== undefined) {\n last.rawSpaceAfter += rawSpace;\n }\n\n last.spaces.after += space;\n } else {\n nodes.forEach(function (n) {\n return _this3.newNode(n);\n });\n }\n }\n\n return;\n }\n\n var firstToken = this.currToken;\n var spaceOrDescendantSelectorNodes = undefined;\n\n if (nextSigTokenPos > this.position) {\n spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n }\n\n var node;\n\n if (this.isNamedCombinator()) {\n node = this.namedCombinator();\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n node = new _combinator[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n });\n this.position++;\n } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n } else if (!spaceOrDescendantSelectorNodes) {\n this.unexpected();\n }\n\n if (node) {\n if (spaceOrDescendantSelectorNodes) {\n var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n _space = _this$convertWhitespa2.space,\n _rawSpace = _this$convertWhitespa2.rawSpace;\n\n node.spaces.before = _space;\n node.rawSpaceBefore = _rawSpace;\n }\n } else {\n // descendant combinator\n var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n _space2 = _this$convertWhitespa3.space,\n _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n if (!_rawSpace2) {\n _rawSpace2 = _space2;\n }\n\n var spaces = {};\n var raws = {\n spaces: {}\n };\n\n if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n spaces.before = _space2.slice(0, _space2.length - 1);\n raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n spaces.after = _space2.slice(1);\n raws.spaces.after = _rawSpace2.slice(1);\n } else {\n raws.value = _rawSpace2;\n }\n\n node = new _combinator[\"default\"]({\n value: ' ',\n source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: spaces,\n raws: raws\n });\n }\n\n if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n node.spaces.after = this.optionalSpace(this.content());\n this.position++;\n }\n\n return this.newNode(node);\n };\n\n _proto.comma = function comma() {\n if (this.position === this.tokens.length - 1) {\n this.root.trailingComma = true;\n this.position++;\n return;\n }\n\n this.current._inferEndPosition();\n\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position + 1])\n }\n });\n this.current.parent.append(selector);\n this.current = selector;\n this.position++;\n };\n\n _proto.comment = function comment() {\n var current = this.currToken;\n this.newNode(new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.error = function error(message, opts) {\n throw this.root.error(message, opts);\n };\n\n _proto.missingBackslash = function missingBackslash() {\n return this.error('Expected a backslash preceding the semicolon.', {\n index: this.currToken[_tokenize.FIELDS.START_POS]\n });\n };\n\n _proto.missingParenthesis = function missingParenthesis() {\n return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.missingSquareBracket = function missingSquareBracket() {\n return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.unexpected = function unexpected() {\n return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.namespace = function namespace() {\n var before = this.prevToken && this.content(this.prevToken) || true;\n\n if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.position++;\n return this.word(before);\n } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n this.position++;\n return this.universal(before);\n }\n };\n\n _proto.nesting = function nesting() {\n if (this.nextToken) {\n var nextContent = this.content(this.nextToken);\n\n if (nextContent === \"|\") {\n this.position++;\n return;\n }\n }\n\n var current = this.currToken;\n this.newNode(new _nesting[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.parentheses = function parentheses() {\n var last = this.current.last;\n var unbalanced = 1;\n this.position++;\n\n if (last && last.type === types.PSEUDO) {\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position - 1])\n }\n });\n var cache = this.current;\n last.append(selector);\n this.current = selector;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n if (unbalanced) {\n this.parse();\n } else {\n this.current.source.end = tokenEnd(this.currToken);\n this.current.parent.source.end = tokenEnd(this.currToken);\n this.position++;\n }\n }\n\n this.current = cache;\n } else {\n // I think this case should be an error. It's used to implement a basic parse of media queries\n // but I don't think it's a good idea.\n var parenStart = this.currToken;\n var parenValue = \"(\";\n var parenEnd;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n parenEnd = this.currToken;\n parenValue += this.parseParenthesisToken(this.currToken);\n this.position++;\n }\n\n if (last) {\n last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n } else {\n this.newNode(new _string[\"default\"]({\n value: parenValue,\n source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n }));\n }\n }\n\n if (unbalanced) {\n return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.pseudo = function pseudo() {\n var _this4 = this;\n\n var pseudoStr = '';\n var startingToken = this.currToken;\n\n while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n pseudoStr += this.content();\n this.position++;\n }\n\n if (!this.currToken) {\n return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.splitWord(false, function (first, length) {\n pseudoStr += first;\n\n _this4.newNode(new _pseudo[\"default\"]({\n value: pseudoStr,\n source: getTokenSourceSpan(startingToken, _this4.currToken),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n }));\n\n if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n _this4.error('Misplaced parenthesis.', {\n index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n });\n }\n });\n } else {\n return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.space = function space() {\n var content = this.content(); // Handle space before and after the selector\n\n if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n return node.type === 'comment';\n })) {\n this.spaces = this.optionalSpace(content);\n this.position++;\n } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n this.current.last.spaces.after = this.optionalSpace(content);\n this.position++;\n } else {\n this.combinator();\n }\n };\n\n _proto.string = function string() {\n var current = this.currToken;\n this.newNode(new _string[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.universal = function universal(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n var current = this.currToken;\n this.newNode(new _universal[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }), namespace);\n this.position++;\n };\n\n _proto.splitWord = function splitWord(namespace, firstCallback) {\n var _this5 = this;\n\n var nextToken = this.nextToken;\n var word = this.content();\n\n while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n this.position++;\n var current = this.content();\n word += current;\n\n if (current.lastIndexOf('\\\\') === current.length - 1) {\n var next = this.nextToken;\n\n if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n word += this.requiredSpace(this.content(next));\n this.position++;\n }\n }\n\n nextToken = this.nextToken;\n }\n\n var hasClass = indexesOf(word, '.').filter(function (i) {\n // Allow escaped dot within class name\n var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n return !escapedDot && !isKeyframesPercent;\n });\n var hasId = indexesOf(word, '#').filter(function (i) {\n return word[i - 1] !== '\\\\';\n }); // Eliminate Sass interpolations from the list of id indexes\n\n var interpolations = indexesOf(word, '#{');\n\n if (interpolations.length) {\n hasId = hasId.filter(function (hashIndex) {\n return !~interpolations.indexOf(hashIndex);\n });\n }\n\n var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n indices.forEach(function (ind, i) {\n var index = indices[i + 1] || word.length;\n var value = word.slice(ind, index);\n\n if (i === 0 && firstCallback) {\n return firstCallback.call(_this5, value, indices.length);\n }\n\n var node;\n var current = _this5.currToken;\n var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n if (~hasClass.indexOf(ind)) {\n var classNameOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n } else if (~hasId.indexOf(ind)) {\n var idOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n } else {\n var tagOpts = {\n value: value,\n source: source,\n sourceIndex: sourceIndex\n };\n unescapeProp(tagOpts, \"value\");\n node = new _tag[\"default\"](tagOpts);\n }\n\n _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n namespace = null;\n });\n this.position++;\n };\n\n _proto.word = function word(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n return this.splitWord(namespace);\n };\n\n _proto.loop = function loop() {\n while (this.position < this.tokens.length) {\n this.parse(true);\n }\n\n this.current._inferEndPosition();\n\n return this.root;\n };\n\n _proto.parse = function parse(throwOnParenthesis) {\n switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n this.space();\n break;\n\n case tokens.comment:\n this.comment();\n break;\n\n case tokens.openParenthesis:\n this.parentheses();\n break;\n\n case tokens.closeParenthesis:\n if (throwOnParenthesis) {\n this.missingParenthesis();\n }\n\n break;\n\n case tokens.openSquare:\n this.attribute();\n break;\n\n case tokens.dollar:\n case tokens.caret:\n case tokens.equals:\n case tokens.word:\n this.word();\n break;\n\n case tokens.colon:\n this.pseudo();\n break;\n\n case tokens.comma:\n this.comma();\n break;\n\n case tokens.asterisk:\n this.universal();\n break;\n\n case tokens.ampersand:\n this.nesting();\n break;\n\n case tokens.slash:\n case tokens.combinator:\n this.combinator();\n break;\n\n case tokens.str:\n this.string();\n break;\n // These cases throw; no break needed.\n\n case tokens.closeSquare:\n this.missingSquareBracket();\n\n case tokens.semicolon:\n this.missingBackslash();\n\n default:\n this.unexpected();\n }\n }\n /**\n * Helpers\n */\n ;\n\n _proto.expected = function expected(description, index, found) {\n if (Array.isArray(description)) {\n var last = description.pop();\n description = description.join(', ') + \" or \" + last;\n }\n\n var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n if (!found) {\n return this.error(\"Expected \" + an + \" \" + description + \".\", {\n index: index\n });\n }\n\n return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n index: index\n });\n };\n\n _proto.requiredSpace = function requiredSpace(space) {\n return this.options.lossy ? ' ' : space;\n };\n\n _proto.optionalSpace = function optionalSpace(space) {\n return this.options.lossy ? '' : space;\n };\n\n _proto.lossySpace = function lossySpace(space, required) {\n if (this.options.lossy) {\n return required ? ' ' : '';\n } else {\n return space;\n }\n };\n\n _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n var content = this.content(token);\n\n if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n return this.requiredSpace(content);\n } else {\n return content;\n }\n };\n\n _proto.newNode = function newNode(node, namespace) {\n if (namespace) {\n if (/^ +$/.test(namespace)) {\n if (!this.options.lossy) {\n this.spaces = (this.spaces || '') + namespace;\n }\n\n namespace = true;\n }\n\n node.namespace = namespace;\n unescapeProp(node, \"namespace\");\n }\n\n if (this.spaces) {\n node.spaces.before = this.spaces;\n this.spaces = '';\n }\n\n return this.current.append(node);\n };\n\n _proto.content = function content(token) {\n if (token === void 0) {\n token = this.currToken;\n }\n\n return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n };\n\n /**\n * returns the index of the next non-whitespace, non-comment token.\n * returns -1 if no meaningful token is found.\n */\n _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n if (startPosition === void 0) {\n startPosition = this.position + 1;\n }\n\n var searchPosition = startPosition;\n\n while (searchPosition < this.tokens.length) {\n if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n searchPosition++;\n continue;\n } else {\n return searchPosition;\n }\n }\n\n return -1;\n };\n\n _createClass(Parser, [{\n key: \"currToken\",\n get: function get() {\n return this.tokens[this.position];\n }\n }, {\n key: \"nextToken\",\n get: function get() {\n return this.tokens[this.position + 1];\n }\n }, {\n key: \"prevToken\",\n get: function get() {\n return this.tokens[this.position - 1];\n }\n }]);\n\n return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n function Processor(func, options) {\n this.func = func || function noop() {};\n\n this.funcRes = null;\n this.options = options;\n }\n\n var _proto = Processor.prototype;\n\n _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.updateSelector === false) {\n return false;\n } else {\n return typeof rule !== \"string\";\n }\n };\n\n _proto._isLossy = function _isLossy(options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.lossless === false) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto._root = function _root(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n return parser.root;\n };\n\n _proto._parseOptions = function _parseOptions(options) {\n return {\n lossy: this._isLossy(options)\n };\n };\n\n _proto._run = function _run(rule, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var root = _this._root(rule, options);\n\n Promise.resolve(_this.func(root)).then(function (transform) {\n var string = undefined;\n\n if (_this._shouldUpdateSelector(rule, options)) {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }).then(resolve, reject);\n } catch (e) {\n reject(e);\n return;\n }\n });\n };\n\n _proto._runSync = function _runSync(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var root = this._root(rule, options);\n\n var transform = this.func(root);\n\n if (transform && typeof transform.then === \"function\") {\n throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n }\n\n var string = undefined;\n\n if (options.updateSelector && typeof rule !== \"string\") {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }\n /**\n * Process rule into a selector AST.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The AST of the selector after processing it.\n */\n ;\n\n _proto.ast = function ast(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.root;\n });\n }\n /**\n * Process rule into a selector AST synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {parser.Root} The AST of the selector after processing it.\n */\n ;\n\n _proto.astSync = function astSync(rule, options) {\n return this._runSync(rule, options).root;\n }\n /**\n * Process a selector into a transformed value asynchronously\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The value returned by the processor.\n */\n ;\n\n _proto.transform = function transform(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.transform;\n });\n }\n /**\n * Process a selector into a transformed value synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {any} The value returned by the processor.\n */\n ;\n\n _proto.transformSync = function transformSync(rule, options) {\n return this._runSync(rule, options).transform;\n }\n /**\n * Process a selector into a new selector string asynchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.process = function process(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.string || result.root.toString();\n });\n }\n /**\n * Process a selector into a new selector string synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.processSync = function processSync(rule, options) {\n var result = this._runSync(rule, options);\n\n return result.string || result.root.toString();\n };\n\n return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _constructors[key]) return;\n exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _guards[key]) return;\n exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>escapeCommas\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: ()=>parseColor,\n formatColor: ()=>formatColor\n});\nconst _colorName = /*#__PURE__*/ _interopRequireDefault(require(\"color-name\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgb)a?\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsl)a?\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var ref, ref1;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorName.default) {\n return {\n mode: \"rgb\",\n color: _colorName.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var ref2;\n let match = (ref2 = value.match(RGB)) !== null && ref2 !== void 0 ? ref2 : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: ()=>withAlphaValue,\n default: ()=>withAlphaVariable\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n pattern: ()=>pattern,\n withoutCapturing: ()=>withoutCapturing,\n any: ()=>any,\n optional: ()=>optional,\n zeroOrMore: ()=>zeroOrMore,\n nestedBrackets: ()=>nestedBrackets,\n escape: ()=>escape\n});\nconst REGEX_SPECIAL = /[\\\\^$.*+?()[\\]{}|]/g;\nconst REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source);\n/**\n * @param {string|RegExp|Array} source\n */ function toSource(source) {\n source = Array.isArray(source) ? source : [\n source\n ];\n source = source.map((item)=>item instanceof RegExp ? item.source : item);\n return source.join(\"\");\n}\nfunction pattern(source) {\n return new RegExp(toSource(source), \"g\");\n}\nfunction withoutCapturing(source) {\n return new RegExp(`(?:${toSource(source)})`, \"g\");\n}\nfunction any(sources) {\n return `(?:${sources.map(toSource).join(\"|\")})`;\n}\nfunction optional(source) {\n return `(?:${toSource(source)})?`;\n}\nfunction zeroOrMore(source) {\n return `(?:${toSource(source)})*`;\n}\nfunction nestedBrackets(open, close, depth = 1) {\n return withoutCapturing([\n escape(open),\n /[^\\s]*/,\n depth === 1 ? `[^${escape(open)}${escape(close)}\\s]*` : any([\n `[^${escape(open)}${escape(close)}\\s]*`,\n nestedBrackets(open, close, depth - 1)\n ]),\n /[^\\s]*/,\n escape(close), \n ]);\n}\nfunction escape(string) {\n return string && REGEX_HAS_SPECIAL.test(string) ? string.replace(REGEX_SPECIAL, \"\\\\$&\") : string || \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: ()=>splitAtTopLevelOnly\n});\nconst _regex = /*#__PURE__*/ _interopRequireWildcard(require(\"../lib/regex\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction* splitAtTopLevelOnly(input, separator) {\n let SPECIALS = new RegExp(`[(){}\\\\[\\\\]${_regex.escape(separator)}]`, \"g\");\n let depth = 0;\n let lastIndex = 0;\n let found = false;\n let separatorIndex = 0;\n let separatorStart = 0;\n let separatorLength = separator.length;\n // Find all paren-like things & character\n // And only split on commas if they're top-level\n for (let match of input.matchAll(SPECIALS)){\n let matchesSeparator = match[0] === separator[separatorIndex];\n let atEndOfSeparator = separatorIndex === separatorLength - 1;\n let matchesFullSeparator = matchesSeparator && atEndOfSeparator;\n if (match[0] === \"(\") depth++;\n if (match[0] === \")\") depth--;\n if (match[0] === \"[\") depth++;\n if (match[0] === \"]\") depth--;\n if (match[0] === \"{\") depth++;\n if (match[0] === \"}\") depth--;\n if (matchesSeparator && depth === 0) {\n if (separatorStart === 0) {\n separatorStart = match.index;\n }\n separatorIndex++;\n }\n if (matchesFullSeparator && depth === 0) {\n found = true;\n yield input.substring(lastIndex, separatorStart);\n lastIndex = separatorStart + separatorLength;\n }\n if (separatorIndex === separatorLength) {\n separatorIndex = 0;\n separatorStart = 0;\n }\n }\n // Provide the last segment of the string if available\n // Otherwise the whole string since no `char`s were found\n // This mirrors the behavior of string.split()\n if (found) {\n yield input.substring(lastIndex);\n } else {\n yield input;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: ()=>parseBoxShadowValue,\n formatBoxShadowValue: ()=>formatBoxShadowValue\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = Array.from((0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\"));\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: ()=>normalize,\n url: ()=>url,\n number: ()=>number,\n percentage: ()=>percentage,\n length: ()=>length,\n lineWidth: ()=>lineWidth,\n shadow: ()=>shadow,\n color: ()=>color,\n image: ()=>image,\n gradient: ()=>gradient,\n position: ()=>position,\n familyName: ()=>familyName,\n genericName: ()=>genericName,\n absoluteSize: ()=>absoluteSize,\n relativeSize: ()=>relativeSize\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nlet COMMA = /,(?![^(]*\\))/g // Comma separator that is not located between brackets. E.g.: `cubiz-bezier(a, b, c)` these don't count.\n;\nlet UNDERSCORE = /_(?![^(]*\\))/g // Underscore separator that is not located between brackets. E.g.: `rgba(255,_255,_255)_black` these don't count.\n;\nfunction normalize(value, isRoot = true) {\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n // Add spaces around operators inside math functions like calc() that do not follow an operator\n // or '('.\n value = value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n return match.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \");\n });\n return value;\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?`).test(value));\n}\nfunction percentage(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return /%$/g.test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?%`).test(part));\n });\n}\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\", \n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return part === \"0\" || new RegExp(`${lengthUnitsPattern}$`).test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?${lengthUnitsPattern}`).test(part));\n });\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\",\n \"conic-gradient\", \n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\", \n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"x-large\",\n \"xxx-large\", \n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: ()=>updateAllClasses,\n asValue: ()=>asValue,\n parseColorFormat: ()=>parseColorFormat,\n asColor: ()=>asColor,\n asLookupValue: ()=>asLookupValue,\n coerceValue: ()=>coerceValue\n});\nconst _postcssSelectorParser = /*#__PURE__*/ _interopRequireDefault(require(\"postcss-selector-parser\"));\nconst _escapeCommas = /*#__PURE__*/ _interopRequireDefault(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n selectors.walkClasses((sel)=>{\n let updatedClass = updateClass(sel.value);\n sel.value = updatedClass;\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n });\n let result = parser.processSync(selectors);\n return result;\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var ref;\n let value = (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitAlpha(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"\", opacityValue);\n }\n return value;\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var ref;\n if (((ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier]) !== undefined) {\n var ref1;\n return parseColorFormat((ref1 = options.values) === null || ref1 === void 0 ? void 0 : ref1[modifier]);\n }\n let [color, alpha] = splitAlpha(modifier);\n if (alpha !== undefined) {\n var ref2, ref3, ref4;\n var ref5;\n let normalizedColor = (ref5 = (ref2 = options.values) === null || ref2 === void 0 ? void 0 : ref2[color]) !== null && ref5 !== void 0 ? ref5 : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, alpha.slice(1, -1));\n }\n if (((ref3 = tailwindConfig.theme) === null || ref3 === void 0 ? void 0 : (ref4 = ref3.opacity) === null || ref4 === void 0 ? void 0 : ref4[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var ref;\n return (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType\n ];\n }\n }\n // Find first matching type\n for (let type of [].concat(types)){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result !== undefined) return [\n result,\n type\n ];\n }\n return [];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>toColorValue\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interopRequireDefault(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interopRequireDefault(require(\"./configurePlugins\"));\nconst _defaultConfigStub = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub\"));\nconst _colors = /*#__PURE__*/ _interopRequireDefault(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interopRequireDefault(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interopRequireDefault(require(\"./toColorValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction isObject(input) {\n return typeof input === \"object\" && input !== null;\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if (isObject(target[k]) && isObject(source[k])) {\n target[k] = mergeWith(target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && isObject(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && isObject(value[0]) && isObject(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var ref;\n const plugins = (ref = config === null || config === void 0 ? void 0 : config.plugins) !== null && ref !== void 0 ? ref : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var ref;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (ref = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && ref !== void 0 ? ref : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\",\n variantOrder: _defaultConfigStub.default.variantOrder\n }, \n ];\n var ref, ref1;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (ref = t === null || t === void 0 ? void 0 : t.theme) !== null && ref !== void 0 ? ref : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (ref1 = c === null || c === void 0 ? void 0 : c.plugins) !== null && ref1 !== void 0 ? ref1 : [];\n }))\n }, ...allConfigs));\n}\n","export default {\n yellow: (s) => s,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: ()=>flagEnabled,\n issueFlagNotices: ()=>issueFlagNotices,\n default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"./util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"matchVariant\" /* , 'variantGrouping' */ \n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var ref;\n var ref1, ref2;\n return config.future === \"all\" || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var ref3;\n var ref4, ref5;\n return config.experimental === \"all\" || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var ref;\n return Object.keys((ref = config === null || config === void 0 ? void 0 : config.experimental) !== null && ref !== void 0 ? ref : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\", \n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>getAllConfigs\n});\nconst _defaultConfigStubJs = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var ref;\n const configs = ((ref = config === null || config === void 0 ? void 0 : config.presets) !== null && ref !== void 0 ? ref : [\n _defaultConfigStubJs.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(typeof preset === \"function\" ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: {\n DEFAULT: \"#3b82f67f\"\n }\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _resolveConfig = /*#__PURE__*/ _interopRequireDefault(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interopRequireDefault(require(\"../util/getAllConfigs\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","import type { Yoga } from 'yoga-wasm-web'\n\nlet yogaInstance: Yoga\n\nexport function init(yoga: Yoga) {\n yogaInstance = yoga\n}\n\nlet initializationPromise = null\n\nexport default async function getYoga(): Promise {\n if (yogaInstance) return yogaInstance\n\n if (initializationPromise) {\n await initializationPromise\n return yogaInstance\n }\n\n initializationPromise = import('@yoga')\n .then((mod) => mod.getYogaModule())\n .then((yoga) => (yogaInstance = yoga))\n\n await initializationPromise\n initializationPromise = null\n\n return yogaInstance\n}\n","var e=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var u=e((k,g)=>{g.exports=[\"em\",\"ex\",\"ch\",\"rem\",\"vh\",\"vw\",\"vmin\",\"vmax\",\"px\",\"mm\",\"cm\",\"in\",\"pt\",\"pc\",\"mozmm\"]});var a=e((z,v)=>{v.exports=[\"deg\",\"grad\",\"rad\",\"turn\"]});var c=e((L,w)=>{w.exports=[\"dpi\",\"dpcm\",\"dppx\"]});var h=e(($,y)=>{y.exports=[\"Hz\",\"kHz\"]});var m=e((j,b)=>{b.exports=[\"s\",\"ms\"]});var q=u(),f=a(),p=c(),l=h(),d=m();function s(t){if(/\\.\\D?$/.test(t))throw new Error(\"The dot should be followed by a number\");if(/^[+-]{2}/.test(t))throw new Error(\"Only one leading +/- is allowed\");if(x(t)>1)throw new Error(\"Only one dot is allowed\");if(/%$/.test(t)){this.type=\"percentage\",this.value=o(t),this.unit=\"%\";return}var r=O(t);if(!r){this.type=\"number\",this.value=o(t);return}this.type=F(r),this.value=o(t.substr(0,t.length-r.length)),this.unit=r}s.prototype.valueOf=function(){return this.value};s.prototype.toString=function(){return this.value+(this.unit||\"\")};function U(t){return new s(t)}function x(t){var r=t.match(/\\./g);return r?r.length:0}function o(t){var r=parseFloat(t);if(isNaN(r))throw new Error(\"Invalid number: \"+t);return r}var E=[].concat(f,l,q,p,d);function O(t){var r=t.match(/\\D+$/),n=r&&r[0];if(n&&E.indexOf(n)===-1)throw new Error(\"Invalid unit: \"+n);return n}var D=Object.assign(i(f,\"angle\"),i(l,\"frequency\"),i(p,\"resolution\"),i(d,\"time\"));function i(t,r){return Object.fromEntries(t.map(n=>[n,r]))}function F(t){return D[t]||\"length\"}export{U as default};\n","import type { ReactNode, ReactElement } from 'react'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\nimport LineBreaker from 'linebreak'\n\nexport function isReactElement(node: ReactNode): node is ReactElement {\n const type = typeof node\n if (\n type === 'number' ||\n type === 'bigint' ||\n type === 'string' ||\n type === 'boolean'\n ) {\n return false\n }\n return true\n}\n\nexport function isClass(f: Function) {\n return /^class\\s/.test(f.toString())\n}\n\nexport function hasDangerouslySetInnerHTMLProp(props: any) {\n return 'dangerouslySetInnerHTML' in props\n}\n\nexport function normalizeChildren(children: any) {\n const flattend =\n typeof children === 'undefined' ? [] : [].concat(children).flat(Infinity)\n\n const res = []\n for (let i = 0; i < flattend.length; i++) {\n let value = flattend[i]\n if (\n typeof value === 'undefined' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n continue\n }\n if (typeof value === 'number') {\n value = String(value)\n }\n if (\n typeof value === 'string' &&\n res.length &&\n typeof res[res.length - 1] === 'string'\n ) {\n res[res.length - 1] += value\n } else {\n res.push(value)\n }\n }\n return res\n}\n\nexport function lengthToNumber(\n length: string | number,\n baseFontSize: number,\n baseLength: number,\n inheritedStyle: Record,\n percentage = false\n): number | undefined {\n if (typeof length === 'number') return length\n\n // Convert em and rem values to number (px), convert rad to deg.\n try {\n length = length.trim()\n\n // Not length: `1px/2px`, `1px 2px`, `1px, 2px`, `calc(1px)`.\n if (/[ /\\(,]/.test(length)) return\n\n // Just a number as string: '100'\n if (length === String(+length)) return +length\n\n const parsed = new CssDimension(length)\n if (parsed.type === 'length') {\n switch (parsed.unit) {\n case 'em':\n return parsed.value * baseFontSize\n case 'rem':\n return parsed.value * 16\n case 'vw':\n return ~~(\n (parsed.value * (inheritedStyle._viewportWidth as number)) /\n 100\n )\n case 'vh':\n return ~~(\n (parsed.value * (inheritedStyle._viewportHeight as number)) /\n 100\n )\n default:\n return parsed.value\n }\n } else if (parsed.type === 'angle') {\n return calcDegree(length)\n } else if (parsed.type === 'percentage') {\n if (percentage) {\n return (parsed.value / 100) * baseLength\n }\n }\n } catch {\n // Not a length unit, silently ignore.\n }\n}\n\nexport function calcDegree(deg: string) {\n const parsed = new CssDimension(deg)\n\n switch (parsed.unit) {\n case 'deg':\n return parsed.value\n case 'rad':\n return (parsed.value * 180) / Math.PI\n case 'turn':\n return parsed.value * 360\n case 'grad':\n return 0.9 * parsed.value\n }\n}\n\n// Multiplies two 2d transform matrices.\nexport function multiply(m1: number[], m2: number[]) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ]\n}\n\nexport function v(\n field: string | number | undefined,\n map: Record,\n fallback: any,\n errorIfNotAllowedForProperty?: string\n) {\n let value = map[field]\n if (typeof value === 'undefined') {\n if (errorIfNotAllowedForProperty && typeof field !== 'undefined') {\n throw new Error(\n `Invalid value for CSS property \"${errorIfNotAllowedForProperty}\". Allowed values: ${Object.keys(\n map\n )\n .map((_v) => `\"${_v}\"`)\n .join(' | ')}. Received: \"${field}\".`\n )\n }\n value = fallback\n }\n return value\n}\n\nlet wordSegmenter\nlet graphemeSegmenter\n\n// Implementation modified from\n// https://github.com/niklasvh/html2canvas/blob/6521a487d78172f7179f7c973c1a3af40eb92009/src/css/layout/text.ts\n// https://drafts.csswg.org/css-text/#word-separator\nexport const wordSeparators = [\n 0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091, 0xa,\n].map((point) => String.fromCodePoint(point))\n\nexport function segment(\n content: string,\n granularity: 'word' | 'grapheme',\n locale?: string\n): string[] {\n if (!wordSegmenter || !graphemeSegmenter) {\n if (!(typeof Intl !== 'undefined' && 'Segmenter' in Intl)) {\n // https://caniuse.com/mdn-javascript_builtins_intl_segments\n throw new Error(\n 'Intl.Segmenter does not exist, please use import a polyfill.'\n )\n }\n\n wordSegmenter = new Intl.Segmenter(locale, { granularity: 'word' })\n graphemeSegmenter = new Intl.Segmenter(locale, {\n granularity: 'grapheme',\n })\n }\n\n if (granularity === 'grapheme') {\n return [...graphemeSegmenter.segment(content)].map((seg) => seg.segment)\n } else {\n const segmented = [...wordSegmenter.segment(content)].map(\n (seg) => seg.segment\n ) as string[]\n\n const output = []\n\n let i = 0\n // When there is a non-breaking space, join the previous and next words together.\n // This change causes them to be treated as a single segment.\n while (i < segmented.length) {\n const s = segmented[i]\n\n if (s == '\\u00a0') {\n const previousWord = i === 0 ? '' : output.pop()\n const nextWord = i === segmented.length - 1 ? '' : segmented[i + 1]\n\n output.push(previousWord + '\\u00a0' + nextWord)\n i += 2\n } else {\n output.push(s)\n i++\n }\n }\n\n return output\n }\n}\n\nexport function buildXMLString(\n type: string,\n attrs: Record,\n children?: string\n) {\n let attrString = ''\n\n for (const [k, _v] of Object.entries(attrs)) {\n if (typeof _v !== 'undefined') {\n attrString += ` ${k}=\"${_v}\"`\n }\n }\n\n if (children) {\n return `<${type}${attrString}>${children}`\n }\n return `<${type}${attrString}/>`\n}\n\nexport function createLRU(max = 20) {\n const store: Map = new Map()\n function set(key: string, value: T) {\n if (store.size >= max) {\n const keyToDelete = store.keys().next().value\n store.delete(keyToDelete)\n }\n store.set(key, value)\n }\n function get(key: string): T | undefined {\n const hasKey = store.has(key)\n if (!hasKey) return undefined\n\n const entry = store.get(key)!\n store.delete(key)\n store.set(key, entry)\n return entry\n }\n function clear() {\n store.clear()\n }\n\n return {\n set,\n get,\n clear,\n }\n}\n\nexport function parseViewBox(viewBox?: string | null | undefined) {\n return viewBox ? viewBox.split(/[, ]/).filter(Boolean).map(Number) : null\n}\n\nexport function toString(x: unknown): string {\n return Object.prototype.toString.call(x)\n}\n\nexport function isString(x: unknown): x is string {\n return typeof x === 'string'\n}\n\nexport function isNumber(x: unknown): x is number {\n return typeof x === 'number'\n}\n\nexport function isUndefined(x: unknown): x is undefined {\n return toString(x) === '[object Undefined]'\n}\n\nexport function splitByBreakOpportunities(\n content: string,\n wordBreak: string\n): {\n words: string[]\n requiredBreaks: boolean[]\n} {\n if (wordBreak === 'break-all') {\n return { words: segment(content, 'grapheme'), requiredBreaks: [] }\n }\n\n if (wordBreak === 'keep-all') {\n return { words: segment(content, 'word'), requiredBreaks: [] }\n }\n\n const breaker = new LineBreaker(content)\n let last = 0\n let bk = breaker.nextBreak()\n const words = []\n const requiredBreaks = [false]\n\n while (bk) {\n const word = content.slice(last, bk.position)\n words.push(word)\n\n if (bk.required) {\n requiredBreaks.push(true)\n } else {\n requiredBreaks.push(false)\n }\n\n last = bk.position\n bk = breaker.nextBreak()\n }\n\n return { words, requiredBreaks }\n}\n\nexport const midline = (s: string) => {\n return s.replaceAll(\n /([A-Z])/g,\n (_, letter: string) => `-${letter.toLowerCase()}`\n )\n}\n\nexport function splitEffects(\n input: string,\n separator: string | RegExp = ','\n): string[] {\n const result = []\n let l = 0\n let parenCount = 0\n separator = new RegExp(separator)\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '(') {\n parenCount++\n } else if (input[i] === ')') {\n parenCount--\n }\n\n if (parenCount === 0 && separator.test(input[i])) {\n result.push(input.slice(l, i).trim())\n l = i + 1\n }\n }\n\n result.push(input.slice(l).trim())\n\n return result\n}\n","/**\n * This module is used to fetch image from the given URL and resolve it as\n * base64 inlined data URI, so the toolchain can process it.\n * The image data will be cached in a LRU so we don't need to fetch it again\n * in new render processes. But to invalidate the cache the workaround is to\n * add a random query string to the URL.\n * TODO: We might want another option to disable image caching by default.\n */\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst APNG = 'image/apng'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\n\nfunction parseJPEG(buf: ArrayBuffer) {\n const view = new DataView(buf)\n\n // Skip magic bytes\n let offset = 4\n\n const len = view.byteLength\n while (offset < len) {\n const i = view.getUint16(offset, false)\n\n if (i > len) {\n throw new TypeError('Invalid JPEG')\n }\n\n const next = view.getUint8(i + 1 + offset)\n if (next === 0xc0 || next === 0xc1 || next === 0xc2) {\n return [\n view.getUint16(i + 7 + offset, false),\n view.getUint16(i + 5 + offset, false),\n ] as [number, number]\n }\n\n // TODO: Support orientations from EXIF.\n\n offset += i + 2\n }\n\n throw new TypeError('Invalid JPEG')\n}\n\nfunction parseGIF(buf: ArrayBuffer) {\n const view = new Uint8Array(buf.slice(6, 10))\n return [view[0] | (view[1] << 8), view[2] | (view[3] << 8)] as [\n number,\n number\n ]\n}\n\nfunction parsePNG(buf: ArrayBuffer) {\n const v = new DataView(buf)\n return [v.getUint16(18, false), v.getUint16(22, false)] as [number, number]\n}\n\nimport { createLRU, parseViewBox } from '../utils.js'\n\ntype ResolvedImageData = [string, number?, number?] | readonly []\nexport const cache = createLRU(100)\nexport const inflightRequests = new Map>()\n\nconst ALLOWED_IMAGE_TYPES = [PNG, APNG, JPEG, GIF, SVG]\n\nfunction arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = new Uint8Array(buffer)\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n let binaryString = atob(base64)\n let len = binaryString.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n return bytes.buffer\n}\n\nfunction parseSvgImageSize(src: string, data: string) {\n // Parse the SVG image size\n const svgTag = data.match(/]*>/)[0]\n\n const viewBoxStr = svgTag.match(/viewBox=['\"](.+)['\"]/)\n let viewBox = viewBoxStr ? parseViewBox(viewBoxStr[1]) : null\n\n const width = svgTag.match(/width=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n const height = svgTag.match(/height=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n\n if (!viewBox && (!width || !height)) {\n throw new Error(`Failed to parse SVG from ${src}: missing \"viewBox\"`)\n }\n\n const size = viewBox ? [viewBox[2], viewBox[3]] : [+width[1], +height[1]]\n\n const ratio = size[0] / size[1]\n const imageSize: [number, number] =\n width && height\n ? [+width[1], +height[1]]\n : width\n ? [+width[1], +width[1] / ratio]\n : height\n ? [+height[1] * ratio, +height[1]]\n : [size[0], size[1]]\n\n return imageSize\n}\n\nfunction arrayBufferToDataUri(data: ArrayBuffer) {\n let imageSize: [number, number]\n\n const imageType = detectContentType(new Uint8Array(data))\n\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n\n if (!ALLOWED_IMAGE_TYPES.includes(imageType)) {\n throw new Error(`Unsupported image type: ${imageType || 'unknown'}`)\n }\n return [\n `data:${imageType};base64,${arrayBufferToBase64(data)}`,\n imageSize,\n ] as const\n}\n\nexport async function resolveImageData(\n src: string | ArrayBuffer\n): Promise {\n if (!src) {\n throw new Error('Image source is not provided.')\n }\n\n // ArrayBuffer\n if (typeof src === 'object') {\n const [newSrc, imageSize] = arrayBufferToDataUri(src)\n return [newSrc, ...imageSize] as ResolvedImageData\n }\n\n if (\n (src.startsWith('\"') && src.endsWith('\"')) ||\n (src.startsWith(\"'\") && src.endsWith(\"'\"))\n ) {\n src = src.slice(1, -1)\n }\n\n // Throw error if the image source is not an absolute URL in server environment\n // Should be after slicing quotes to avoid throwing error too early\n if (typeof window === 'undefined') {\n if (!src.startsWith('http') && !src.startsWith('data:')) {\n throw new Error(`Image source must be an absolute URL: ${src}`)\n }\n }\n\n if (src.startsWith('data:')) {\n let decodedURI: { imageType; encodingType; dataString }\n\n try {\n decodedURI =\n /data:(?[a-z/+]+)(;[^;=]+=[^;=]+)*?(;(?[^;,]+))?,(?.*)/g.exec(\n src\n ).groups as typeof decodedURI\n } catch (err) {\n console.warn('Image data URI resolved without size:' + src)\n return [src]\n }\n\n const { imageType, encodingType, dataString } = decodedURI\n if (imageType === SVG) {\n const utf8Src =\n encodingType === 'base64'\n ? atob(dataString)\n : decodeURIComponent(dataString.replace(/ /g, '%20'))\n const base64Src =\n encodingType === 'base64'\n ? src\n : `data:image/svg+xml;base64,${btoa(utf8Src)}`\n let imageSize = parseSvgImageSize(src, utf8Src)\n cache.set(src, [base64Src, ...imageSize])\n return [base64Src, ...imageSize]\n } else if (encodingType === 'base64') {\n let imageSize: [number, number]\n const data = base64ToArrayBuffer(dataString)\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n cache.set(src, [src, ...imageSize])\n return [src, ...imageSize]\n } else {\n console.warn('Image data URI resolved without size:' + src)\n cache.set(src, [src])\n return [src]\n }\n }\n\n if (!globalThis.fetch) {\n throw new Error('`fetch` is required to be polyfilled to load images.')\n }\n\n if (inflightRequests.has(src)) {\n return inflightRequests.get(src)\n }\n const cached = cache.get(src)\n if (cached) {\n return cached\n }\n\n const url = src\n const promise = fetch(url)\n .then((res): Promise => {\n const type = res.headers.get('content-type')\n\n // Handle SVG specially\n if (type === 'image/svg+xml' || type === 'application/svg+xml') {\n return res.text()\n }\n\n return res.arrayBuffer()\n })\n .then((data) => {\n if (typeof data === 'string') {\n try {\n const newSrc = `data:image/svg+xml;base64,${btoa(data)}`\n // Parse the SVG image size\n const imageSize = parseSvgImageSize(url, data)\n return [newSrc, ...imageSize] as ResolvedImageData\n } catch (e) {\n throw new Error(`Failed to parse SVG image: ${e.message}`)\n }\n }\n\n const [newSrc, imageSize] = arrayBufferToDataUri(data)\n return [newSrc, ...imageSize] as ResolvedImageData\n })\n .then((result) => {\n cache.set(url, result)\n return result\n })\n .catch((err) => {\n console.error(`Can't load image ${url}: ` + err.message)\n cache.set(url, [])\n return [] as const\n })\n\n inflightRequests.set(url, promise)\n return promise\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nfunction detectContentType(buffer: Uint8Array) {\n if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n return JPEG\n }\n if (\n [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n (b, i) => buffer[i] === b\n )\n ) {\n if (detectAPNG(buffer)) {\n return APNG\n }\n return PNG\n }\n if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n return GIF\n }\n if (\n [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return WEBP\n }\n if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return AVIF\n }\n return null\n}\n\nfunction detectAPNG(bytes: Uint8Array) {\n const dv = new DataView(bytes.buffer)\n let type: string,\n length: number,\n off = 8,\n isAPNG = false\n while (!isAPNG && type !== 'IEND' && off < bytes.length) {\n length = dv.getUint32(off)\n const chars = bytes.subarray(off + 4, off + 8)\n type = String.fromCharCode(...chars)\n isAPNG = type === 'acTL'\n off += 12 + length\n }\n return isAPNG\n}\n","import type { ReactElement, ReactNode } from 'react'\nimport { resolveImageData, cache } from './image.js'\nimport { isReactElement, parseViewBox, midline } from '../utils.js'\n\n// Based on\n// https://raw.githubusercontent.com/facebook/react/master/packages/react-dom/src/shared/possibleStandardNames.js\nconst ATTRIBUTE_MAPPING = {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n href: 'href',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n xmlnsXlink: 'xmlns:xlink',\n} as const\n\n// From https://github.com/yoksel/url-encoder/blob/master/src/js/script.js\nconst SVGSymbols = /[\\r\\n%#()<>?[\\\\\\]^`{|}\"']/g\n\nfunction translateSVGNodeToSVGString(\n node: ReactElement | string | (ReactElement | string)[],\n inheritedColor: string\n): string {\n if (!node) return ''\n if (Array.isArray(node)) {\n return node\n .map((n) => translateSVGNodeToSVGString(n, inheritedColor))\n .join('')\n }\n if (typeof node !== 'object') return String(node)\n\n const type = node.type\n if (type === 'text') {\n throw new Error(\n ' nodes are not currently supported, please convert them to '\n )\n }\n\n const { children, style, ...restProps } = node.props || {}\n const currentColor = style?.color || inheritedColor\n\n const attrs = `${Object.entries(restProps)\n .map(([k, _v]) => {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n\n if (k === 'href' && type === 'image') {\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${cache.get(_v as string)[0]}\"`\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}`\n\n const styles = style\n ? ` style=\"${Object.entries(style)\n .map(([k, _v]) => `${midline(k)}:${_v}`)\n .join(';')}\"`\n : ''\n\n return `<${type}${attrs}${styles}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}`\n}\n/**\n * pre process node and resolve absolute link to img data for image element\n * @param node ReactNode\n * @returns\n */\nexport async function preProcessNode(node: ReactNode) {\n const set = new Set()\n const walk = (_node: ReactNode) => {\n if (!_node) return\n if (!isReactElement(_node)) return\n\n if (Array.isArray(_node)) {\n _node.forEach((v) => walk(v))\n return\n } else if (typeof _node === 'object') {\n if (_node.type === 'image') {\n if (set.has(_node.props.href)) {\n // do nothing\n } else {\n set.add(_node.props.href)\n }\n } else if (_node.type === 'img') {\n if (set.has(_node.props.src)) {\n // do nothing\n } else {\n set.add(_node.props.src)\n }\n } else {\n // do nothing\n }\n }\n\n Array.isArray(_node.props.children)\n ? _node.props.children.map((c) => walk(c))\n : walk(_node.props.children)\n }\n\n walk(node)\n\n return Promise.all(Array.from(set).map((s) => resolveImageData(s)))\n}\n\nexport async function SVGNodeToImage(\n node: ReactElement,\n inheritedColor: string\n): Promise {\n let {\n viewBox,\n viewbox,\n width,\n height,\n className,\n style,\n children,\n ...restProps\n } = node.props || {}\n\n viewBox ||= viewbox\n\n // We directly assign the xmlns attribute here to deduplicate.\n restProps.xmlns = 'http://www.w3.org/2000/svg'\n\n const currentColor = style?.color || inheritedColor\n const viewBoxSize = parseViewBox(viewBox)\n\n // ratio = height / width\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n width = width || (ratio && height) ? height / ratio : null\n height = height || (ratio && width) ? width * ratio : null\n\n restProps.width = width\n restProps.height = height\n if (viewBox) restProps.viewBox = viewBox\n\n return `data:image/svg+xml;utf8,${` {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}`.replace(SVGSymbols, encodeURIComponent)}`\n}\n","/**\n * Pre-defined styles for elements. Here we hand pick some from Chromium's\n * default styles:\n * https://chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css\n *\n * We try to only include commonly used, styling elements rather than semantic elements.\n */\n\nconst DEFAULT_DISPLAY = 'flex'\n\nexport default {\n // Generic block-level elements\n p: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n },\n div: {\n display: DEFAULT_DISPLAY,\n },\n blockquote: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 40,\n marginRight: 40,\n },\n center: {\n display: DEFAULT_DISPLAY,\n textAlign: 'center',\n },\n hr: {\n display: DEFAULT_DISPLAY,\n marginTop: '0.5em',\n marginBottom: '0.5em',\n marginLeft: 'auto',\n marginRight: 'auto',\n borderWidth: 1,\n // We don't have `inset`\n borderStyle: 'solid',\n },\n // Heading elements\n h1: {\n display: DEFAULT_DISPLAY,\n fontSize: '2em',\n marginTop: '0.67em',\n marginBottom: '0.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h2: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.5em',\n marginTop: '0.83em',\n marginBottom: '0.83em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h3: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.17em',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h4: {\n display: DEFAULT_DISPLAY,\n marginTop: '1.33em',\n marginBottom: '1.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h5: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.83em',\n marginTop: '1.67em',\n marginBottom: '1.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h6: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.67em',\n marginTop: '2.33em',\n marginBottom: '2.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n // Tables\n // Lists\n // Form elements\n // Inline elements\n u: {\n textDecoration: 'underline',\n },\n strong: {\n fontWeight: 'bold',\n },\n b: {\n fontWeight: 'bold',\n },\n i: {\n fontStyle: 'italic',\n },\n em: {\n fontStyle: 'italic',\n },\n code: {\n fontFamily: 'monospace',\n },\n kbd: {\n fontFamily: 'monospace',\n },\n pre: {\n display: DEFAULT_DISPLAY,\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n mark: {\n backgroundColor: 'yellow',\n color: 'black',\n },\n big: {\n fontSize: 'larger',\n },\n small: {\n fontSize: 'smaller',\n },\n s: {\n textDecoration: 'line-through',\n },\n}\n","import { SerializedStyle } from './expand.js'\n\nconst list = new Set([\n 'color',\n 'font',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'textAlign',\n 'textTransform',\n 'textShadowOffset',\n 'textShadowColor',\n 'textShadowRadius',\n 'WebkitTextStrokeWidth',\n 'WebkitTextStrokeColor',\n 'textDecorationLine',\n 'textDecorationStyle',\n 'textDecorationColor',\n 'whiteSpace',\n 'transform',\n 'wordBreak',\n 'tabSize',\n\n // Special case: SVG doesn't apply these to children elements so we need to\n // make it inheritable here.\n 'opacity',\n 'filter',\n\n // Special properties of Satori:\n '_viewportWidth',\n '_viewportHeight',\n '_inheritedClipPathId',\n '_inheritedMaskId',\n '_inheritedBackgroundClipTextPath',\n])\n\nexport default function inheritable(style: SerializedStyle): SerializedStyle {\n const inheritedStyle: SerializedStyle = {}\n for (const prop in style) {\n if (list.has(prop)) {\n inheritedStyle[prop] = style[prop]\n }\n }\n return inheritedStyle\n}\n","/**\n * Handler to update the Yoga node properties with the given element type and\n * style. Each supported element has its own preset styles, so this function\n * also returns the inherited style for children of the element.\n */\n\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from '../yoga/index.js'\nimport presets from './presets.js'\nimport inheritable from './inheritable.js'\nimport expand, { SerializedStyle } from './expand.js'\nimport { lengthToNumber, parseViewBox, v } from '../utils.js'\nimport { resolveImageData } from './image.js'\n\ntype SatoriElement = keyof typeof presets\n\nexport default async function compute(\n node: YogaNode,\n type: SatoriElement | string,\n inheritedStyle: SerializedStyle,\n definedStyle: Record,\n props: Record\n): Promise<[SerializedStyle, SerializedStyle]> {\n const Yoga = await getYoga()\n\n // Extend the default style with defined and inherited styles.\n const style: SerializedStyle = {\n ...inheritedStyle,\n ...expand(presets[type], inheritedStyle),\n ...expand(definedStyle, inheritedStyle),\n }\n\n if (type === 'img') {\n let [resolvedSrc, imageWidth, imageHeight] = await resolveImageData(\n props.src\n )\n\n // Cannot parse the image size (e.g. base64 data URI).\n if (imageWidth === undefined && imageHeight === undefined) {\n if (props.width === undefined || props.height === undefined) {\n throw new Error(\n 'Image size cannot be determined. Please provide the width and height of the image.'\n )\n }\n imageWidth = parseInt(props.width)\n imageHeight = parseInt(props.height)\n }\n const r = imageHeight / imageWidth\n\n // Before calculating the missing width or height based on the image ratio,\n // we must subtract the padding and border due to how box model works.\n // TODO: Ensure these are absolute length values, not relative values.\n let extraHorizontal =\n (style.borderLeftWidth || 0) +\n (style.borderRightWidth || 0) +\n (style.paddingLeft || 0) +\n (style.paddingRight || 0)\n let extraVertical =\n (style.borderTopWidth || 0) +\n (style.borderBottomWidth || 0) +\n (style.paddingTop || 0) +\n (style.paddingBottom || 0)\n\n let contentBoxWidth = style.width || props.width\n let contentBoxHeight = style.height || props.height\n\n const isAbsoluteContentSize =\n typeof contentBoxWidth === 'number' &&\n typeof contentBoxHeight === 'number'\n\n if (isAbsoluteContentSize) {\n contentBoxWidth -= extraHorizontal\n contentBoxHeight -= extraVertical\n }\n\n // When no content size is defined, we use the image size as the content size.\n if (contentBoxWidth === undefined && contentBoxHeight === undefined) {\n contentBoxWidth = '100%'\n node.setAspectRatio(1 / r)\n } else {\n // If only one sisde is not defined, we can calculate the other one.\n if (contentBoxWidth === undefined) {\n if (typeof contentBoxHeight === 'number') {\n contentBoxWidth = contentBoxHeight / r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n } else if (contentBoxHeight === undefined) {\n if (typeof contentBoxWidth === 'number') {\n contentBoxHeight = contentBoxWidth * r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n }\n }\n\n style.width = isAbsoluteContentSize\n ? (contentBoxWidth as number) + extraHorizontal\n : contentBoxWidth\n style.height = isAbsoluteContentSize\n ? (contentBoxHeight as number) + extraVertical\n : contentBoxHeight\n style.__src = resolvedSrc\n }\n\n if (type === 'svg') {\n const viewBox = props.viewBox || props.viewbox\n const viewBoxSize = parseViewBox(viewBox)\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n\n let { width, height } = props\n if (typeof width === 'undefined' && height) {\n if (ratio == null) {\n width = 0\n } else if (typeof height === 'string' && height.endsWith('%')) {\n width = parseInt(height) / ratio + '%'\n } else {\n height = lengthToNumber(\n height,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n width = height / ratio\n }\n } else if (typeof height === 'undefined' && width) {\n if (ratio == null) {\n width = 0\n } else if (typeof width === 'string' && width.endsWith('%')) {\n height = parseInt(width) * ratio + '%'\n } else {\n width = lengthToNumber(\n width,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n height = width * ratio\n }\n } else {\n if (typeof width !== 'undefined') {\n width =\n lengthToNumber(width, inheritedStyle.fontSize, 1, inheritedStyle) ||\n width\n }\n if (typeof height !== 'undefined') {\n height =\n lengthToNumber(height, inheritedStyle.fontSize, 1, inheritedStyle) ||\n height\n }\n width ||= viewBoxSize?.[2]\n height ||= viewBoxSize?.[3]\n }\n\n if (!style.width && width) style.width = width\n if (!style.height && height) style.height = height\n }\n\n // Set properties for Yoga.\n node.setDisplay(\n v(\n style.display,\n {\n flex: Yoga.DISPLAY_FLEX,\n block: Yoga.DISPLAY_FLEX,\n none: Yoga.DISPLAY_NONE,\n '-webkit-box': Yoga.DISPLAY_FLEX,\n },\n Yoga.DISPLAY_FLEX,\n 'display'\n )\n )\n\n node.setAlignContent(\n v(\n style.alignContent,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n 'space-between': Yoga.ALIGN_SPACE_BETWEEN,\n 'space-around': Yoga.ALIGN_SPACE_AROUND,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignContent'\n )\n )\n\n node.setAlignItems(\n v(\n style.alignItems,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_STRETCH,\n 'alignItems'\n )\n )\n node.setAlignSelf(\n v(\n style.alignSelf,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignSelf'\n )\n )\n node.setJustifyContent(\n v(\n style.justifyContent,\n {\n center: Yoga.JUSTIFY_CENTER,\n 'flex-start': Yoga.JUSTIFY_FLEX_START,\n 'flex-end': Yoga.JUSTIFY_FLEX_END,\n 'space-between': Yoga.JUSTIFY_SPACE_BETWEEN,\n 'space-around': Yoga.JUSTIFY_SPACE_AROUND,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'justifyContent'\n )\n )\n // @TODO: node.setAspectRatio\n\n node.setFlexDirection(\n v(\n style.flexDirection,\n {\n row: Yoga.FLEX_DIRECTION_ROW,\n column: Yoga.FLEX_DIRECTION_COLUMN,\n 'row-reverse': Yoga.FLEX_DIRECTION_ROW_REVERSE,\n 'column-reverse': Yoga.FLEX_DIRECTION_COLUMN_REVERSE,\n },\n Yoga.FLEX_DIRECTION_ROW,\n 'flexDirection'\n )\n )\n node.setFlexWrap(\n v(\n style.flexWrap,\n {\n wrap: Yoga.WRAP_WRAP,\n nowrap: Yoga.WRAP_NO_WRAP,\n 'wrap-reverse': Yoga.WRAP_WRAP_REVERSE,\n },\n Yoga.WRAP_NO_WRAP,\n 'flexWrap'\n )\n )\n\n if (typeof style.gap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ALL, style.gap)\n }\n\n if (typeof style.rowGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ROW, style.rowGap)\n }\n\n if (typeof style.columnGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_COLUMN, style.columnGap)\n }\n\n // @TODO: node.setFlex\n\n if (typeof style.flexBasis !== 'undefined') {\n node.setFlexBasis(style.flexBasis)\n }\n node.setFlexGrow(typeof style.flexGrow === 'undefined' ? 0 : style.flexGrow)\n node.setFlexShrink(\n typeof style.flexShrink === 'undefined' ? 0 : style.flexShrink\n )\n\n if (typeof style.maxHeight !== 'undefined') {\n node.setMaxHeight(style.maxHeight)\n }\n if (typeof style.maxWidth !== 'undefined') {\n node.setMaxWidth(style.maxWidth)\n }\n if (typeof style.minHeight !== 'undefined') {\n node.setMinHeight(style.minHeight)\n }\n if (typeof style.minWidth !== 'undefined') {\n node.setMinWidth(style.minWidth)\n }\n\n node.setOverflow(\n v(\n style.overflow,\n {\n visible: Yoga.OVERFLOW_VISIBLE,\n hidden: Yoga.OVERFLOW_HIDDEN,\n },\n Yoga.OVERFLOW_VISIBLE,\n 'overflow'\n )\n )\n\n node.setMargin(Yoga.EDGE_TOP, style.marginTop || 0)\n node.setMargin(Yoga.EDGE_BOTTOM, style.marginBottom || 0)\n node.setMargin(Yoga.EDGE_LEFT, style.marginLeft || 0)\n node.setMargin(Yoga.EDGE_RIGHT, style.marginRight || 0)\n\n node.setBorder(Yoga.EDGE_TOP, style.borderTopWidth || 0)\n node.setBorder(Yoga.EDGE_BOTTOM, style.borderBottomWidth || 0)\n node.setBorder(Yoga.EDGE_LEFT, style.borderLeftWidth || 0)\n node.setBorder(Yoga.EDGE_RIGHT, style.borderRightWidth || 0)\n\n node.setPadding(Yoga.EDGE_TOP, style.paddingTop || 0)\n node.setPadding(Yoga.EDGE_BOTTOM, style.paddingBottom || 0)\n node.setPadding(Yoga.EDGE_LEFT, style.paddingLeft || 0)\n node.setPadding(Yoga.EDGE_RIGHT, style.paddingRight || 0)\n\n node.setPositionType(\n v(\n style.position,\n {\n absolute: Yoga.POSITION_TYPE_ABSOLUTE,\n relative: Yoga.POSITION_TYPE_RELATIVE,\n },\n Yoga.POSITION_TYPE_RELATIVE,\n 'position'\n )\n )\n\n if (typeof style.top !== 'undefined') {\n node.setPosition(Yoga.EDGE_TOP, style.top)\n }\n if (typeof style.bottom !== 'undefined') {\n node.setPosition(Yoga.EDGE_BOTTOM, style.bottom)\n }\n if (typeof style.left !== 'undefined') {\n node.setPosition(Yoga.EDGE_LEFT, style.left)\n }\n if (typeof style.right !== 'undefined') {\n node.setPosition(Yoga.EDGE_RIGHT, style.right)\n }\n\n if (typeof style.height !== 'undefined') {\n node.setHeight(style.height)\n } else {\n node.setHeightAuto()\n }\n if (typeof style.width !== 'undefined') {\n node.setWidth(style.width)\n } else {\n node.setWidthAuto()\n }\n\n return [style, inheritable(style)]\n}\n","import { multiply } from '../utils.js'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\n\nconst baseMatrix = [1, 0, 0, 1, 0, 0]\n\n// Mutate the array in place.\nfunction resolveTransforms(transforms: any[], width: number, height: number) {\n let matrix = [...baseMatrix]\n\n // Handle CSS transforms To make it easier, we convert different transform\n // types directly to a matrix and apply it recursively to all its children.\n // Transforms are applied from right to left.\n // eslint-disable-next-line @typescript-eslint/no-shadow\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n let v = transform[type]\n\n // Resolve percentages based on the element's final size.\n if (typeof v === 'string') {\n if (type === 'translateX') {\n v = (parseFloat(v) / 100) * width\n // Override the original object.\n transform[type] = v\n } else if (type === 'translateY') {\n v = (parseFloat(v) / 100) * height\n transform[type] = v\n } else {\n throw new Error(`Invalid transform: \"${type}: ${v}\".`)\n }\n }\n\n let len = v as number\n\n const transformMatrix = [...baseMatrix]\n switch (type) {\n case 'translateX':\n transformMatrix[4] = len\n break\n case 'translateY':\n transformMatrix[5] = len\n break\n case 'scale':\n transformMatrix[0] = len\n transformMatrix[3] = len\n break\n case 'scaleX':\n transformMatrix[0] = len\n break\n case 'scaleY':\n transformMatrix[3] = len\n break\n case 'rotate': {\n const rad = (len * Math.PI) / 180\n const c = Math.cos(rad)\n const s = Math.sin(rad)\n transformMatrix[0] = c\n transformMatrix[1] = s\n transformMatrix[2] = -s\n transformMatrix[3] = c\n break\n }\n case 'skewX':\n transformMatrix[2] = Math.tan((len * Math.PI) / 180)\n break\n case 'skewY':\n transformMatrix[1] = Math.tan((len * Math.PI) / 180)\n break\n }\n matrix = multiply(transformMatrix, matrix)\n }\n\n transforms.splice(0, transforms.length)\n transforms.push(...matrix)\n ;(transforms as any).__resolved = true\n}\n\nexport default function transform(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n transforms: number[],\n isInheritingTransform: boolean,\n transformOrigin?: ParsedTransformOrigin\n) {\n let result: number[]\n\n if (!(transforms as any).__resolved) {\n resolveTransforms(transforms, width, height)\n }\n\n let matrix = transforms\n\n // Calculate the transform origin.\n if (isInheritingTransform) {\n result = matrix\n } else {\n const xOrigin =\n transformOrigin?.xAbsolute ??\n ((transformOrigin?.xRelative ?? 50) * width) / 100\n const yOrigin =\n transformOrigin?.yAbsolute ??\n ((transformOrigin?.yRelative ?? 50) * height) / 100\n\n // If this element is the transform target, we attach the origin coordinates\n // to this matrix.\n const x = left + xOrigin\n const y = top + yOrigin\n\n // Due to the different coordinate systems, we need to move the shape to the\n // origin first, then apply the matrix, then move it back.\n result = multiply(\n [1, 0, 0, 1, x, y],\n multiply(matrix, [1, 0, 0, 1, -x, -y])\n )\n\n // And we need to apply its parent transform if it has one.\n if ((matrix as any).__parent) {\n result = multiply((matrix as any).__parent, result)\n }\n\n // Mutate self.\n matrix.splice(0, 6, ...result)\n }\n\n return `matrix(${result.map((v) => v.toFixed(2)).join(',')})`\n}\n","// @TODO: It seems that SVG filters are pretty expensive for resvg, PNG\n// generation time 10x'd when adding this filter (WASM in browser).\n// https://drafts.fxtf.org/filter-effects/#feGaussianBlurElement\n\nimport { buildXMLString } from '../utils.js'\n\nfunction shiftPath(path: string, dx: number, dy: number) {\n return path.replace(\n /([MA])([0-9.-]+),([0-9.-]+)/g,\n function (_, command, x, y) {\n return command + (parseFloat(x) + dx) + ',' + (parseFloat(y) + dy)\n }\n )\n}\n\n// The scale is used to make the filter area larger than the bounding box,\n// because usually the given measured text bounding is larger than the path\n// bounding.\n// The text bounding box is measured via the font metrics, which is not the same\n// as the actual content. For example, the text bounding box of \"A\" is larger\n// than the actual \"a\" path but they have the same font metrics.\n// This scale can be adjusted to prevent the filter from cutting off the text.\nconst SCALE = 1.1\n\nexport function buildDropShadow(\n { id, width, height }: { id: string; width: number; height: number },\n style: {\n shadowColor: string[]\n shadowOffset: {\n width: number\n height: number\n }[]\n shadowRadius: number[]\n }\n) {\n if (\n !style.shadowColor ||\n !style.shadowOffset ||\n typeof style.shadowRadius === 'undefined'\n ) {\n return ''\n }\n\n const shadowCount = style.shadowColor.length\n let effects = ''\n let merge = ''\n\n // There could be multiple shadows, we need to get the maximum bounding box\n // and use `feMerge` to merge them together.\n let left = 0\n let right = width\n let top = 0\n let bottom = height\n for (let i = 0; i < shadowCount; i++) {\n // Expand the area for the filter to prevent it from cutting off.\n const grow = (style.shadowRadius[i] * style.shadowRadius[i]) / 4\n left = Math.min(style.shadowOffset[i].width - grow, left)\n right = Math.max(style.shadowOffset[i].width + grow + width, right)\n top = Math.min(style.shadowOffset[i].height - grow, top)\n bottom = Math.max(style.shadowOffset[i].height + grow + height, bottom)\n\n effects += buildXMLString('feDropShadow', {\n dx: style.shadowOffset[i].width,\n dy: style.shadowOffset[i].height,\n stdDeviation:\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n style.shadowRadius[i] / 2,\n 'flood-color': style.shadowColor[i],\n 'flood-opacity': 1,\n ...(shadowCount > 1\n ? {\n in: 'SourceGraphic',\n result: `satori_s-${id}-result-${i}`,\n }\n : {}),\n })\n\n if (shadowCount > 1) {\n // Merge needs to be in reverse order.\n merge =\n buildXMLString('feMergeNode', {\n in: `satori_s-${id}-result-${i}`,\n }) + merge\n }\n }\n\n return buildXMLString(\n 'filter',\n {\n id: `satori_s-${id}`,\n x: ((left / width) * 100 * SCALE).toFixed(2) + '%',\n y: ((top / height) * 100 * SCALE).toFixed(2) + '%',\n width: (((right - left) / width) * 100 * SCALE).toFixed(2) + '%',\n height: (((bottom - top) / height) * 100 * SCALE).toFixed(2) + '%',\n },\n effects + (merge ? buildXMLString('feMerge', {}, merge) : '')\n )\n}\n\nexport function boxShadow(\n {\n width,\n height,\n shape,\n opacity,\n id,\n }: {\n width: number\n height: number\n shape: string\n opacity: number\n id: string\n },\n style: Record\n) {\n if (!style.boxShadow) return null\n\n let shadow = ''\n let innerShadow = ''\n\n for (let i = style.boxShadow.length - 1; i >= 0; i--) {\n let s = ''\n\n const shadowStyle = style.boxShadow[i]\n\n if (shadowStyle.spreadRadius && shadowStyle.inset) {\n shadowStyle.spreadRadius = -shadowStyle.spreadRadius\n }\n\n // Expand the area for the filter to prevent it from cutting off.\n const grow =\n (shadowStyle.blurRadius * shadowStyle.blurRadius) / 4 +\n (shadowStyle.spreadRadius || 0)\n\n const left = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n 0\n )\n const right = Math.max(\n grow + width - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n width\n )\n const top = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n 0\n )\n const bottom = Math.max(\n grow + height - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n height\n )\n\n const sid = `satori_s-${id}-${i}`\n const maskId = `satori_ms-${id}-${i}`\n const shapeWithSpread = shadowStyle.spreadRadius\n ? shape.replace(\n 'stroke-width=\"0\"',\n `stroke-width=\"${shadowStyle.spreadRadius * 2}\"`\n )\n : shape\n\n s += buildXMLString(\n 'mask',\n {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: style._viewportWidth || '100%',\n height: style._viewportHeight || '100%',\n fill: shadowStyle.inset ? '#000' : '#fff',\n }) +\n shapeWithSpread\n .replace(\n 'fill=\"#fff\"',\n shadowStyle.inset ? 'fill=\"#fff\"' : 'fill=\"#000\"'\n )\n .replace('stroke=\"#fff\"', '')\n )\n\n let finalShape = shapeWithSpread\n .replace(/d=\"([^\"]+)\"/, (_, path) => {\n return (\n 'd=\"' +\n shiftPath(path, shadowStyle.offsetX, shadowStyle.offsetY) +\n '\"'\n )\n })\n .replace(/x=\"([^\"]+)\"/, (_, x) => {\n return 'x=\"' + (parseFloat(x) + shadowStyle.offsetX) + '\"'\n })\n .replace(/y=\"([^\"]+)\"/, (_, y) => {\n return 'y=\"' + (parseFloat(y) + shadowStyle.offsetY) + '\"'\n })\n\n // Negative spread radius, we need another mask here.\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n s += buildXMLString(\n 'mask',\n {\n id: maskId + '-neg',\n maskUnits: 'userSpaceOnUse',\n },\n finalShape\n .replace('stroke=\"#fff\"', 'stroke=\"#000\"')\n .replace(\n /stroke-width=\"[^\"]+\"/,\n `stroke-width=\"${-shadowStyle.spreadRadius * 2}\"`\n )\n )\n }\n\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n finalShape = buildXMLString(\n 'g',\n {\n mask: `url(#${maskId}-neg)`,\n },\n finalShape\n )\n }\n\n s +=\n buildXMLString(\n 'defs',\n {},\n buildXMLString(\n 'filter',\n {\n id: sid,\n x: `${(left / width) * 100}%`,\n y: `${(top / height) * 100}%`,\n width: `${((right - left) / width) * 100}%`,\n height: `${((bottom - top) / height) * 100}%`,\n },\n buildXMLString('feGaussianBlur', {\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n stdDeviation: shadowStyle.blurRadius / 2,\n result: 'b',\n }) +\n buildXMLString('feFlood', {\n 'flood-color': shadowStyle.color,\n in: 'SourceGraphic',\n result: 'f',\n }) +\n buildXMLString('feComposite', {\n in: 'f',\n in2: 'b',\n operator: shadowStyle.inset ? 'out' : 'in',\n })\n )\n ) +\n buildXMLString(\n 'g',\n {\n mask: `url(#${maskId})`,\n filter: `url(#${sid})`,\n opacity: opacity,\n },\n finalShape\n )\n\n if (shadowStyle.inset) {\n innerShadow += s\n } else {\n shadow += s\n }\n }\n\n return [shadow, innerShadow]\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function buildDecoration(\n {\n width,\n left,\n top,\n ascender,\n clipPathId,\n matrix,\n }: {\n width: number\n left: number\n top: number\n ascender: number\n clipPathId?: string\n matrix?: string\n },\n style: Record\n) {\n const {\n textDecorationColor,\n textDecorationStyle,\n textDecorationLine,\n fontSize,\n color,\n } = style\n if (!textDecorationLine || textDecorationLine === 'none') return ''\n\n // The UA should use such font-based information when choosing auto line thicknesses wherever appropriate.\n // https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness\n const height = Math.max(1, fontSize * 0.1)\n\n const y =\n textDecorationLine === 'line-through'\n ? top + ascender * 0.7\n : textDecorationLine === 'underline'\n ? top + ascender * 1.1\n : top\n\n const dasharray =\n textDecorationStyle === 'dashed'\n ? `${height * 1.2} ${height * 2}`\n : textDecorationStyle === 'dotted'\n ? `0 ${height * 2}`\n : undefined\n\n return (\n (clipPathId ? `` : '') +\n buildXMLString('line', {\n x1: left,\n y1: y,\n x2: left + width,\n y2: y,\n stroke: textDecorationColor || color,\n 'stroke-width': height,\n 'stroke-dasharray': dasharray,\n 'stroke-linecap': textDecorationStyle === 'dotted' ? 'round' : 'square',\n transform: matrix,\n }) +\n (clipPathId ? '' : '')\n )\n}\n","export function stringFromCode(code: string): string {\n code = code.replace('U+', '0x')\n\n return String.fromCodePoint(Number(code))\n}\n\nexport const Space = stringFromCode('U+0020')\nexport const Tab = stringFromCode('U+0009')\nexport const HorizontalEllipsis = stringFromCode('U+2026')\n","import { FontEngine } from '../font.js'\nimport { segment } from '../utils.js'\n\nexport function genMeasurer(\n engine: FontEngine,\n isImage: (grapheme: string) => boolean,\n style: {\n fontSize: number\n letterSpacing: number\n }\n): {\n measureGrapheme: (grapheme: string) => number\n measureGraphemeArray: (graphemes: string[]) => number\n measureText: (text: string) => number\n} {\n const { fontSize, letterSpacing } = style\n\n const cache = new Map()\n\n function measureGrapheme(grapheme: string): number {\n if (cache.has(grapheme)) {\n return cache.get(grapheme)\n }\n\n const width = engine.measure(grapheme, { fontSize, letterSpacing })\n cache.set(grapheme, width)\n\n return width\n }\n\n function measureGraphemeArray(graphemes: string[]): number {\n let width = 0\n\n for (const grapheme of graphemes) {\n if (isImage(grapheme)) {\n width += fontSize\n } else {\n width += measureGrapheme(grapheme)\n }\n }\n\n return width\n }\n\n function measureText(text: string): number {\n return measureGraphemeArray(segment(text, 'grapheme'))\n }\n\n return {\n measureGrapheme,\n measureGraphemeArray,\n measureText,\n }\n}\n","import { Locale } from '../language.js'\nimport { isNumber, segment, splitByBreakOpportunities } from '../utils.js'\nimport { HorizontalEllipsis, Space } from './characters.js'\nimport { SerializedStyle } from '../handler/expand.js'\n\nexport function preprocess(\n content: string,\n style: SerializedStyle,\n locale?: Locale\n): {\n words: string[]\n requiredBreaks: boolean[]\n allowSoftWrap: boolean\n allowBreakWord: boolean\n processedContent: string\n shouldCollapseTabsAndSpaces: boolean\n lineLimit: number\n blockEllipsis: string\n} {\n const { textTransform, whiteSpace, wordBreak } = style\n\n content = processTextTransform(content, textTransform, locale)\n\n const {\n content: processedContent,\n shouldCollapseTabsAndSpaces,\n allowSoftWrap,\n } = processWhiteSpace(content, whiteSpace)\n\n const { words, requiredBreaks, allowBreakWord } = processWordBreak(\n processedContent,\n wordBreak\n )\n\n const [lineLimit, blockEllipsis] = processTextOverflow(style, allowSoftWrap)\n\n return {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n }\n}\n\nfunction processTextTransform(\n content: string,\n textTransform: string,\n locale?: Locale\n): string {\n if (textTransform === 'uppercase') {\n content = content.toLocaleUpperCase(locale)\n } else if (textTransform === 'lowercase') {\n content = content.toLocaleLowerCase(locale)\n } else if (textTransform === 'capitalize') {\n content = segment(content, 'word', locale)\n // For each word...\n .map((word) => {\n // ...split into graphemes...\n return segment(word, 'grapheme', locale)\n .map((grapheme, index) => {\n // ...and make the first grapheme uppercase\n return index === 0 ? grapheme.toLocaleUpperCase(locale) : grapheme\n })\n .join('')\n })\n .join('')\n }\n\n return content\n}\n\nfunction processTextOverflow(\n style: SerializedStyle,\n allowSoftWrap: boolean\n): [number, string?] {\n const {\n textOverflow,\n lineClamp,\n WebkitLineClamp,\n WebkitBoxOrient,\n overflow,\n display,\n } = style\n\n if (display === 'block' && lineClamp) {\n const [lineLimit, blockEllipsis = HorizontalEllipsis] =\n parseLineClamp(lineClamp)\n if (lineLimit) {\n return [lineLimit, blockEllipsis]\n }\n }\n\n if (\n textOverflow === 'ellipsis' &&\n display === '-webkit-box' &&\n WebkitBoxOrient === 'vertical' &&\n isNumber(WebkitLineClamp) &&\n WebkitLineClamp > 0\n ) {\n return [WebkitLineClamp, HorizontalEllipsis]\n }\n\n if (textOverflow === 'ellipsis' && overflow === 'hidden' && !allowSoftWrap) {\n return [1, HorizontalEllipsis]\n }\n\n return [Infinity]\n}\n\nfunction processWordBreak(\n content,\n wordBreak: string\n): { words: string[]; requiredBreaks: boolean[]; allowBreakWord: boolean } {\n const allowBreakWord = ['break-all', 'break-word'].includes(wordBreak)\n\n const { words, requiredBreaks } = splitByBreakOpportunities(\n content,\n wordBreak\n )\n\n return { words, requiredBreaks, allowBreakWord }\n}\n\nfunction processWhiteSpace(\n content: string,\n whiteSpace: string\n): {\n content: string\n shouldCollapseTabsAndSpaces: boolean\n allowSoftWrap: boolean\n} {\n const shouldKeepLinebreak = ['pre', 'pre-wrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const shouldCollapseTabsAndSpaces = ['normal', 'nowrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const allowSoftWrap = !['pre', 'nowrap'].includes(whiteSpace)\n\n if (!shouldKeepLinebreak) {\n content = content.replace(/\\n/g, Space)\n }\n\n if (shouldCollapseTabsAndSpaces) {\n content = content.replace(/([ ]|\\t)+/g, Space).replace(/^[ ]|[ ]$/g, '')\n }\n\n return { content, shouldCollapseTabsAndSpaces, allowSoftWrap }\n}\n\nfunction parseLineClamp(input: number | string): [number?, string?] {\n if (typeof input === 'number') return [input]\n\n const regex1 = /^(\\d+)\\s*\"(.*)\"$/\n const regex2 = /^(\\d+)\\s*'(.*)'$/\n const match1 = regex1.exec(input)\n const match2 = regex2.exec(input)\n\n if (match1) {\n const number = +match1[1]\n const text = match1[2]\n\n return [number, text]\n } else if (match2) {\n const number = +match2[1]\n const text = match2[2]\n\n return [number, text]\n }\n\n return []\n}\n","/**\n * This module calculates the layout of a text string. Currently the only\n * supported inline node is text. All other nodes are using block layout.\n */\nimport type { LayoutContext } from '../layout.js'\nimport type { Yoga } from 'yoga-wasm-web'\nimport getYoga from '../yoga/index.js'\nimport {\n v,\n segment,\n wordSeparators,\n buildXMLString,\n isUndefined,\n isString,\n lengthToNumber,\n} from '../utils.js'\nimport buildText, { container } from '../builder/text.js'\nimport { buildDropShadow } from '../builder/shadow.js'\nimport buildDecoration from '../builder/text-decoration.js'\nimport { Locale } from '../language.js'\nimport { HorizontalEllipsis, Space, Tab } from './characters.js'\nimport { genMeasurer } from './measurer.js'\nimport { preprocess } from './processor.js'\n\nconst skippedWordWhenFindingMissingFont = new Set([Tab])\n\nfunction shouldSkipWhenFindingMissingFont(word: string): boolean {\n return skippedWordWhenFindingMissingFont.has(word)\n}\n\nexport default async function* buildTextNodes(\n content: string,\n context: LayoutContext\n): AsyncGenerator<{ word: string; locale?: Locale }[], string, [any, any]> {\n const Yoga = await getYoga()\n\n const {\n parentStyle,\n inheritedStyle,\n parent,\n font,\n id,\n isInheritingTransform,\n debug,\n embedFont,\n graphemeImages,\n locale,\n canLoadAdditionalAssets,\n } = context\n\n const {\n textAlign,\n lineHeight,\n textWrap,\n fontSize,\n filter: cssFilter,\n tabSize = 8,\n letterSpacing,\n _inheritedBackgroundClipTextPath,\n flexShrink,\n } = parentStyle\n\n const {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n } = preprocess(content, parentStyle, locale)\n\n const textContainer = createTextContainerNode(Yoga, textAlign)\n parent.insertChild(textContainer, parent.getChildCount())\n\n if (isUndefined(flexShrink)) {\n parent.setFlexShrink(1)\n }\n\n // Get the correct font according to the container style.\n // https://www.w3.org/TR/CSS2/visudet.html\n let engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n\n // Yield segments that are missing a font.\n const wordsMissingFont = canLoadAdditionalAssets\n ? segment(processedContent, 'grapheme').filter(\n (word) => !shouldSkipWhenFindingMissingFont(word) && !engine.has(word)\n )\n : []\n\n yield wordsMissingFont.map((word) => {\n return {\n word,\n locale,\n }\n })\n\n if (wordsMissingFont.length) {\n // Reload the engine with additional fonts.\n engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n }\n\n function isImage(s: string): boolean {\n return !!(graphemeImages && graphemeImages[s])\n }\n\n const { measureGrapheme, measureGraphemeArray, measureText } = genMeasurer(\n engine,\n isImage,\n {\n fontSize,\n letterSpacing,\n }\n )\n\n const tabWidth = isString(tabSize)\n ? lengthToNumber(tabSize, fontSize, 1, parentStyle)\n : measureGrapheme(Space) * tabSize\n\n const calc = (\n text: string,\n currentWidth: number\n ): {\n originWidth: number\n endingSpacesWidth: number\n text: string\n } => {\n if (text.length === 0) {\n return {\n originWidth: 0,\n endingSpacesWidth: 0,\n text,\n }\n }\n\n const { index, tabCount } = detectTabs(text)\n\n let originWidth = 0\n\n if (tabCount > 0) {\n const textBeforeTab = text.slice(0, index)\n const textAfterTab = text.slice(index + tabCount)\n const textWidthBeforeTab = measureText(textBeforeTab)\n const offsetBeforeTab = textWidthBeforeTab + currentWidth\n const tabMoveDistance =\n tabWidth === 0\n ? textWidthBeforeTab\n : (Math.floor(offsetBeforeTab / tabWidth) + tabCount) * tabWidth\n originWidth = tabMoveDistance + measureText(textAfterTab)\n } else {\n originWidth = measureText(text)\n }\n\n const afterTrimEndWidth =\n text.trimEnd() === text ? originWidth : measureText(text.trimEnd())\n\n return {\n originWidth,\n endingSpacesWidth: originWidth - afterTrimEndWidth,\n text,\n }\n }\n\n // Global variables used to compute the text layout.\n // @TODO: Use segments instead of words to properly support kerning.\n let lineWidths = []\n let baselines = []\n let lineSegmentNumber = []\n let texts: string[] = []\n let wordPositionInLayout: (null | {\n x: number\n y: number\n width: number\n line: number\n lineIndex: number\n isImage: boolean\n })[] = []\n\n // With the given container width, compute the text layout.\n function flow(width: number) {\n let lines = 0\n let maxWidth = 0\n let lineIndex = -1\n let height = 0\n let currentWidth = 0\n let currentLineHeight = 0\n let currentBaselineOffset = 0\n\n lineWidths = []\n lineSegmentNumber = [0]\n texts = []\n wordPositionInLayout = []\n\n // We naively implement the width calculation without proper kerning.\n // @TODO: Support different writing modes.\n // @TODO: Support RTL languages.\n let i = 0\n let prevLineEndingSpacesWidth = 0\n while (i < words.length && lines < lineLimit) {\n let word = words[i]\n const forceBreak = requiredBreaks[i]\n\n let w = 0\n\n const {\n originWidth,\n endingSpacesWidth,\n text: _word,\n } = calc(word, currentWidth)\n word = _word\n\n w = originWidth\n const lineEndingSpacesWidth = endingSpacesWidth\n\n // When starting a new line from an empty line, we should push one extra\n // line height.\n if (forceBreak && currentLineHeight === 0) {\n currentLineHeight = engine.height(word)\n }\n\n const allowedToPutAtBeginning = ',.!?:-@)>]}%#'.indexOf(word[0]) < 0\n const allowedToJustify = !currentWidth\n\n const willWrap =\n i &&\n allowedToPutAtBeginning &&\n // When determining whether a line break is necessary, the width of the\n // trailing spaces is not included in the calculation, as the end boundary\n // can be closely adjacent to the last non-space character.\n // e.g.\n // 'aaa bbb ccc'\n // When the break line happens at the end of the `bbb`, what we see looks like this\n // |aaa bbb|\n // |ccc |\n currentWidth + w > width + lineEndingSpacesWidth &&\n allowSoftWrap\n\n // Need to break the word if:\n // - we have break-word\n // - the word is wider than the container width\n // - the word will be put at the beginning of the line\n const needToBreakWord =\n allowBreakWord && w > width && (!currentWidth || willWrap || forceBreak)\n\n if (needToBreakWord) {\n // Break the word into multiple segments and continue the loop.\n const chars = segment(word, 'grapheme')\n words.splice(i, 1, ...chars)\n if (currentWidth > 0) {\n // Start a new line, spaces can be ignored.\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = 0\n currentLineHeight = 0\n currentBaselineOffset = 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n }\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n continue\n }\n if (forceBreak || willWrap) {\n // Start a new line, spaces can be ignored.\n if (shouldCollapseTabsAndSpaces && word === Space) {\n w = 0\n }\n\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = w\n currentLineHeight = w ? engine.height(word) : 0\n currentBaselineOffset = w ? engine.baseline(word) : 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n\n // If it's naturally broken, we update the max width.\n // Since if there are multiple lines, the width should fit the\n // container.\n if (!forceBreak) {\n maxWidth = Math.max(maxWidth, width)\n }\n } else {\n // It fits into the current line.\n currentWidth += w\n const glyphHeight = engine.height(word)\n if (glyphHeight > currentLineHeight) {\n // Use the baseline of the highest segment as the baseline of the line.\n currentLineHeight = glyphHeight\n currentBaselineOffset = engine.baseline(word)\n }\n if (allowedToJustify) {\n lineSegmentNumber[lineSegmentNumber.length - 1]++\n }\n }\n\n if (allowedToJustify) {\n lineIndex++\n }\n\n maxWidth = Math.max(maxWidth, currentWidth)\n\n let x = currentWidth - w\n\n if (w === 0) {\n wordPositionInLayout.push({\n y: height,\n x,\n width: 0,\n line: lines,\n lineIndex,\n isImage: false,\n })\n } else {\n const _texts = segment(word, 'word')\n\n for (let j = 0; j < _texts.length; j++) {\n const _text = _texts[j]\n let _width = 0\n let _isImage = false\n\n if (isImage(_text)) {\n _width = fontSize\n _isImage = true\n } else {\n _width = measureGrapheme(_text)\n }\n\n texts.push(_text)\n wordPositionInLayout.push({\n y: height,\n x,\n width: _width,\n line: lines,\n lineIndex,\n isImage: _isImage,\n })\n\n x += _width\n }\n }\n\n i++\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n }\n\n if (currentWidth) {\n if (lines < lineLimit) {\n height += currentLineHeight\n }\n lines++\n lineWidths.push(currentWidth)\n baselines.push(currentBaselineOffset)\n }\n\n // @TODO: Support `line-height`.\n return { width: maxWidth, height }\n }\n\n // It's possible that the text's measured size is different from the container's\n // size, because the container might have a fixed width or height or being\n // expanded by its parent.\n let measuredTextSize = { width: 0, height: 0 }\n textContainer.setMeasureFunc((containerWidth) => {\n const { width, height } = flow(containerWidth)\n\n // When doing `text-wrap: balance`, we reflow the text multiple times\n // using binary search to find the best width.\n // https://www.w3.org/TR/css-text-4/#valdef-text-wrap-balance\n if (textWrap === 'balance') {\n let l = width / 2\n let r = width\n let m: number = width\n while (l + 1 < r) {\n m = (l + r) / 2\n const { height: mHeight } = flow(m)\n if (mHeight > height) {\n l = m\n } else {\n r = m\n }\n }\n flow(r)\n const _width = Math.ceil(r)\n measuredTextSize = { width: _width, height }\n return { width: _width, height }\n }\n const _width = Math.ceil(width)\n measuredTextSize = { width: _width, height }\n // This may be a temporary fix, I didn't dig deep into yoga.\n // But when the return value of width here doesn't change (assuming the value of width is 216.9),\n // when we later get the width through `parent.getComputedWidth()`, sometimes it returns 216 and sometimes 217.\n // I'm not sure if this is a yoga bug, but it seems related to the entire page width.\n // So I use Math.ceil.\n return { width: _width, height }\n })\n\n const [x, y] = yield\n\n let result = ''\n let backgroundClipDef = ''\n\n const clipPathId = inheritedStyle._inheritedClipPathId as string | undefined\n const overflowMaskId = inheritedStyle._inheritedMaskId as number | undefined\n\n const {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n } = textContainer.getComputedLayout()\n\n const parentContainerInnerWidth =\n parent.getComputedWidth() -\n parent.getComputedPadding(Yoga.EDGE_LEFT) -\n parent.getComputedPadding(Yoga.EDGE_RIGHT) -\n parent.getComputedBorder(Yoga.EDGE_LEFT) -\n parent.getComputedBorder(Yoga.EDGE_RIGHT)\n\n // Attach offset to the current node.\n const left = x + containerLeft\n const top = y + containerTop\n\n const { matrix, opacity } = container(\n {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n isInheritingTransform,\n },\n parentStyle\n )\n\n let filter = ''\n if (parentStyle.textShadowOffset) {\n const { textShadowColor, textShadowOffset, textShadowRadius } = parentStyle\n\n filter = buildDropShadow(\n {\n width: measuredTextSize.width,\n height: measuredTextSize.height,\n id,\n },\n {\n shadowColor: textShadowColor,\n shadowOffset: textShadowOffset,\n shadowRadius: textShadowRadius,\n }\n )\n\n filter = buildXMLString('defs', {}, filter)\n }\n\n let decorationShape = ''\n let mergedPath = ''\n let extra = ''\n let skippedLine = -1\n let decorationLines: Record = {}\n let wordBuffer: string | null = null\n let bufferedOffset = 0\n\n for (let i = 0; i < texts.length; i++) {\n // Skip whitespace and empty characters.\n const layout = wordPositionInLayout[i]\n const nextLayout = wordPositionInLayout[i + 1]\n\n if (!layout) continue\n\n let text = texts[i]\n let path: string | null = null\n let isLastDisplayedBeforeEllipsis = false\n\n const image = graphemeImages ? graphemeImages[text] : null\n\n let topOffset = layout.y\n let leftOffset = layout.x\n const width = layout.width\n const line = layout.line\n\n if (line === skippedLine) {\n continue\n }\n\n // When `text-align` is `justify`, the width of the line will be adjusted.\n let extendedWidth = false\n\n if (lineWidths.length > 1) {\n // Calculate alignment. Note that for Flexbox, there is only text\n // alignment when the container is multi-line.\n const remainingWidth = containerWidth - lineWidths[line]\n if (textAlign === 'right' || textAlign === 'end') {\n leftOffset += remainingWidth\n } else if (textAlign === 'center') {\n leftOffset += remainingWidth / 2\n } else if (textAlign === 'justify') {\n // Don't justify the last line.\n if (line < lineWidths.length - 1) {\n const segments = lineSegmentNumber[line]\n const gutter = segments > 1 ? remainingWidth / (segments - 1) : 0\n leftOffset += gutter * layout.lineIndex\n extendedWidth = true\n }\n }\n }\n\n const baselineOfLine = baselines[line]\n const baselineOfWord = engine.baseline(text)\n const heightOfWord = engine.height(text)\n const baselineDelta = baselineOfLine - baselineOfWord\n\n if (!decorationLines[line]) {\n decorationLines[line] = [\n leftOffset,\n top + topOffset + baselineDelta,\n baselineOfWord,\n extendedWidth ? containerWidth : lineWidths[line],\n ]\n }\n\n if (lineLimit !== Infinity) {\n let _blockEllipsis = blockEllipsis\n let ellipsisWidth = measureGrapheme(blockEllipsis)\n if (ellipsisWidth > parentContainerInnerWidth) {\n _blockEllipsis = HorizontalEllipsis\n ellipsisWidth = measureGrapheme(_blockEllipsis)\n }\n const spaceWidth = measureGrapheme(Space)\n const isNotLastLine = line < lineWidths.length - 1\n const isLastAllowedLine = line + 1 === lineLimit\n\n function calcEllipsis(baseWidth: number, _text: string) {\n const chars = segment(_text, 'grapheme', locale)\n\n let subset = ''\n let resolvedWidth = 0\n\n for (const char of chars) {\n const w = baseWidth + measureGraphemeArray([subset + char])\n if (\n // Keep at least one character:\n // > The first character or atomic inline-level element on a line\n // must be clipped rather than ellipsed.\n // https://drafts.csswg.org/css-overflow/#text-overflow\n subset &&\n w + ellipsisWidth > parentContainerInnerWidth\n ) {\n break\n }\n subset += char\n resolvedWidth = w\n }\n\n return {\n subset,\n resolvedWidth,\n }\n }\n\n if (\n isLastAllowedLine &&\n (isNotLastLine || lineWidths[line] > parentContainerInnerWidth)\n ) {\n if (\n leftOffset + width + ellipsisWidth + spaceWidth >\n parentContainerInnerWidth\n ) {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else if (nextLayout && nextLayout.line !== line) {\n if (textAlign === 'center') {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else {\n const nextLineText = texts[i + 1]\n\n const { subset, resolvedWidth } = calcEllipsis(\n width + leftOffset,\n nextLineText\n )\n\n text = text + subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n }\n }\n }\n }\n\n if (image) {\n // For images, we remove the baseline offset.\n topOffset += 0\n } else if (embedFont) {\n // If the current word and the next word are on the same line, we try to\n // merge them together to better handle the kerning.\n if (\n !text.includes(Tab) &&\n !wordSeparators.includes(text) &&\n texts[i + 1] &&\n nextLayout &&\n !nextLayout.isImage &&\n topOffset === nextLayout.y &&\n !isLastDisplayedBeforeEllipsis\n ) {\n if (wordBuffer === null) {\n bufferedOffset = leftOffset\n }\n wordBuffer = wordBuffer === null ? text : wordBuffer + text\n continue\n }\n\n const finalizedSegment = wordBuffer === null ? text : wordBuffer + text\n const finalizedLeftOffset =\n wordBuffer === null ? leftOffset : bufferedOffset\n const finalizedWidth = layout.width + leftOffset - finalizedLeftOffset\n\n path = engine.getSVG(finalizedSegment.replace(/(\\t)+/g, ''), {\n fontSize,\n left: left + finalizedLeftOffset,\n // Since we need to pass the baseline position, add the ascender to the top.\n top: top + topOffset + baselineOfWord + baselineDelta,\n letterSpacing,\n })\n\n wordBuffer = null\n\n if (debug) {\n extra +=\n // Glyph\n buildXMLString('rect', {\n x: left + finalizedLeftOffset,\n y: top + topOffset + baselineDelta,\n width: finalizedWidth,\n height: heightOfWord,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n }) +\n // Baseline\n buildXMLString('line', {\n x1: left + leftOffset,\n x2: left + leftOffset + layout.width,\n y1: top + topOffset + baselineDelta + baselineOfWord,\n y2: top + topOffset + baselineDelta + baselineOfWord,\n stroke: '#14c000',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n } else {\n // We need manually add the font ascender height to ensure it starts\n // at the baseline because 's alignment baseline is set to `hanging`\n // by default and supported to change in SVG 1.1.\n topOffset += baselineOfWord + baselineDelta\n }\n\n // Get the decoration shape.\n if (parentStyle.textDecorationLine) {\n const deco = decorationLines[line]\n if (deco && !deco[4]) {\n decorationShape += buildDecoration(\n {\n left: left + deco[0],\n top: deco[1],\n width: deco[3],\n ascender: deco[2],\n clipPathId,\n matrix,\n },\n parentStyle\n )\n deco[4] = 1\n }\n }\n\n if (path !== null) {\n mergedPath += path + ' '\n } else {\n const [t, shape] = buildText(\n {\n content: text,\n filter,\n id,\n left: left + leftOffset,\n top: top + topOffset,\n width,\n height: heightOfWord,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape: !!_inheritedBackgroundClipTextPath,\n decorationShape,\n },\n parentStyle\n )\n result += t\n backgroundClipDef += shape\n decorationShape = ''\n }\n\n if (isLastDisplayedBeforeEllipsis) {\n break\n }\n }\n\n // Embed the font as path.\n if (mergedPath) {\n const p =\n parentStyle.color !== 'transparent' && opacity !== 0\n ? buildXMLString('path', {\n fill: parentStyle.color,\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n opacity: opacity !== 1 ? opacity : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n mask: overflowMaskId ? `url(#${overflowMaskId})` : undefined,\n\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n 'stroke-width': inheritedStyle.WebkitTextStrokeWidth\n ? `${inheritedStyle.WebkitTextStrokeWidth}px`\n : undefined,\n stroke: inheritedStyle.WebkitTextStrokeWidth\n ? inheritedStyle.WebkitTextStrokeColor\n : undefined,\n 'stroke-linejoin': inheritedStyle.WebkitTextStrokeWidth\n ? 'round'\n : undefined,\n 'paint-order': inheritedStyle.WebkitTextStrokeWidth\n ? 'stroke'\n : undefined,\n })\n : ''\n\n if (_inheritedBackgroundClipTextPath) {\n backgroundClipDef = buildXMLString('path', {\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n })\n }\n\n result +=\n (filter\n ? filter +\n buildXMLString(\n 'g',\n { filter: `url(#satori_s-${id})` },\n p + decorationShape\n )\n : p + decorationShape) + extra\n }\n\n // Attach information to the parent node.\n if (backgroundClipDef) {\n ;(parentStyle._inheritedBackgroundClipTextPath as any).value +=\n backgroundClipDef\n }\n\n return result\n}\n\nfunction createTextContainerNode(\n Yoga: Yoga,\n textAlign: string\n): ReturnType {\n // Create a container node for this text fragment.\n const textContainer = Yoga.Node.create()\n textContainer.setAlignItems(Yoga.ALIGN_BASELINE)\n textContainer.setJustifyContent(\n v(\n textAlign,\n {\n left: Yoga.JUSTIFY_FLEX_START,\n right: Yoga.JUSTIFY_FLEX_END,\n center: Yoga.JUSTIFY_CENTER,\n justify: Yoga.JUSTIFY_SPACE_BETWEEN,\n // We don't have other writing modes yet.\n start: Yoga.JUSTIFY_FLEX_START,\n end: Yoga.JUSTIFY_FLEX_END,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'textAlign'\n )\n )\n\n return textContainer\n}\n\nfunction detectTabs(text: string):\n | {\n index: null\n tabCount: 0\n }\n | {\n index: number\n tabCount: number\n } {\n const result = /(\\t)+/.exec(text)\n return result\n ? {\n index: result.index,\n tabCount: result[0].length,\n }\n : {\n index: null,\n tabCount: 0,\n }\n}\n","import { lengthToNumber } from '../../utils.js'\nimport cssColorParse from 'parse-css-color'\nimport type { ColorStop } from 'css-gradient-parser'\n\ninterface Stop {\n color: string\n offset?: number\n}\n\nexport function normalizeStops(\n totalLength: number,\n colorStops: ColorStop[],\n inheritedStyle: Record,\n repeating: boolean,\n from?: 'background' | 'mask'\n) {\n // Resolve the color stops based on the spec:\n // https://drafts.csswg.org/css-images/#color-stop-syntax\n const stops: Stop[] = []\n for (const stop of colorStops) {\n const { color } = stop\n if (!stops.length) {\n // First stop, ensure it's at the start.\n stops.push({\n offset: 0,\n color,\n })\n\n if (!stop.offset) continue\n if (stop.offset.value === '0') continue\n }\n\n // All offsets are relative values (0-1) in SVG.\n const offset =\n typeof stop.offset === 'undefined'\n ? undefined\n : stop.offset.unit === '%'\n ? +stop.offset.value / 100\n : Number(\n lengthToNumber(\n `${stop.offset.value}${stop.offset.unit}`,\n inheritedStyle.fontSize as number,\n totalLength,\n inheritedStyle,\n true\n )\n ) / totalLength\n\n stops.push({\n offset,\n color,\n })\n }\n if (!stops.length) {\n stops.push({\n offset: 0,\n color: 'transparent',\n })\n }\n // Last stop, ensure it's at the end.\n const lastStop = stops[stops.length - 1]\n if (lastStop.offset !== 1) {\n if (typeof lastStop.offset === 'undefined') {\n lastStop.offset = 1\n } else if (repeating) {\n stops[stops.length - 1] = {\n offset: 1,\n color: lastStop.color,\n }\n } else {\n stops.push({\n offset: 1,\n color: lastStop.color,\n })\n }\n }\n\n let previousStop = 0\n let nextStop = 1\n // Evenly distribute the missing stop offsets.\n for (let i = 0; i < stops.length; i++) {\n if (typeof stops[i].offset === 'undefined') {\n // Find the next stop that has an offset.\n if (nextStop < i) nextStop = i\n while (typeof stops[nextStop].offset === 'undefined') nextStop++\n\n stops[i].offset =\n ((stops[nextStop].offset - stops[previousStop].offset) /\n (nextStop - previousStop)) *\n (i - previousStop) +\n stops[previousStop].offset\n } else {\n previousStop = i\n }\n }\n\n if (from === 'mask') {\n return stops.map((stop) => {\n const color = cssColorParse(stop.color)\n if (!color) return stop\n if (color.alpha === 0) {\n return { ...stop, color: `rgba(0, 0, 0, 1)` }\n } else {\n return { ...stop, color: `rgba(255, 255, 255, ${color.alpha})` }\n }\n })\n }\n\n return stops\n}\n","import { parseLinearGradient, ColorStop } from 'css-gradient-parser'\nimport { normalizeStops } from './utils.js'\nimport { buildXMLString, calcDegree, lengthToNumber } from '../../utils.js'\n\nexport function buildLinearGradient(\n {\n id,\n width,\n height,\n repeatX,\n repeatY,\n }: {\n id: string\n width: number\n height: number\n repeatX: boolean\n repeatY: boolean\n },\n image: string,\n dimensions: number[],\n offsets: number[],\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n) {\n const parsed = parseLinearGradient(image)\n const [imageWidth, imageHeight] = dimensions\n const repeating = image.startsWith('repeating')\n\n // Calculate the direction.\n let points, length, xys\n\n if (parsed.orientation.type === 'directional') {\n points = resolveXYFromDirection(parsed.orientation.value)\n\n length = Math.sqrt(\n Math.pow((points.x2 - points.x1) * imageWidth, 2) +\n Math.pow((points.y2 - points.y1) * imageHeight, 2)\n )\n } else if (parsed.orientation.type === 'angular') {\n const { length: l, ...p } = calcNormalPoint(\n (calcDegree(\n `${parsed.orientation.value.value}${parsed.orientation.value.unit}`\n ) /\n 180) *\n Math.PI,\n imageWidth,\n imageHeight\n )\n\n length = l\n points = p\n }\n\n xys = repeating\n ? calcPercentage(parsed.stops, length, points, inheritableStyle)\n : points\n\n const stops = normalizeStops(\n repeating ? resolveRepeatingCycle(parsed.stops, length) : length,\n parsed.stops,\n inheritableStyle,\n repeating,\n from\n )\n\n const gradientId = `satori_bi${id}`\n const patternId = `satori_pattern_${id}`\n\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? imageWidth / width : '1',\n height: repeatY ? imageHeight / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'linearGradient',\n {\n id: gradientId,\n ...xys,\n spreadMethod: repeating ? 'repeat' : 'pad',\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: (stop.offset ?? 0) * 100 + '%',\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: imageWidth,\n height: imageHeight,\n fill: `url(#${gradientId})`,\n })\n )\n return [patternId, defs]\n}\n\nfunction resolveRepeatingCycle(stops: ColorStop[], length: number) {\n const last = stops[stops.length - 1]\n const { offset } = last\n if (!offset) return length\n\n if (offset.unit === '%') return (Number(offset.value) / 100) * length\n\n return Number(offset.value)\n}\n\nfunction resolveXYFromDirection(dir: string) {\n let x1 = 0,\n y1 = 0,\n x2 = 0,\n y2 = 0\n\n if (dir.includes('top')) {\n y1 = 1\n } else if (dir.includes('bottom')) {\n y2 = 1\n }\n\n if (dir.includes('left')) {\n x1 = 1\n } else if (dir.includes('right')) {\n x2 = 1\n }\n\n if (!x1 && !x2 && !y1 && !y2) {\n y1 = 1\n }\n\n return { x1, y1, x2, y2 }\n}\n\n/**\n * calc start point and end point of linear gradient\n */\nfunction calcNormalPoint(v: number, w: number, h: number) {\n const r = Math.pow(h / w, 2)\n\n // make sure angle is 0 <= angle <= 360\n v = ((v % (Math.PI * 2)) + Math.PI * 2) % (Math.PI * 2)\n\n let x1, y1, x2, y2, length, tmp, a, b\n\n const dfs = (angle: number) => {\n if (angle === 0) {\n x1 = 0\n y1 = h\n x2 = 0\n y2 = 0\n length = h\n return\n } else if (angle === Math.PI / 2) {\n x1 = 0\n y1 = 0\n x2 = w\n y2 = 0\n length = w\n return\n }\n if (angle > 0 && angle < Math.PI / 2) {\n x1 =\n ((r * w) / 2 / Math.tan(angle) - h / 2) /\n (Math.tan(angle) + r / Math.tan(angle))\n y1 = Math.tan(angle) * x1 + h\n x2 = Math.abs(w / 2 - x1) + w / 2\n y2 = h / 2 - Math.abs(y1 - h / 2)\n length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n // y = -1 / tan * x = h / 2 +1 / tan * w/2\n // y = tan * x + h\n a =\n (w / 2 / Math.tan(angle) - h / 2) /\n (Math.tan(angle) + 1 / Math.tan(angle))\n b = Math.tan(angle) * a + h\n length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n return\n } else if (angle > Math.PI / 2 && angle < Math.PI) {\n x1 =\n (h / 2 + (r * w) / 2 / Math.tan(angle)) /\n (Math.tan(angle) + r / Math.tan(angle))\n y1 = Math.tan(angle) * x1\n x2 = Math.abs(w / 2 - x1) + w / 2\n y2 = h / 2 + Math.abs(y1 - h / 2)\n // y = -1 / tan * x + h / 2 + 1 / tan * w / 2\n // y = tan * x\n a =\n (w / 2 / Math.tan(angle) + h / 2) /\n (Math.tan(angle) + 1 / Math.tan(angle))\n b = Math.tan(angle) * a\n length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n return\n } else if (angle >= Math.PI) {\n dfs(angle - Math.PI)\n\n tmp = x1\n x1 = x2\n x2 = tmp\n tmp = y1\n y1 = y2\n y2 = tmp\n }\n }\n\n dfs(v)\n\n return {\n x1: x1 / w,\n y1: y1 / h,\n x2: x2 / w,\n y2: y2 / h,\n length,\n }\n}\n\nfunction calcPercentage(\n stops: ColorStop[],\n length: number,\n points: {\n x1: number\n y1: number\n x2: number\n y2: number\n },\n inheritableStyle: Record\n) {\n const { x1, x2, y1, y2 } = points\n const p1 = !stops[0].offset\n ? 0\n : stops[0].offset.unit === '%'\n ? Number(stops[0].offset.value) / 100\n : lengthToNumber(\n `${stops[0].offset.value}${stops[0].offset.unit}`,\n inheritableStyle.fontSize as number,\n length,\n inheritableStyle,\n true\n ) / length\n const p2 = !stops.at(-1).offset\n ? 1\n : stops.at(-1).offset.unit === '%'\n ? Number(stops.at(-1).offset.value) / 100\n : lengthToNumber(\n `${stops.at(-1).offset.value}${stops.at(-1).offset.unit}`,\n inheritableStyle.fontSize as number,\n length,\n inheritableStyle,\n true\n ) / length\n\n const sx = (x2 - x1) * p1 + x1\n const sy = (y2 - y1) * p1 + y1\n const ex = (x2 - x1) * p2 + x1\n const ey = (y2 - y1) * p2 + y1\n\n return {\n x1: sx,\n y1: sy,\n x2: ex,\n y2: ey,\n }\n}\n","import {\n parseRadialGradient,\n RadialResult,\n RadialPropertyValue,\n} from 'css-gradient-parser'\nimport { buildXMLString, lengthToNumber } from '../../utils.js'\nimport { normalizeStops } from './utils.js'\n\nexport function buildRadialGradient(\n {\n id,\n width,\n height,\n repeatX,\n repeatY,\n }: {\n id: string\n width: number\n height: number\n repeatX: boolean\n repeatY: boolean\n },\n image: string,\n dimensions: number[],\n offsets: number[],\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n) {\n const {\n shape,\n stops: colorStops,\n position,\n size,\n } = parseRadialGradient(image)\n const [xDelta, yDelta] = dimensions\n\n let cx: number = xDelta / 2\n let cy: number = yDelta / 2\n\n const pos = calcRadialGradient(\n position.x,\n position.y,\n xDelta,\n yDelta,\n inheritableStyle.fontSize as number,\n inheritableStyle\n )\n cx = pos.x\n cy = pos.y\n\n const stops = normalizeStops(width, colorStops, inheritableStyle, false, from)\n\n const gradientId = `satori_radial_${id}`\n const patternId = `satori_pattern_${id}`\n const maskId = `satori_mask_${id}`\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/radial-gradient()#values\n const spread = calcRadius(\n shape as Shape,\n size,\n inheritableStyle.fontSize as number,\n { x: cx, y: cy },\n [xDelta, yDelta],\n inheritableStyle\n )\n\n // TODO: check for repeat-x/repeat-y\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? xDelta / width : '1',\n height: repeatY ? yDelta / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'radialGradient',\n {\n id: gradientId,\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: stop.offset || 0,\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString(\n 'mask',\n {\n id: maskId,\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: '#fff',\n })\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: stops.at(-1)?.color || 'transparent',\n }) +\n buildXMLString(shape, {\n cx: cx,\n cy: cy,\n width: xDelta,\n height: yDelta,\n ...spread,\n fill: `url(#${gradientId})`,\n mask: `url(#${maskId})`,\n })\n )\n\n const result = [patternId, defs]\n return result\n}\n\ninterface Position {\n type: 'keyword' | 'length'\n value: string\n}\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\n\nfunction calcRadialGradient(\n cx: RadialPropertyValue,\n cy: RadialPropertyValue,\n xDelta: number,\n yDelta: number,\n baseFontSize: number,\n style: Record\n) {\n const pos: { x: number; y: number } = { x: xDelta / 2, y: yDelta / 2 }\n if (cx.type === 'keyword') {\n Object.assign(\n pos,\n calcPos(cx.value as PositionKeyWord, xDelta, yDelta, 'x')\n )\n } else {\n pos.x =\n lengthToNumber(\n `${cx.value.value}${cx.value.unit}`,\n baseFontSize,\n xDelta,\n style,\n true\n ) || xDelta / 2\n }\n\n if (cy.type === 'keyword') {\n Object.assign(\n pos,\n calcPos(cy.value as PositionKeyWord, xDelta, yDelta, 'y')\n )\n } else {\n pos.y =\n lengthToNumber(\n `${cy.value.value}${cy.value.unit}`,\n baseFontSize,\n yDelta,\n style,\n true\n ) || yDelta / 2\n }\n\n return pos\n}\n\nfunction calcPos(\n key: PositionKeyWord,\n xDelta: number,\n yDelta: number,\n dir: 'x' | 'y'\n) {\n switch (key) {\n case 'center':\n return { [dir]: dir === 'x' ? xDelta / 2 : yDelta / 2 }\n case 'left':\n return { x: 0 }\n case 'top':\n return { y: 0 }\n case 'right':\n return { x: xDelta }\n case 'bottom':\n return { y: yDelta }\n }\n}\n\ntype Shape = 'circle' | 'ellipse'\nfunction calcRadius(\n shape: Shape,\n endingShape: RadialResult['size'],\n baseFontSize: number,\n centerAxis: { x: number; y: number },\n length: [number, number],\n inheritableStyle: Record\n) {\n const [xDelta, yDelta] = length\n const { x: cx, y: cy } = centerAxis\n const spread: Record = {}\n let fx = 0\n let fy = 0\n\n if (isSizeAllLength(endingShape)) {\n if (endingShape.some((v) => v.value.value.startsWith('-'))) {\n throw new Error(\n 'disallow setting negative values to the size of the shape. Check https://w3c.github.io/csswg-drafts/css-images/#valdef-rg-size-length-0'\n )\n }\n if (shape === 'circle') {\n return {\n r: Number(\n lengthToNumber(\n `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n )\n ),\n }\n } else {\n return {\n rx: Number(\n lengthToNumber(\n `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n )\n ),\n ry: Number(\n lengthToNumber(\n `${endingShape[1].value.value}${endingShape[1].value.unit}`,\n baseFontSize,\n yDelta,\n inheritableStyle,\n true\n )\n ),\n }\n }\n }\n\n switch (endingShape[0].value) {\n case 'farthest-corner':\n fx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'closest-corner':\n fx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'farthest-side':\n if (shape === 'circle') {\n spread.r = Math.max(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n }\n return spread\n case 'closest-side':\n if (shape === 'circle') {\n spread.r = Math.min(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n }\n\n return spread\n }\n if (shape === 'circle') {\n spread.r = Math.sqrt(fx * fx + fy * fy)\n } else {\n // Spec: https://drafts.csswg.org/css-images/#typedef-size\n // Get the aspect ratio of the closest-side size.\n const ratio = fy !== 0 ? fx / fy : 1\n\n if (fx === 0) {\n spread.rx = 0\n spread.ry = 0\n } else {\n // fx^2/a^2 + fy^2/b^2 = 1\n // fx^2/(b*ratio)^2 + fy^2/b^2 = 1\n // (fx^2+fy^2*ratio^2) = (b*ratio)^2\n // b = sqrt(fx^2+fy^2*ratio^2)/ratio\n\n spread.ry = Math.sqrt(fx * fx + fy * fy * ratio * ratio) / ratio\n spread.rx = spread.ry * ratio\n }\n }\n\n return spread\n}\n\nfunction isSizeAllLength(v: RadialPropertyValue[]): v is Array<{\n type: 'length'\n value: {\n unit: string\n value: string\n }\n}> {\n return !v.some((s) => s.type === 'keyword')\n}\n","import CssDimension from '../vendor/parse-css-dimension/index.js'\nimport { buildXMLString } from '../utils.js'\n\nimport { resolveImageData } from '../handler/image.js'\nimport { buildLinearGradient } from './gradient/linear.js'\nimport { buildRadialGradient } from './gradient/radial.js'\n\ninterface Background {\n attachment?: string\n color?: string\n clip: string\n image: string\n origin?: string\n position: string\n size: string\n repeat: string\n}\n\nfunction toAbsoluteValue(v: string | number, base: number) {\n if (typeof v === 'string' && v.endsWith('%')) {\n return (base * parseFloat(v)) / 100\n }\n return +v\n}\n\nfunction parseLengthPairs(\n str: string,\n {\n x,\n y,\n defaultX,\n defaultY,\n }: {\n x: number\n y: number\n defaultX: number | string\n defaultY: number | string\n }\n) {\n return (\n str\n ? str\n .split(' ')\n .map((value) => {\n try {\n const parsed = new CssDimension(value)\n return parsed.type === 'length' || parsed.type === 'number'\n ? parsed.value\n : parsed.value + parsed.unit\n } catch (e) {\n return null\n }\n })\n .filter((v) => v !== null)\n : [defaultX, defaultY]\n ).map((v, index) => toAbsoluteValue(v, [x, y][index]))\n}\n\nexport default async function backgroundImage(\n {\n id,\n width,\n height,\n left,\n top,\n }: { id: string; width: number; height: number; left: number; top: number },\n { image, size, position, repeat }: Background,\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n): Promise {\n // Default to `repeat`.\n repeat = repeat || 'repeat'\n from = from || 'background'\n\n const repeatX = repeat === 'repeat-x' || repeat === 'repeat'\n const repeatY = repeat === 'repeat-y' || repeat === 'repeat'\n\n const dimensions = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: width,\n defaultY: height,\n })\n const offsets = parseLengthPairs(position, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n\n if (\n image.startsWith('linear-gradient(') ||\n image.startsWith('repeating-linear-gradient(')\n ) {\n return buildLinearGradient(\n { id, width, height, repeatX, repeatY },\n image,\n dimensions,\n offsets,\n inheritableStyle,\n from\n )\n }\n\n if (image.startsWith('radial-gradient(')) {\n return buildRadialGradient(\n { id, width, height, repeatX, repeatY },\n image,\n dimensions,\n offsets,\n inheritableStyle,\n from\n )\n }\n\n if (image.startsWith('url(')) {\n const dimensionsWithoutFallback = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n const [src, imageWidth, imageHeight] = await resolveImageData(\n image.slice(4, -1)\n )\n const resolvedWidth =\n from === 'mask'\n ? imageWidth || dimensionsWithoutFallback[0]\n : dimensionsWithoutFallback[0] || imageWidth\n const resolvedHeight =\n from === 'mask'\n ? imageHeight || dimensionsWithoutFallback[1]\n : dimensionsWithoutFallback[1] || imageHeight\n\n return [\n `satori_bi${id}`,\n buildXMLString(\n 'pattern',\n {\n id: `satori_bi${id}`,\n patternContentUnits: 'userSpaceOnUse',\n patternUnits: 'userSpaceOnUse',\n x: offsets[0] + left,\n y: offsets[1] + top,\n width: repeatX ? resolvedWidth : '100%',\n height: repeatY ? resolvedHeight : '100%',\n },\n buildXMLString('image', {\n x: 0,\n y: 0,\n width: resolvedWidth,\n height: resolvedHeight,\n preserveAspectRatio: 'none',\n href: src,\n })\n ),\n ]\n }\n\n throw new Error(`Invalid background image: \"${image}\"`)\n}\n","/**\n * CSS border radius to SVG path.\n */\n\n// TODO: Support the `border-radius: 10px / 20px` syntax.\n// https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n\nimport { buildXMLString, lengthToNumber } from '../utils.js'\n\n// Getting the intersection of a 45deg ray with the elliptical arc x^2/rx^2 + y^2/ry^2 = 1.\n// Reference:\n// https://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter\nfunction svgArcCenterOffset([rx, ry]: number[]) {\n if (Math.round(rx * 1000) === 0 && Math.round(ry * 1000) === 0) {\n return 0\n }\n return Math.round(((rx * ry) / Math.sqrt(rx * rx + ry * ry)) * 1000) / 1000\n}\n\nfunction resolveSize(a: number, b: number, limit: number) {\n if (limit < a + b) {\n if (limit / 2 < a && limit / 2 < b) {\n a = b = limit / 2\n } else if (limit / 2 < a) {\n a = limit - b\n } else if (limit / 2 < b) {\n b = limit - a\n }\n }\n return [a, b]\n}\n\nfunction makeSmaller(arr: [number, number]) {\n arr[0] = arr[1] = Math.min(arr[0], arr[1])\n}\n\n// Each corner can have 2 values, the first is the horizontal radius, the second is the vertical radius.\nfunction resolveRadius(\n v: number | string | undefined,\n width: number,\n height: number,\n fontSize: number,\n style: any\n): [boolean, undefined | [number, number]] {\n if (typeof v === 'string') {\n const sides = v.split(' ').map((s) => s.trim())\n const singleValue = !sides[1] && !sides[0].endsWith('%')\n sides[1] = sides[1] || sides[0]\n return [\n singleValue,\n [\n Math.min(lengthToNumber(sides[0], fontSize, width, style, true), width),\n Math.min(\n lengthToNumber(sides[1], fontSize, height, style, true),\n height\n ),\n ],\n ]\n }\n if (typeof v === 'number') {\n return [true, [Math.min(v, width), Math.min(v, height)]]\n }\n return [true, undefined]\n}\n\nconst radiusZeroOrNull = (_radius?: [number, number]) =>\n _radius && _radius[0] !== 0 && _radius[1] !== 0\n\nexport function getBorderRadiusClipPath(\n {\n id,\n borderRadiusPath,\n borderType,\n left,\n top,\n width,\n height,\n }: {\n id: string\n borderRadiusPath?: string\n borderType?: 'rect' | 'path'\n left: number\n top: number\n width: number\n height: number\n },\n style: Record\n) {\n const rectClipId = `satori_brc-${id}`\n const defs = buildXMLString(\n 'clipPath',\n {\n id: rectClipId,\n },\n buildXMLString(borderType, {\n x: left,\n y: top,\n width,\n height,\n d: borderRadiusPath ? borderRadiusPath : undefined,\n })\n )\n\n return [defs, rectClipId]\n}\n\nexport default function radius(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n style: Record,\n partialSides?: boolean[]\n) {\n let {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n fontSize,\n } = style\n\n let singleAbsValueTopLeftCorner\n let singleAbsValueTopRightCorner\n let singleAbsValueBottomLeftCorner\n let singleAbsValueBottomRightCorner\n ;[singleAbsValueTopLeftCorner, borderTopLeftRadius] = resolveRadius(\n borderTopLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueTopRightCorner, borderTopRightRadius] = resolveRadius(\n borderTopRightRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomLeftCorner, borderBottomLeftRadius] = resolveRadius(\n borderBottomLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomRightCorner, borderBottomRightRadius] = resolveRadius(\n borderBottomRightRadius,\n width,\n height,\n fontSize,\n style\n )\n\n if (\n !partialSides &&\n !radiusZeroOrNull(borderTopLeftRadius) &&\n !radiusZeroOrNull(borderTopRightRadius) &&\n !radiusZeroOrNull(borderBottomLeftRadius) &&\n !radiusZeroOrNull(borderBottomRightRadius)\n ) {\n return ''\n }\n borderTopLeftRadius ||= [0, 0]\n borderTopRightRadius ||= [0, 0]\n borderBottomLeftRadius ||= [0, 0]\n borderBottomRightRadius ||= [0, 0]\n\n // Limit the radius sizes of each edge to make sure they will never overlap.\n\n // Top\n ;[borderTopLeftRadius[0], borderTopRightRadius[0]] = resolveSize(\n borderTopLeftRadius[0],\n borderTopRightRadius[0],\n width\n )\n // Bottom\n ;[borderBottomLeftRadius[0], borderBottomRightRadius[0]] = resolveSize(\n borderBottomLeftRadius[0],\n borderBottomRightRadius[0],\n width\n )\n // Left\n ;[borderTopLeftRadius[1], borderBottomLeftRadius[1]] = resolveSize(\n borderTopLeftRadius[1],\n borderBottomLeftRadius[1],\n height\n )\n // Right\n ;[borderTopRightRadius[1], borderBottomRightRadius[1]] = resolveSize(\n borderTopRightRadius[1],\n borderBottomRightRadius[1],\n height\n )\n\n // If the specified border radius is a single value (e.g. 10px or 10em), we take\n // the minimum of the resolved horizontal and vertical radius and apply to both.\n if (singleAbsValueTopLeftCorner) {\n makeSmaller(borderTopLeftRadius)\n }\n if (singleAbsValueTopRightCorner) {\n makeSmaller(borderTopRightRadius)\n }\n if (singleAbsValueBottomLeftCorner) {\n makeSmaller(borderBottomLeftRadius)\n }\n if (singleAbsValueBottomRightCorner) {\n makeSmaller(borderBottomRightRadius)\n }\n\n type Arc = [[number, number], [number, number]]\n const p: Arc[] = []\n p[0] = [borderTopRightRadius, borderTopRightRadius]\n p[1] = [\n borderBottomRightRadius,\n [-borderBottomRightRadius[0], borderBottomRightRadius[1]],\n ]\n p[2] = [\n borderBottomLeftRadius,\n [-borderBottomLeftRadius[0], -borderBottomLeftRadius[1]],\n ]\n p[3] = [\n borderTopLeftRadius,\n [borderTopLeftRadius[0], -borderTopLeftRadius[1]],\n ]\n\n const T = `h${width - borderTopLeftRadius[0] - borderTopRightRadius[0]} a${\n p[0][0]\n } 0 0 1 ${p[0][1]}`\n const R = `v${\n height - borderTopRightRadius[1] - borderBottomRightRadius[1]\n } a${p[1][0]} 0 0 1 ${p[1][1]}`\n const B = `h${\n borderBottomRightRadius[0] + borderBottomLeftRadius[0] - width\n } a${p[2][0]} 0 0 1 ${p[2][1]}`\n const L = `v${borderBottomLeftRadius[1] + borderTopLeftRadius[1] - height} a${\n p[3][0]\n } 0 0 1 ${p[3][1]}`\n\n if (partialSides) {\n // \"However it is not defined what these transitions look like or what function maps from this ratio to a point on the curve.\"\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#corner-transitions\n let start = partialSides.indexOf(false)\n\n if (!partialSides.includes(true)) throw new Error('Invalid `partialSides`.')\n\n if (start === -1) {\n start = 0\n } else {\n while (!partialSides[start]) {\n start = (start + 1) % 4\n }\n }\n\n function getArc(i: number) {\n const c0 = svgArcCenterOffset(\n [\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomRightRadius,\n borderBottomLeftRadius,\n ][i]\n )\n return i === 0\n ? [\n [\n left + borderTopLeftRadius[0] - c0,\n top + borderTopLeftRadius[1] - c0,\n ],\n [left + borderTopLeftRadius[0], top],\n ]\n : i === 1\n ? [\n [\n left + width - borderTopRightRadius[0] + c0,\n top + borderTopRightRadius[1] - c0,\n ],\n [left + width, top + borderTopRightRadius[1]],\n ]\n : i === 2\n ? [\n [\n left + width - borderBottomRightRadius[0] + c0,\n top + height - borderBottomRightRadius[1] + c0,\n ],\n [left + width - borderBottomRightRadius[0], top + height],\n ]\n : [\n [\n left + borderBottomLeftRadius[0] - c0,\n top + height - borderBottomLeftRadius[1] + c0,\n ],\n [left, top + height - borderBottomLeftRadius[1]],\n ]\n }\n\n let result = ''\n\n const arc0 = getArc(start)\n\n let l = `M${arc0[0]} A${p[(start + 3) % 4][0]} 0 0 1 ${arc0[1]}`\n\n let len = 0\n for (; len < 4 && partialSides[(start + len) % 4]; len++) {\n result += l + ' '\n l = [T, R, B, L][(start + len) % 4]\n }\n const end = (start + len) % 4\n\n // For the last segment, we skip the full arc and add the half arc.\n result += l.split(' ')[0]\n\n const arc1 = getArc(end)\n result += ` A${p[(end + 3) % 4][0]} 0 0 1 ${arc1[0]}`\n\n return result\n }\n\n // Generate the path\n return `M${left + borderTopLeftRadius[0]},${top} ${T} ${R} ${B} ${L}`\n}\n","import { buildXMLString } from '../utils.js'\nimport radius from './border-radius.js'\n\nfunction compareBorderDirections(a: string, b: string, style: any) {\n return (\n style[a + 'Width'] === style[b + 'Width'] &&\n style[a + 'Style'] === style[b + 'Style'] &&\n style[a + 'Color'] === style[b + 'Color']\n )\n}\n\nexport function getBorderClipPath(\n {\n id,\n // Can be `overflow: hidden` from parent containers.\n currentClipPathId,\n borderPath,\n borderType,\n left,\n top,\n width,\n height,\n }: {\n id: string\n currentClipPathId?: string | number\n borderPath?: string\n borderType?: 'rect' | 'path'\n left: number\n top: number\n width: number\n height: number\n },\n style: Record\n) {\n const hasBorder =\n style.borderTopWidth ||\n style.borderRightWidth ||\n style.borderBottomWidth ||\n style.borderLeftWidth\n\n if (!hasBorder) return null\n\n // In SVG, stroke is always centered on the path and there is no\n // existing property to make it behave like CSS border. So here we\n // 2x the border width and introduce another clip path to clip the\n // overflowed part.\n const rectClipId = `satori_bc-${id}`\n const defs = buildXMLString(\n 'clipPath',\n {\n id: rectClipId,\n 'clip-path': currentClipPathId ? `url(#${currentClipPathId})` : undefined,\n },\n buildXMLString(borderType, {\n x: left,\n y: top,\n width,\n height,\n d: borderPath ? borderPath : undefined,\n })\n )\n\n return [defs, rectClipId]\n}\n\nexport default function border(\n {\n left,\n top,\n width,\n height,\n props,\n asContentMask,\n maskBorderOnly,\n }: {\n left: number\n top: number\n width: number\n height: number\n props: any\n asContentMask?: boolean\n maskBorderOnly?: boolean\n },\n style: Record\n) {\n const directions = ['borderTop', 'borderRight', 'borderBottom', 'borderLeft']\n\n // No border\n if (\n !asContentMask &&\n !directions.some((direction) => style[direction + 'Width'])\n )\n return ''\n\n let fullBorder = ''\n\n let start = 0\n while (\n start > 0 &&\n compareBorderDirections(\n directions[start],\n directions[(start + 3) % 4],\n style\n )\n ) {\n start = (start + 3) % 4\n }\n\n let partialSides = [false, false, false, false]\n let currentStyle = []\n for (let _i = 0; _i < 4; _i++) {\n const i = (start + _i) % 4\n const ni = (start + _i + 1) % 4\n\n const d = directions[i]\n const nd = directions[ni]\n\n partialSides[i] = true\n currentStyle = [\n style[d + 'Width'],\n style[d + 'Style'],\n style[d + 'Color'],\n d,\n ]\n\n if (!compareBorderDirections(d, nd, style)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[d.replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record,\n partialSides\n ),\n })\n }\n partialSides = [false, false, false, false]\n }\n }\n\n if (partialSides.some(Boolean)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[currentStyle[3].replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record,\n partialSides\n ),\n })\n }\n }\n\n return fullBorder\n}\n","/**\n * When there is border radius, the content area should be clipped by the\n * inner path of border + padding. This applies to element as well as any\n * child element inside a `overflow: hidden` container.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport border from './border.js'\n\nexport default function contentMask(\n {\n id,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string | undefined\n borderOnly?: boolean\n },\n style: Record\n) {\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingBottom as number) || 0)\n\n const contentArea = {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n }\n\n const _contentMask = buildXMLString(\n 'mask',\n { id },\n buildXMLString('rect', {\n ...contentArea,\n fill: '#fff',\n // add transformation matrix to mask if overflow is hidden AND a\n // transformation style is defined, otherwise children will be clipped\n // incorrectly\n transform:\n style.overflow === 'hidden' && style.transform && matrix\n ? matrix\n : undefined,\n mask: style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined,\n }) +\n border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n },\n asContentMask: true,\n maskBorderOnly: borderOnly,\n },\n style\n )\n )\n\n return _contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport { createShapeParser } from '../parser/shape.js'\n\nexport function genClipPathId(id: string) {\n return `satori_cp-${id}`\n}\nexport function genClipPath(id: string) {\n return `url(#${genClipPathId(id)})`\n}\n\nexport function buildClipPath(\n v: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record,\n inheritedStyle: Record\n) {\n if (style.clipPath === 'none') return ''\n\n const parser = createShapeParser(v, style, inheritedStyle)\n const clipPath = style.clipPath as string\n\n let tmp: { type: string; [p: string]: string | number } = { type: '' }\n\n for (const k of Object.keys(parser)) {\n tmp = parser[k](clipPath)\n if (tmp) break\n }\n\n if (tmp) {\n const { type, ...rest } = tmp\n return buildXMLString(\n 'clipPath',\n {\n id: genClipPathId(v.id),\n 'clip-path': v.currentClipPath,\n transform: `translate(${v.left}, ${v.top})`,\n },\n buildXMLString(type, rest)\n )\n }\n return ''\n}\n","/**\n * Generate clip path for the given element.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport mask from './content-mask.js'\nimport { buildClipPath, genClipPathId } from './clip-path.js'\n\nexport default function overflow(\n {\n left,\n top,\n width,\n height,\n path,\n matrix,\n id,\n currentClipPath,\n src,\n }: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record,\n inheritableStyle: Record\n) {\n let overflowClipPath = ''\n const clipPath =\n style.clipPath && style.clipPath !== 'none'\n ? buildClipPath(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record,\n inheritableStyle\n )\n : ''\n\n if (style.overflow !== 'hidden' && !src) {\n overflowClipPath = ''\n } else {\n const _id = clipPath ? `satori_ocp-${id}` : genClipPathId(id)\n\n overflowClipPath = buildXMLString(\n 'clipPath',\n {\n id: _id,\n 'clip-path': currentClipPath,\n },\n buildXMLString(path ? 'path' : 'rect', {\n x: left,\n y: top,\n width,\n height,\n d: path ? path : undefined,\n // add transformation matrix to clip path if overflow is hidden AND a\n // transformation style is defined, otherwise children will be clipped\n // relative to the parent's original plane instead of the transformed\n // plane\n transform:\n style.overflow === 'hidden' && style.transform && matrix\n ? matrix\n : undefined,\n })\n )\n }\n\n const contentMask = mask(\n {\n id: `satori_om-${id}`,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly: src ? false : true,\n },\n style\n )\n\n return clipPath + overflowClipPath + contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport buildBackgroundImage from './background-image.js'\nimport type { MaskProperty } from '../parser/mask.js'\n\nconst genMaskImageId = (id: string) => `satori_mi-${id}`\n\nexport default async function buildMaskImage(\n v: {\n id: string\n left: number\n top: number\n width: number\n height: number\n },\n style: Record,\n inheritedStyle: Record\n): Promise<[string, string]> {\n if (!style.maskImage) return ['', '']\n const { left, top, width, height, id } = v\n const maskImage = style.maskImage as unknown as MaskProperty[]\n const length = maskImage.length\n if (!length) return ['', '']\n const miId = genMaskImageId(id)\n\n let mask = ''\n\n for (let i = 0; i < length; i++) {\n const m = maskImage[i]\n\n const [_id, def] = await buildBackgroundImage(\n { id: `${miId}-${i}`, left, top, width, height },\n m,\n inheritedStyle,\n 'mask'\n )\n\n mask +=\n def +\n buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: `url(#${_id})`,\n })\n }\n\n mask = buildXMLString('mask', { id: miId }, mask)\n\n return [miId, mask]\n}\n","import type { ParsedTransformOrigin } from '../transform-origin.js'\n\nimport backgroundImage from './background-image.js'\nimport radius, { getBorderRadiusClipPath } from './border-radius.js'\nimport { boxShadow } from './shadow.js'\nimport transform from './transform.js'\nimport overflow from './overflow.js'\nimport { buildXMLString } from '../utils.js'\nimport border, { getBorderClipPath } from './border.js'\nimport { genClipPath } from './clip-path.js'\nimport buildMaskImage from './mask-image.js'\n\nexport default async function rect(\n {\n id,\n left,\n top,\n width,\n height,\n isInheritingTransform,\n src,\n debug,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n src?: string\n debug?: boolean\n },\n style: Record,\n inheritableStyle: Record\n) {\n if (style.display === 'none') return ''\n\n const isImage = !!src\n\n let type: 'rect' | 'path' = 'rect'\n let matrix = ''\n let defs = ''\n let fills: string[] = []\n let opacity = 1\n let extra = ''\n\n if (style.backgroundColor) {\n fills.push(style.backgroundColor as string)\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n let backgroundShapes = ''\n if (style.backgroundImage) {\n const backgrounds: string[][] = []\n\n for (\n let index = 0;\n index < (style.backgroundImage as any).length;\n index++\n ) {\n const background = (style.backgroundImage as any)[index]\n const image = await backgroundImage(\n { id: id + '_' + index, width, height, left, top },\n background,\n inheritableStyle\n )\n if (image) {\n // Background images that come first in the array are rendered last.\n backgrounds.unshift(image)\n }\n }\n\n for (const background of backgrounds) {\n fills.push(`url(#${background[0]})`)\n defs += background[1]\n if (background[2]) {\n backgroundShapes += background[2]\n }\n }\n }\n\n const [miId, mi] = await buildMaskImage(\n { id, left, top, width, height },\n style,\n inheritableStyle\n )\n\n defs += mi\n const maskId = miId\n ? `url(#${miId})`\n : style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined\n\n const path = radius(\n { left, top, width, height },\n style as Record\n )\n if (path) {\n type = 'path'\n }\n\n const clipPathId = style._inheritedClipPathId as number | undefined\n\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: 'transparent',\n stroke: '#ff5757',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n const { backgroundClip, filter: cssFilter } = style\n\n const currentClipPath =\n backgroundClip === 'text'\n ? `url(#satori_bct-${id})`\n : clipPathId\n ? `url(#${clipPathId})`\n : style.clipPath\n ? genClipPath(id)\n : undefined\n\n const clip = overflow(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record,\n inheritableStyle\n )\n\n // Each background generates a new rectangle.\n // @TODO: Not sure if this is the best way to do it, maybe with\n // multiple s is better.\n let shape = fills\n .map((fill) =>\n buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': style.transform ? undefined : currentClipPath,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n mask: style.transform ? undefined : maskId,\n })\n )\n .join('')\n\n const borderClip = getBorderClipPath(\n {\n id,\n left,\n top,\n width,\n height,\n currentClipPathId: clipPathId,\n borderPath: path,\n borderType: type,\n },\n style\n )\n\n // border radius for images with transform property\n let imageBorderRadius = undefined\n\n // If it's an image () tag, we add an extra layer of the image itself.\n if (isImage) {\n // We need to subtract the border and padding sizes from the image size.\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n ((style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n ((style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n ((style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n ((style.paddingBottom as number) || 0)\n\n const preserveAspectRatio =\n style.objectFit === 'contain'\n ? 'xMidYMid'\n : style.objectFit === 'cover'\n ? 'xMidYMid slice'\n : 'none'\n\n if (style.transform) {\n imageBorderRadius = getBorderRadiusClipPath(\n {\n id,\n borderRadiusPath: path,\n borderType: type,\n left,\n top,\n width,\n height,\n },\n style\n )\n }\n\n shape += buildXMLString('image', {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n href: src,\n preserveAspectRatio,\n transform: matrix ? matrix : undefined,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n 'clip-path': style.transform\n ? imageBorderRadius\n ? `url(#${imageBorderRadius[1]})`\n : undefined\n : `url(#satori_cp-${id})`,\n mask: style.transform\n ? undefined\n : miId\n ? `url(#${miId})`\n : `url(#satori_om-${id})`,\n })\n }\n\n if (borderClip) {\n defs += borderClip[0]\n const rectClipId = borderClip[1]\n\n shape += border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n // When using `background-clip: text`, we need to draw the extra border because\n // it shouldn't be clipped by the clip path, so we are not using currentClipPath here.\n 'clip-path': `url(#${rectClipId})`,\n },\n },\n style\n )\n }\n\n // box-shadow.\n const shadow = boxShadow(\n {\n width,\n height,\n id,\n opacity,\n shape: buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill: '#fff',\n stroke: '#fff',\n 'stroke-width': 0,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': currentClipPath,\n mask: maskId,\n }),\n },\n style\n )\n\n return (\n (defs ? buildXMLString('defs', {}, defs) : '') +\n (shadow ? shadow[0] : '') +\n (imageBorderRadius ? imageBorderRadius[0] : '') +\n clip +\n (opacity !== 1 ? `` : '') +\n (style.transform && (currentClipPath || maskId)\n ? ``\n : '') +\n (backgroundShapes || shape) +\n (style.transform && (currentClipPath || maskId) ? '' : '') +\n (opacity !== 1 ? `` : '') +\n (shadow ? shadow[1] : '') +\n extra\n )\n}\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","// This function guesses the human language (writing system) of the given\n// JavaScript string, using the Unicode Alias in extended RegExp.\n//\n// You can learn more about this in:\n// - https://en.wikipedia.org/wiki/Script_(Unicode)\n// - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n// - https://unicode.org/reports/tr18/#General_Category_Property\n// - https://tc39.es/ecma262/multipage/text-processing.html#table-unicode-script-values\n\nimport createEmojiRegex from 'emoji-regex'\n\n// Remove the \"g\" flag\nconst emojiRegex = new RegExp(createEmojiRegex(), '')\n\n// Supported languages. The order matters.\n// Usually, this is only for \"special cases\" like CJKV languages as latin\n// characters are usually included in the base font, and can be safely fallback\n// to the Noto Sans font. A list of special cases we want to support can be\n// found here (sort by popularity):\n// - https://fonts.google.com/noto/fonts?sort=popularity¬o.query=sans\n//\n// We can't tell if a hanzi(kanji) is Chinese or Japanese by regular expressions.\n// - https://unicode.org/faq/han_cjk.html\n\nconst specialCode = {\n emoji: emojiRegex,\n symbol: /\\p{Symbol}/u,\n math: /\\p{Math}/u,\n} as const\n\nconst code = {\n 'ja-JP': /\\p{scx=Hira}|\\p{scx=Kana}|\\p{scx=Han}|[\\u3000]|[\\uFF00-\\uFFEF]/u,\n 'ko-KR': /\\p{scx=Hangul}/u,\n 'zh-CN': /\\p{scx=Han}/u,\n 'zh-TW': /\\p{scx=Han}/u,\n 'zh-HK': /\\p{scx=Han}/u,\n 'th-TH': /\\p{scx=Thai}/u,\n 'bn-IN': /\\p{scx=Bengali}/u,\n 'ar-AR': /\\p{scx=Arabic}/u,\n 'ta-IN': /\\p{scx=Tamil}/u,\n 'ml-IN': /\\p{scx=Malayalam}/u,\n 'he-IL': /\\p{scx=Hebrew}/u,\n 'te-IN': /\\p{scx=Telugu}/u,\n devanagari: /\\p{scx=Devanagari}/u,\n kannada: /\\p{scx=Kannada}/u,\n} as const\n\ntype SpecialCodeKey = keyof typeof specialCode\ntype CodeKey = keyof typeof specialCode | keyof typeof code\nexport type Locale = keyof typeof code\nexport type LangCode = CodeKey | 'unknown'\n\nexport const locales = Object.keys({ ...code, ...specialCode }) as Locale[]\nexport function isValidLocale(x: any): x is Locale {\n return locales.includes(x)\n}\n\nexport function detectLanguageCode(\n segment: string,\n locale?: Locale\n): Array | ['unknown'] | [SpecialCodeKey] {\n for (const c of Object.keys(specialCode) as SpecialCodeKey[]) {\n if (specialCode[c].test(segment)) {\n return [c]\n }\n }\n\n const languages = Object.keys(code).filter((lang) =>\n code[lang].test(segment)\n ) as Locale[]\n\n if (languages.length === 0) {\n return ['unknown']\n }\n\n if (locale) {\n const index = languages.findIndex((lang) => lang === locale)\n if (index !== -1) {\n languages.splice(index, 1)\n languages.unshift(locale)\n }\n }\n\n return languages\n}\n\nexport function normalizeLocale(locale?: string): Locale | undefined {\n if (locale) {\n return locales.find((l) => l.toLowerCase().startsWith(locale.toLowerCase()))\n }\n}\n","/**\n * This module is used to calculate the layout of the current sub-tree.\n */\n\nimport type { ReactNode } from 'react'\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from './yoga/index.js'\nimport {\n isReactElement,\n isClass,\n buildXMLString,\n normalizeChildren,\n hasDangerouslySetInnerHTMLProp,\n} from './utils.js'\nimport { SVGNodeToImage } from './handler/preprocess.js'\nimport computeStyle from './handler/compute.js'\nimport FontLoader from './font.js'\nimport buildTextNodes from './text/index.js'\nimport rect from './builder/rect.js'\nimport { Locale, normalizeLocale } from './language.js'\nimport { SerializedStyle } from './handler/expand.js'\n\nexport interface LayoutContext {\n id: string\n parentStyle: SerializedStyle\n inheritedStyle: SerializedStyle\n isInheritingTransform?: boolean\n parent: YogaNode\n font: FontLoader\n embedFont: boolean\n debug?: boolean\n graphemeImages?: Record\n canLoadAdditionalAssets: boolean\n locale?: Locale\n getTwStyles: (tw: string, style: any) => any\n onNodeDetected?: (node: SatoriNode) => void\n}\n\nexport interface SatoriNode {\n // Layout information.\n left: number\n top: number\n width: number\n height: number\n type: string\n key?: string | number\n props: Record\n textContent?: string\n}\n\nexport default async function* layout(\n element: ReactNode,\n context: LayoutContext\n): AsyncGenerator<\n { word: string; locale?: string }[],\n string,\n [number, number]\n> {\n const Yoga = await getYoga()\n const {\n id,\n inheritedStyle,\n parent,\n font,\n debug,\n locale,\n embedFont = true,\n graphemeImages,\n canLoadAdditionalAssets,\n getTwStyles,\n } = context\n\n // 1. Pre-process the node.\n if (element === null || typeof element === 'undefined') {\n yield\n yield\n return ''\n }\n\n // Not a regular element.\n if (!isReactElement(element) || typeof element.type === 'function') {\n let iter: ReturnType\n\n if (!isReactElement(element)) {\n // Process as text node.\n iter = buildTextNodes(String(element), context)\n yield (await iter.next()).value as { word: string; locale?: Locale }[]\n } else {\n if (isClass(element.type as Function)) {\n throw new Error('Class component is not supported.')\n }\n // If it's a custom component, Satori strictly requires it to be pure,\n // stateless, and not relying on any React APIs such as hooks or suspense.\n // So we can safely evaluate it to render. Otherwise, an error will be\n // thrown by React.\n iter = layout((element.type as Function)(element.props), context)\n yield (await iter.next()).value as { word: string; locale?: string }[]\n }\n\n await iter.next()\n const offset = yield\n return (await iter.next(offset)).value as string\n }\n\n // Process as element.\n const { type, props } = element\n if (props && hasDangerouslySetInnerHTMLProp(props)) {\n throw new Error(\n 'dangerouslySetInnerHTML property is not supported. See documentation for more information https://github.com/vercel/satori#jsx.'\n )\n }\n let { style, children, tw, lang: _newLocale = locale } = props || {}\n const newLocale = normalizeLocale(_newLocale)\n\n // Extend Tailwind styles.\n if (tw) {\n const twStyles = getTwStyles(tw, style)\n style = Object.assign(twStyles, style)\n }\n\n const node = Yoga.Node.create()\n parent.insertChild(node, parent.getChildCount())\n\n const [computedStyle, newInheritableStyle] = await computeStyle(\n node,\n type,\n inheritedStyle,\n style,\n props\n )\n // Post-process styles to attach inheritable properties for Satori.\n\n // If the element is inheriting the parent `transform`, or applying its own.\n // This affects the coordinate system.\n const isInheritingTransform =\n computedStyle.transform === inheritedStyle.transform\n if (!isInheritingTransform) {\n ;(computedStyle.transform as any).__parent = inheritedStyle.transform\n }\n\n // If the element has `overflow` set to `hidden` or clip-path is set, we need to create a clip\n // path and use it in all its children.\n if (\n computedStyle.overflow === 'hidden' ||\n (computedStyle.clipPath && computedStyle.clipPath !== 'none')\n ) {\n newInheritableStyle._inheritedClipPathId = `satori_cp-${id}`\n newInheritableStyle._inheritedMaskId = `satori_om-${id}`\n }\n\n if (computedStyle.maskImage) {\n newInheritableStyle._inheritedMaskId = `satori_mi-${id}`\n }\n\n // If the element has `background-clip: text` set, we need to create a clip\n // path and use it in all its children.\n if (computedStyle.backgroundClip === 'text') {\n const mutateRefValue = { value: '' } as any\n newInheritableStyle._inheritedBackgroundClipTextPath = mutateRefValue\n computedStyle._inheritedBackgroundClipTextPath = mutateRefValue\n }\n\n // 2. Do layout recursively for its children.\n const normalizedChildren = normalizeChildren(children)\n const iterators: ReturnType[] = []\n\n let i = 0\n const segmentsMissingFont: { word: string; locale?: string }[] = []\n for (const child of normalizedChildren) {\n const iter = layout(child, {\n id: id + '-' + i++,\n parentStyle: computedStyle,\n inheritedStyle: newInheritableStyle,\n isInheritingTransform: true,\n parent: node,\n font,\n embedFont,\n debug,\n graphemeImages,\n canLoadAdditionalAssets,\n locale: newLocale,\n getTwStyles,\n onNodeDetected: context.onNodeDetected,\n })\n if (canLoadAdditionalAssets) {\n segmentsMissingFont.push(...(((await iter.next()).value as any) || []))\n } else {\n await iter.next()\n }\n iterators.push(iter)\n }\n yield segmentsMissingFont\n for (const iter of iterators) await iter.next()\n\n // 3. Post-process the node.\n const [x, y] = yield\n let { left, top, width, height } = node.getComputedLayout()\n // Attach offset to the current node.\n left += x\n top += y\n\n let childrenRenderResult = ''\n let baseRenderResult = ''\n let depsRenderResult = ''\n\n // Emit event for the current node. We don't pass the children prop to the\n // event handler because everything is already flattened, unless it's a text\n // node.\n const { children: childrenNode, ...restProps } = props\n context.onNodeDetected?.({\n left,\n top,\n width,\n height,\n type,\n props: restProps,\n key: element.key,\n textContent: isReactElement(childrenNode) ? undefined : childrenNode,\n })\n\n // Generate the rendered markup for the current node.\n if (type === 'img') {\n const src = computedStyle.__src as string\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else if (type === 'svg') {\n // When entering a node, we need to convert it to a with the\n // SVG data URL embedded.\n const currentColor = computedStyle.color\n const src = await SVGNodeToImage(element, currentColor)\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else {\n const display = style?.display\n if (\n type === 'div' &&\n children &&\n typeof children !== 'string' &&\n display !== 'flex' &&\n display !== 'none'\n ) {\n throw new Error(\n `Expected
to have explicit \"display: flex\" or \"display: none\" if it has more than one child node.`\n )\n }\n baseRenderResult = await rect(\n { id, left, top, width, height, isInheritingTransform, debug },\n computedStyle,\n newInheritableStyle\n )\n }\n\n // Generate the rendered markup for the children.\n for (const iter of iterators) {\n childrenRenderResult += (await iter.next([left, top])).value\n }\n\n // An extra pass to generate the special background-clip shape collected from\n // children.\n if (computedStyle._inheritedBackgroundClipTextPath) {\n depsRenderResult += buildXMLString(\n 'clipPath',\n {\n id: `satori_bct-${id}`,\n 'clip-path': computedStyle._inheritedClipPathId\n ? `url(#${computedStyle._inheritedClipPathId})`\n : undefined,\n },\n (computedStyle._inheritedBackgroundClipTextPath as any).value\n )\n }\n\n return depsRenderResult + baseRenderResult + childrenRenderResult\n}\n","/**\n * This class handles everything related to fonts.\n */\nimport opentype from '@shuding/opentype.js'\nimport { Locale, locales, isValidLocale } from './language.js'\n\nexport type Weight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\nexport type WeightName = 'normal' | 'bold'\nexport type FontWeight = Weight | WeightName\nexport type FontStyle = 'normal' | 'italic'\nconst SUFFIX_WHEN_LANG_NOT_SET = 'unknown'\n\nexport interface FontOptions {\n data: Buffer | ArrayBuffer\n name: string\n weight?: Weight\n style?: FontStyle\n lang?: string\n}\n\nexport type FontEngine = {\n has: (s: string) => boolean\n baseline: (s?: string, resolvedFont?: any) => number\n height: (s?: string, resolvedFont?: any) => number\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => number\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => string\n}\n\nfunction compareFont(\n weight,\n style,\n [matchedWeight, matchedStyle],\n [nextWeight, nextStyle]\n) {\n if (matchedWeight !== nextWeight) {\n // Put the defined weight first.\n if (!matchedWeight) return 1\n if (!nextWeight) return -1\n\n // Exact match.\n if (matchedWeight === weight) return -1\n if (nextWeight === weight) return 1\n\n // 400 and 500.\n if (weight === 400 && matchedWeight === 500) return -1\n if (weight === 500 && matchedWeight === 400) return -1\n if (weight === 400 && nextWeight === 500) return 1\n if (weight === 500 && nextWeight === 400) return 1\n\n // Less than 400.\n if (weight < 400) {\n if (matchedWeight < weight && nextWeight < weight)\n return nextWeight - matchedWeight\n if (matchedWeight < weight) return -1\n if (nextWeight < weight) return 1\n return matchedWeight - nextWeight\n }\n\n // Greater than 500.\n if (weight < matchedWeight && weight < nextWeight)\n return matchedWeight - nextWeight\n if (weight < matchedWeight) return -1\n if (weight < nextWeight) return 1\n return nextWeight - matchedWeight\n }\n\n if (matchedStyle !== nextStyle) {\n // Exact match.\n if (matchedStyle === style) return -1\n if (nextStyle === style) return 1\n }\n\n return -1\n}\n\nexport default class FontLoader {\n defaultFont: opentype.Font\n fonts = new Map()\n constructor(fontOptions: FontOptions[]) {\n this.addFonts(fontOptions)\n }\n\n // Get font by name and weight.\n private get({\n name,\n weight,\n style,\n }: {\n name: string\n weight: Weight | WeightName\n style: FontStyle\n }) {\n if (!this.fonts.has(name)) {\n return null\n }\n\n if (weight === 'normal') weight = 400\n if (weight === 'bold') weight = 700\n if (typeof weight === 'string')\n weight = Number.parseInt(weight, 10) as Weight\n\n const fonts = [...this.fonts.get(name)]\n\n let matchedFont = fonts[0]\n\n // Fallback to the closest weight and style according to the strategy here:\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#fallback_weights\n for (let i = 1; i < fonts.length; i++) {\n const [, weight1, style1] = matchedFont\n const [, weight2, style2] = fonts[i]\n if (\n compareFont(weight, style, [weight1, style1], [weight2, style2]) > 0\n ) {\n matchedFont = fonts[i]\n }\n }\n\n return matchedFont[0]\n }\n\n public addFonts(fontOptions: FontOptions[]) {\n for (const fontOption of fontOptions) {\n const { name, data, lang } = fontOption\n if (lang && !isValidLocale(lang)) {\n throw new Error(\n `Invalid value for props \\`lang\\`: \"${lang}\". The value must be one of the following: ${locales.join(\n ', '\n )}.`\n )\n }\n const _lang = lang ?? SUFFIX_WHEN_LANG_NOT_SET\n const font = opentype.parse(\n // Buffer to ArrayBuffer.\n 'buffer' in data\n ? data.buffer.slice(\n data.byteOffset,\n data.byteOffset + data.byteLength\n )\n : data,\n // @ts-ignore\n { lowMemory: true }\n )\n\n // Modify the `charToGlyphIndex` method, so we can know which char is\n // being mapped to which glyph.\n const originalCharToGlyphIndex = font.charToGlyphIndex\n font.charToGlyphIndex = (char) => {\n const index = originalCharToGlyphIndex.call(font, char)\n if (index === 0) {\n // The current requested char is missing a glyph.\n if ((font as any)._trackBrokenChars) {\n ;(font as any)._trackBrokenChars.push(char)\n }\n }\n return index\n }\n\n // We use the first font as the default font fallback.\n if (!this.defaultFont) this.defaultFont = font\n\n const _name = `${name.toLowerCase()}_${_lang}`\n\n if (!this.fonts.has(_name)) {\n this.fonts.set(_name, [])\n }\n this.fonts.get(_name).push([font, fontOption.weight, fontOption.style])\n }\n }\n\n public getEngine(\n fontSize = 16,\n lineHeight: number | string = 'normal',\n {\n fontFamily = 'sans-serif',\n fontWeight = 400,\n fontStyle = 'normal',\n }: {\n fontFamily?: string | string[]\n fontWeight?: FontWeight\n fontStyle?: FontStyle\n },\n locale: Locale | undefined\n ): FontEngine {\n if (!this.fonts.size) {\n throw new Error(\n 'No fonts are loaded. At least one font is required to calculate the layout.'\n )\n }\n\n fontFamily = (Array.isArray(fontFamily) ? fontFamily : [fontFamily]).map(\n (name) => name.toLowerCase()\n )\n const fonts = []\n fontFamily.forEach((face) => {\n const getNormal = this.get({\n name: face,\n weight: fontWeight,\n style: fontStyle,\n })\n if (getNormal) {\n fonts.push(getNormal)\n return\n }\n\n const getUnknown = this.get({\n name: face + '_unknown',\n weight: fontWeight,\n style: fontStyle,\n })\n\n if (getUnknown) {\n fonts.push(getUnknown)\n return\n }\n })\n\n // Add additional fonts as the fallback.\n const keys = Array.from(this.fonts.keys())\n const specifiedLangFonts = []\n const nonSpecifiedLangFonts = []\n const additionalFonts = []\n for (const name of keys) {\n if (fontFamily.includes(name)) continue\n if (locale) {\n const lang = getLangFromFontName(name)\n if (lang) {\n if (lang === locale) {\n specifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n } else {\n nonSpecifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n }\n\n const cachedFontResolver = new Map()\n const resolveFont = (word: string, fallback = true) => {\n const _fonts = [\n ...fonts,\n ...additionalFonts,\n ...specifiedLangFonts,\n ...(fallback ? nonSpecifiedLangFonts : []),\n ]\n\n if (typeof word === 'undefined') {\n if (fallback) {\n return _fonts[_fonts.length - 1]\n }\n return undefined\n }\n\n const code = word.charCodeAt(0)\n if (cachedFontResolver.has(code)) return cachedFontResolver.get(code)\n\n const font = _fonts.find((_font, index) => {\n return (\n !!_font.charToGlyphIndex(word) ||\n (fallback && index === _fonts.length - 1)\n )\n })\n\n if (font) {\n cachedFontResolver.set(code, font)\n }\n\n return font\n }\n\n const ascender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _ascender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoAscender : 0) ||\n resolvedFont.ascender\n return (_ascender / resolvedFont.unitsPerEm) * fontSize\n }\n\n const descender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _descender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoDescender : 0) ||\n resolvedFont.descender\n return (_descender / resolvedFont.unitsPerEm) * fontSize\n }\n\n const height = (resolvedFont: opentype.Font, useOS2Table = false) => {\n if ('string' === typeof lineHeight && 'normal' === lineHeight) {\n const _lineGap =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoLineGap : 0) || 0\n return (\n ascender(resolvedFont, useOS2Table) -\n descender(resolvedFont, useOS2Table) +\n (_lineGap / resolvedFont.unitsPerEm) * fontSize\n )\n } else if ('number' === typeof lineHeight) {\n return fontSize * lineHeight\n }\n }\n\n const resolve = (s: string) => {\n return resolveFont(s, false)\n }\n\n const engine = {\n has: (s: string) => {\n if (s === '\\n') return true\n const font = resolve(s)\n if (!font) return false\n ;(font as any)._trackBrokenChars = []\n font.stringToGlyphs(s)\n if (!(font as any)._trackBrokenChars.length) return true\n ;(font as any)._trackBrokenChars = undefined\n return false\n },\n baseline: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n const asc = ascender(resolvedFont)\n const desc = descender(resolvedFont)\n const contentHeight = asc - desc\n\n return asc + (height(resolvedFont) - contentHeight) / 2\n },\n height: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n return height(resolvedFont)\n },\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => {\n return this.measure(resolveFont, s, style)\n },\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => {\n return this.getSVG(resolveFont, s, style)\n },\n }\n\n return engine\n }\n\n private patchFontFallbackResolver(\n font: opentype.Font,\n resolveFont: (word: string, fallback?: boolean) => opentype.Font\n ) {\n const brokenChars = []\n ;(font as any)._trackBrokenChars = brokenChars\n\n const originalStringToGlyphs = font.stringToGlyphs\n font.stringToGlyphs = (s: string, ...args: any) => {\n const glyphs = originalStringToGlyphs.call(font, s, ...args)\n\n for (let i = 0; i < glyphs.length; i++) {\n // Hitting an undefined glyph. We have to try to resolve it from other\n // fonts.\n // @TODO: This affects the kerning resolution but should be fine for now.\n if (glyphs[i].unicode === undefined) {\n const char = brokenChars.shift()\n const anotherFont = resolveFont(char)\n if (anotherFont !== font) {\n const glyph = anotherFont.charToGlyph(char)\n // Scale the glyph to match the current units per em.\n const scale = font.unitsPerEm / anotherFont.unitsPerEm\n const p = new opentype.Path()\n p.unitsPerEm = font.unitsPerEm\n p.commands = glyph.path.commands.map((command) => {\n const scaledCommand = { ...command }\n for (let k in scaledCommand) {\n if (typeof scaledCommand[k] === 'number') {\n scaledCommand[k] *= scale\n }\n }\n return scaledCommand\n })\n const g = new opentype.Glyph({\n ...glyph,\n advanceWidth: glyph.advanceWidth * scale,\n xMin: glyph.xMin * scale,\n xMax: glyph.xMax * scale,\n yMin: glyph.yMin * scale,\n yMax: glyph.yMax * scale,\n path: p,\n })\n\n glyphs[i] = g\n }\n }\n }\n\n return glyphs\n }\n\n return () => {\n font.stringToGlyphs = originalStringToGlyphs\n ;(font as any)._trackBrokenChars = undefined\n }\n }\n\n private measure(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n letterSpacing = 0,\n }: {\n fontSize: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n return font.getAdvanceWidth(content, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n } finally {\n unpatch()\n }\n }\n\n private getSVG(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n top,\n left,\n letterSpacing = 0,\n }: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n if (fontSize === 0) {\n return ''\n }\n return font\n .getPath(content.replace(/\\n/g, ''), left, top, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n .toPathData(1)\n } finally {\n unpatch()\n }\n }\n}\n\nfunction getLangFromFontName(name: string): Locale | undefined {\n const arr = name.split('_')\n const lang = arr[arr.length - 1]\n\n return lang === SUFFIX_WHEN_LANG_NOT_SET ? undefined : (lang as Locale)\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function svg({\n width,\n height,\n content,\n}: {\n width: number\n height: number\n content: string\n}) {\n return buildXMLString(\n 'svg',\n {\n width,\n height,\n viewBox: `0 0 ${width} ${height}`,\n xmlns: 'http://www.w3.org/2000/svg',\n },\n content\n )\n}\n","import resolveConfig from 'tailwindcss/resolveConfig';\nimport Cache from './cache';\nimport ClassParser from './ClassParser';\nimport { parseInputs } from './parse-inputs';\nimport { complete, warn } from './helpers';\nimport { getAddedUtilities } from './plugin';\nimport { removeOpacityHelpers } from './resolve/color';\nexport function create(customConfig, platform) {\n const config = resolveConfig(withContent(customConfig));\n const device = {};\n const pluginUtils = getAddedUtilities(config.plugins);\n const customStringUtils = {};\n const customStyleUtils = Object.entries(pluginUtils)\n .map(([util, style]) => {\n if (typeof style === `string`) {\n // mutating while mapping, i know - bad form, but for performance sake... ¯\\_(ツ)_/¯\n customStringUtils[util] = style;\n return [util, { kind: `null` }];\n }\n return [util, complete(style)];\n })\n .filter(([, ir]) => ir.kind !== `null`);\n function deriveCacheGroup() {\n return ([\n device.windowDimensions ? `w${device.windowDimensions.width}` : false,\n device.windowDimensions ? `h${device.windowDimensions.height}` : false,\n device.fontScale ? `fs${device.fontScale}` : false,\n device.colorScheme === `dark` ? `dark` : false,\n device.pixelDensity === 2 ? `retina` : false,\n ]\n .filter(Boolean)\n .join(`--`) || `default`);\n }\n let cacheGroup = deriveCacheGroup();\n const contextCaches = {};\n function getCache() {\n const existing = contextCaches[cacheGroup];\n if (existing) {\n return existing;\n }\n const cache = new Cache(customStyleUtils);\n contextCaches[cacheGroup] = cache;\n return cache;\n }\n function style(...inputs) {\n const cache = getCache();\n let resolved = {};\n const dependents = [];\n const ordered = [];\n const [utilities, userStyle] = parseInputs(inputs);\n // check if we've seen this full set of classes before\n // if we have a cached copy, we can skip examining each utility\n const joined = utilities.join(` `);\n const cached = cache.getStyle(joined);\n if (cached) {\n return { ...cached, ...(userStyle ? userStyle : {}) };\n }\n for (const utility of utilities) {\n let styleIr = cache.getIr(utility);\n if (!styleIr && utility in customStringUtils) {\n const customStyle = style(customStringUtils[utility]);\n cache.setIr(utility, complete(customStyle));\n resolved = { ...resolved, ...customStyle };\n continue;\n }\n const parser = new ClassParser(utility, config, cache, device, platform);\n styleIr = parser.parse();\n switch (styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...styleIr.style };\n cache.setIr(utility, styleIr);\n break;\n case `dependent`:\n dependents.push(styleIr);\n break;\n case `ordered`:\n ordered.push(styleIr);\n break;\n case `null`:\n cache.setIr(utility, styleIr);\n break;\n }\n }\n if (ordered.length > 0) {\n ordered.sort((a, b) => a.order - b.order);\n for (const orderedStyle of ordered) {\n switch (orderedStyle.styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...orderedStyle.styleIr.style };\n break;\n case `dependent`:\n dependents.push(orderedStyle.styleIr);\n break;\n }\n }\n }\n if (dependents.length > 0) {\n for (const dependent of dependents) {\n const error = dependent.complete(resolved);\n if (error) {\n warn(error);\n }\n }\n removeOpacityHelpers(resolved);\n }\n // cache the full set of classes for future re-renders\n // it's important we cache BEFORE merging in userStyle below\n if (joined !== ``) {\n cache.setStyle(joined, resolved);\n }\n if (userStyle) {\n resolved = { ...resolved, ...userStyle };\n }\n return resolved;\n }\n function color(utils) {\n const styleObj = style(utils\n .split(/\\s+/g)\n .map((util) => util.replace(/^(bg|text|border)-/, ``))\n .map((util) => `bg-${util}`)\n .join(` `));\n return typeof styleObj.backgroundColor === `string`\n ? styleObj.backgroundColor\n : undefined;\n }\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const tailwindFn = (strings, ...values) => {\n let str = ``;\n strings.forEach((string, i) => {\n var _a;\n str += string + ((_a = values[i]) !== null && _a !== void 0 ? _a : ``);\n });\n return style(str);\n };\n tailwindFn.style = style;\n tailwindFn.color = color;\n tailwindFn.prefixMatch = (...prefixes) => {\n const joined = prefixes.sort().join(`:`);\n const cache = getCache();\n const cached = cache.getPrefixMatch(joined);\n if (cached !== undefined) {\n return cached;\n }\n const parser = new ClassParser(`${joined}:flex`, config, cache, device, platform);\n const ir = parser.parse();\n const prefixMatches = ir.kind !== `null`;\n cache.setPrefixMatch(joined, prefixMatches);\n return prefixMatches;\n };\n tailwindFn.setWindowDimensions = (newDimensions) => {\n device.windowDimensions = newDimensions;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setFontScale = (newFontScale) => {\n device.fontScale = newFontScale;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setPixelDensity = (newPixelDensity) => {\n device.pixelDensity = newPixelDensity;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setColorScheme = (newColorScheme) => {\n device.colorScheme = newColorScheme;\n cacheGroup = deriveCacheGroup();\n };\n return tailwindFn;\n}\nexport default create;\nfunction withContent(config) {\n return {\n ...config,\n // prevent warnings from tailwind about not having a `content` prop\n // we don't need one because we have our own jit parser which\n // does not rely on knowing content paths to search\n content: [`_no_warnings_please`],\n };\n}\n","export const PLATFORMS = [`ios`, `android`, `windows`, `macos`, `web`];\nexport function isPlatform(x) {\n return PLATFORMS.includes(x);\n}\nexport const ORIENTATIONS = [`portrait`, `landscape`];\nexport function isOrientation(x) {\n return ORIENTATIONS.includes(x);\n}\nexport var ConfigType;\n(function (ConfigType) {\n ConfigType[\"fontSize\"] = \"fontSize\";\n ConfigType[\"lineHeight\"] = \"lineHeight\";\n})(ConfigType || (ConfigType = {}));\nexport var Unit;\n(function (Unit) {\n Unit[\"rem\"] = \"rem\";\n Unit[\"em\"] = \"em\";\n Unit[\"px\"] = \"px\";\n Unit[\"percent\"] = \"%\";\n Unit[\"vw\"] = \"vw\";\n Unit[\"vh\"] = \"vh\";\n Unit[\"none\"] = \"\";\n})(Unit || (Unit = {}));\nexport function isString(value) {\n return typeof value === `string`;\n}\nexport function isObject(value) {\n return typeof value === `object`;\n}\n","var _a;\nimport { Unit } from './types';\nexport function complete(style) {\n return { kind: `complete`, style };\n}\nexport function parseNumericValue(value, context = {}) {\n const { fractions } = context;\n if (fractions && value.includes(`/`)) {\n const [numerator = ``, denominator = ``] = value.split(`/`, 2);\n const parsedNumerator = parseNumericValue(numerator);\n const parsedDenominator = parseNumericValue(denominator);\n if (!parsedNumerator || !parsedDenominator) {\n return null;\n }\n return [parsedNumerator[0] / parsedDenominator[0], parsedDenominator[1]];\n }\n const number = parseFloat(value);\n if (Number.isNaN(number)) {\n return null;\n }\n const match = value.match(/(([a-z]{2,}|%))$/);\n if (!match) {\n return [number, Unit.none];\n }\n switch (match === null || match === void 0 ? void 0 : match[1]) {\n case `rem`:\n return [number, Unit.rem];\n case `px`:\n return [number, Unit.px];\n case `em`:\n return [number, Unit.em];\n case `%`:\n return [number, Unit.percent];\n case `vw`:\n return [number, Unit.vw];\n case `vh`:\n return [number, Unit.vh];\n default:\n return null;\n }\n}\nexport function getCompleteStyle(prop, value, context = {}) {\n const styleVal = parseStyleVal(value, context);\n return styleVal === null ? null : complete({ [prop]: styleVal });\n}\nexport function mergeStyle(prop, value, style) {\n const styleVal = parseStyleVal(value);\n if (styleVal !== null) {\n style[prop] = styleVal;\n }\n return style;\n}\nexport function getStyle(prop, value) {\n const styleVal = parseStyleVal(value);\n return styleVal === null ? null : { [prop]: styleVal };\n}\nexport function parseStyleVal(value, context = {}) {\n if (value === undefined) {\n return null;\n }\n const parsed = parseNumericValue(String(value), context);\n if (parsed) {\n return toStyleVal(...parsed, context);\n }\n else {\n return null;\n }\n}\nexport function toStyleVal(number, unit, context = {}) {\n const { isNegative, device } = context;\n switch (unit) {\n case Unit.rem:\n return number * 16 * (isNegative ? -1 : 1);\n case Unit.px:\n return number * (isNegative ? -1 : 1);\n case Unit.percent:\n return `${isNegative ? `-` : ``}${number}%`;\n case Unit.none:\n return number * (isNegative ? -1 : 1);\n case Unit.vw:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vw\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.width * (number / 100);\n case Unit.vh:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vh\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.height * (number / 100);\n default:\n return null;\n }\n}\nexport function toPx(value) {\n const parsed = parseNumericValue(value);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n switch (unit) {\n case Unit.rem:\n return number * 16;\n case Unit.px:\n return number;\n default:\n return null;\n }\n}\nconst DIR_MAP = {\n t: `Top`,\n tr: `TopRight`,\n tl: `TopLeft`,\n b: `Bottom`,\n br: `BottomRight`,\n bl: `BottomLeft`,\n l: `Left`,\n r: `Right`,\n x: `Horizontal`,\n y: `Vertical`,\n};\nexport function getDirection(string) {\n return DIR_MAP[string !== null && string !== void 0 ? string : ``] || `All`;\n}\nexport function parseAndConsumeDirection(utilityFragment) {\n let direction = `All`;\n const consumed = utilityFragment.replace(/^-(t|b|r|l|tr|tl|br|bl)(-|$)/, (_, dir) => {\n direction = getDirection(dir);\n return ``;\n });\n return [consumed, direction];\n}\nexport function parseUnconfigged(value, context = {}) {\n if (value.includes(`/`)) {\n const style = unconfiggedStyleVal(value, { ...context, fractions: true });\n if (style)\n return style;\n }\n if (value[0] === `[`) {\n value = value.slice(1, -1);\n }\n return unconfiggedStyleVal(value, context);\n}\nexport function unconfiggedStyle(prop, value, context = {}) {\n const styleVal = parseUnconfigged(value, context);\n if (styleVal === null) {\n return null;\n }\n return complete({ [prop]: styleVal });\n}\nfunction unconfiggedStyleVal(value, context = {}) {\n if (value === `px`) {\n return 1;\n }\n const parsed = parseNumericValue(value, context);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (context.fractions) {\n unit = Unit.percent;\n number *= 100;\n }\n // not sure if this is the right approach, but this allows arbitrary\n // non-bracket numbers, like top-73 and it INFERS the meaning to be\n // tailwind's default scale for spacing, which is 1 = 0.25rem\n if (unit === Unit.none) {\n number = number / 4;\n unit = Unit.rem;\n }\n return toStyleVal(number, unit, context);\n}\nfunction consoleWarn(...args) {\n console.warn(...args);\n}\nfunction noopWarn(..._) {\n // ¯\\_(ツ)_/¯\n}\nexport const warn = typeof process === `undefined` || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.JEST_WORKER_ID) === undefined\n ? consoleWarn\n : noopWarn;\n","import { complete } from './helpers';\nconst defaultStyles = [\n [`aspect-square`, complete({ aspectRatio: 1 })],\n [`aspect-video`, complete({ aspectRatio: 16 / 9 })],\n [`items-center`, complete({ alignItems: `center` })],\n [`items-start`, complete({ alignItems: `flex-start` })],\n [`items-end`, complete({ alignItems: `flex-end` })],\n [`items-baseline`, complete({ alignItems: `baseline` })],\n [`items-stretch`, complete({ alignItems: `stretch` })],\n [`justify-start`, complete({ justifyContent: `flex-start` })],\n [`justify-end`, complete({ justifyContent: `flex-end` })],\n [`justify-center`, complete({ justifyContent: `center` })],\n [`justify-between`, complete({ justifyContent: `space-between` })],\n [`justify-around`, complete({ justifyContent: `space-around` })],\n [`justify-evenly`, complete({ justifyContent: `space-evenly` })],\n [`content-start`, complete({ alignContent: `flex-start` })],\n [`content-end`, complete({ alignContent: `flex-end` })],\n [`content-between`, complete({ alignContent: `space-between` })],\n [`content-around`, complete({ alignContent: `space-around` })],\n [`content-stretch`, complete({ alignContent: `stretch` })],\n [`content-center`, complete({ alignContent: `center` })],\n [`self-auto`, complete({ alignSelf: `auto` })],\n [`self-start`, complete({ alignSelf: `flex-start` })],\n [`self-end`, complete({ alignSelf: `flex-end` })],\n [`self-center`, complete({ alignSelf: `center` })],\n [`self-stretch`, complete({ alignSelf: `stretch` })],\n [`self-baseline`, complete({ alignSelf: `baseline` })],\n [`direction-inherit`, complete({ direction: `inherit` })],\n [`direction-ltr`, complete({ direction: `ltr` })],\n [`direction-rtl`, complete({ direction: `rtl` })],\n [`hidden`, complete({ display: `none` })],\n [`flex`, complete({ display: `flex` })],\n [`flex-row`, complete({ flexDirection: `row` })],\n [`flex-row-reverse`, complete({ flexDirection: `row-reverse` })],\n [`flex-col`, complete({ flexDirection: `column` })],\n [`flex-col-reverse`, complete({ flexDirection: `column-reverse` })],\n [`flex-wrap`, complete({ flexWrap: `wrap` })],\n [`flex-wrap-reverse`, complete({ flexWrap: `wrap-reverse` })],\n [`flex-nowrap`, complete({ flexWrap: `nowrap` })],\n [`flex-auto`, complete({ flexGrow: 1, flexShrink: 1, flexBasis: `auto` })],\n [`flex-initial`, complete({ flexGrow: 0, flexShrink: 1, flexBasis: `auto` })],\n [`flex-none`, complete({ flexGrow: 0, flexShrink: 0, flexBasis: `auto` })],\n [`overflow-hidden`, complete({ overflow: `hidden` })],\n [`overflow-visible`, complete({ overflow: `visible` })],\n [`overflow-scroll`, complete({ overflow: `scroll` })],\n [`absolute`, complete({ position: `absolute` })],\n [`relative`, complete({ position: `relative` })],\n [`italic`, complete({ fontStyle: `italic` })],\n [`not-italic`, complete({ fontStyle: `normal` })],\n [`oldstyle-nums`, fontVariant(`oldstyle-nums`)],\n [`small-caps`, fontVariant(`small-caps`)],\n [`lining-nums`, fontVariant(`lining-nums`)],\n [`tabular-nums`, fontVariant(`tabular-nums`)],\n [`proportional-nums`, fontVariant(`proportional-nums`)],\n [`font-thin`, complete({ fontWeight: `100` })],\n [`font-100`, complete({ fontWeight: `100` })],\n [`font-extralight`, complete({ fontWeight: `200` })],\n [`font-200`, complete({ fontWeight: `200` })],\n [`font-light`, complete({ fontWeight: `300` })],\n [`font-300`, complete({ fontWeight: `300` })],\n [`font-normal`, complete({ fontWeight: `normal` })],\n [`font-400`, complete({ fontWeight: `400` })],\n [`font-medium`, complete({ fontWeight: `500` })],\n [`font-500`, complete({ fontWeight: `500` })],\n [`font-semibold`, complete({ fontWeight: `600` })],\n [`font-600`, complete({ fontWeight: `600` })],\n [`font-bold`, complete({ fontWeight: `bold` })],\n [`font-700`, complete({ fontWeight: `700` })],\n [`font-extrabold`, complete({ fontWeight: `800` })],\n [`font-800`, complete({ fontWeight: `800` })],\n [`font-black`, complete({ fontWeight: `900` })],\n [`font-900`, complete({ fontWeight: `900` })],\n [`include-font-padding`, complete({ includeFontPadding: true })],\n [`remove-font-padding`, complete({ includeFontPadding: false })],\n // not sure if RN supports `max-width: none;`, but this should be equivalent\n [`max-w-none`, complete({ maxWidth: `99999%` })],\n [`text-left`, complete({ textAlign: `left` })],\n [`text-center`, complete({ textAlign: `center` })],\n [`text-right`, complete({ textAlign: `right` })],\n [`text-justify`, complete({ textAlign: `justify` })],\n [`text-auto`, complete({ textAlign: `auto` })],\n [`underline`, complete({ textDecorationLine: `underline` })],\n [`line-through`, complete({ textDecorationLine: `line-through` })],\n [`no-underline`, complete({ textDecorationLine: `none` })],\n [`uppercase`, complete({ textTransform: `uppercase` })],\n [`lowercase`, complete({ textTransform: `lowercase` })],\n [`capitalize`, complete({ textTransform: `capitalize` })],\n [`normal-case`, complete({ textTransform: `none` })],\n [`w-auto`, complete({ width: `auto` })],\n [`h-auto`, complete({ height: `auto` })],\n // default box-shadow implementations\n [\n `shadow-sm`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.025,\n elevation: 1,\n }),\n ],\n [\n `shadow`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.075,\n elevation: 2,\n }),\n ],\n [\n `shadow-md`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 3,\n shadowOpacity: 0.125,\n elevation: 3,\n }),\n ],\n [\n `shadow-lg`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.15,\n shadowRadius: 8,\n elevation: 8,\n }),\n ],\n [\n `shadow-xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.19,\n shadowRadius: 20,\n elevation: 12,\n }),\n ],\n [\n `shadow-2xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.25,\n shadowRadius: 30,\n elevation: 16,\n }),\n ],\n [\n `shadow-none`,\n complete({\n shadowOffset: { width: 0, height: 0 },\n shadowColor: `#000`,\n shadowRadius: 0,\n shadowOpacity: 0,\n elevation: 0,\n }),\n ],\n];\nexport default defaultStyles;\nfunction fontVariant(type) {\n return {\n kind: `dependent`,\n complete(style) {\n if (!style.fontVariant || !Array.isArray(style.fontVariant)) {\n style.fontVariant = [];\n }\n style.fontVariant.push(type);\n },\n };\n}\n","import defaultStyles from './styles';\nexport default class Cache {\n constructor(customStyles) {\n this.ir = new Map(defaultStyles);\n this.styles = new Map();\n this.prefixes = new Map();\n this.ir = new Map([...defaultStyles, ...(customStyles !== null && customStyles !== void 0 ? customStyles : [])]);\n }\n getStyle(key) {\n return this.styles.get(key);\n }\n setStyle(key, style) {\n this.styles.set(key, style);\n }\n getIr(key) {\n return this.ir.get(key);\n }\n setIr(key, ir) {\n this.ir.set(key, ir);\n }\n getPrefixMatch(key) {\n return this.prefixes.get(key);\n }\n setPrefixMatch(key, value) {\n this.prefixes.set(key, value);\n }\n}\n","import { Unit } from '../types';\nimport { getCompleteStyle, complete, getStyle, mergeStyle, parseNumericValue, unconfiggedStyle, } from '../helpers';\nexport default function fontSize(value, config, context = {}) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return unconfiggedStyle(`fontSize`, value, context);\n }\n if (typeof configValue === `string`) {\n return getCompleteStyle(`fontSize`, configValue);\n }\n let style = {};\n const [fontSize, rest] = configValue;\n const fontSizeStyle = getStyle(`fontSize`, fontSize);\n if (fontSizeStyle) {\n style = fontSizeStyle;\n }\n if (typeof rest === `string`) {\n return complete(mergeStyle(`lineHeight`, calculateLineHeight(rest, style), style));\n }\n const { lineHeight, letterSpacing } = rest;\n if (lineHeight) {\n mergeStyle(`lineHeight`, calculateLineHeight(lineHeight, style), style);\n }\n if (letterSpacing) {\n mergeStyle(`letterSpacing`, letterSpacing, style);\n }\n return complete(style);\n}\n// calculates line-height for relative units\nfunction calculateLineHeight(lineHeight, style) {\n const parsed = parseNumericValue(lineHeight);\n if (parsed) {\n const [number, unit] = parsed;\n if ((unit === Unit.none || unit === Unit.em) && typeof style.fontSize === `number`) {\n return style.fontSize * number;\n }\n }\n return lineHeight;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal } from '../helpers';\nexport default function lineHeight(value, config) {\n var _a;\n const parseValue = (_a = config === null || config === void 0 ? void 0 : config[value]) !== null && _a !== void 0 ? _a : (value.startsWith(`[`) ? value.slice(1, -1) : value);\n const parsed = parseNumericValue(parseValue);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.none) {\n // we have a relative line-height like `2` for `leading-loose`\n return {\n kind: `dependent`,\n complete(style) {\n if (typeof style.fontSize !== `number`) {\n return `relative line-height utilities require that font-size be set`;\n }\n style.lineHeight = style.fontSize * number;\n },\n };\n }\n const styleVal = toStyleVal(number, unit);\n return styleVal !== null ? complete({ lineHeight: styleVal }) : null;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, parseUnconfigged, toStyleVal } from '../helpers';\nexport default function spacing(type, direction, isNegative, value, config) {\n let numericValue = ``;\n if (value[0] === `[`) {\n numericValue = value.slice(1, -1);\n }\n else {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n const unconfigged = parseUnconfigged(value);\n if (unconfigged && typeof unconfigged === `number`) {\n return spacingStyle(unconfigged, Unit.px, direction, type);\n }\n return null;\n }\n else {\n numericValue = configValue;\n }\n }\n if (numericValue === `auto`) {\n return expand(direction, type, `auto`);\n }\n const parsed = parseNumericValue(numericValue);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (isNegative) {\n number = -number;\n }\n return spacingStyle(number, unit, direction, type);\n}\nfunction spacingStyle(number, unit, direction, type) {\n const pixels = toStyleVal(number, unit);\n if (pixels === null) {\n return null;\n }\n return expand(direction, type, pixels);\n}\nfunction expand(direction, type, value) {\n switch (direction) {\n case `All`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Right`]: value,\n [`${type}Bottom`]: value,\n [`${type}Left`]: value,\n },\n };\n case `Bottom`:\n case `Top`:\n case `Left`:\n case `Right`:\n return {\n kind: `complete`,\n style: {\n [`${type}${direction}`]: value,\n },\n };\n case `Vertical`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Bottom`]: value,\n },\n };\n case `Horizontal`:\n return {\n kind: `complete`,\n style: {\n [`${type}Left`]: value,\n [`${type}Right`]: value,\n },\n };\n default:\n return null;\n }\n}\n","import { toPx, warn } from './helpers';\nexport default function screens(input) {\n if (!input) {\n return {};\n }\n const screenData = Object.entries(input).reduce((acc, [screen, value]) => {\n const data = [0, Infinity, 0];\n const values = typeof value === `string` ? { min: value } : value;\n const minPx = values.min ? toPx(values.min) : 0;\n if (minPx === null) {\n warn(`invalid screen config value: ${screen}->min: ${values.min}`);\n }\n else {\n data[0] = minPx;\n }\n const maxPx = values.max ? toPx(values.max) : Infinity;\n if (maxPx === null) {\n warn(`invalid screen config value: ${screen}->max: ${values.max}`);\n }\n else {\n data[1] = maxPx;\n }\n acc[screen] = data;\n return acc;\n }, {});\n const values = Object.values(screenData);\n values.sort((a, b) => {\n const [minA, maxA] = a;\n const [minB, maxB] = b;\n if (maxA === Infinity || maxB === Infinity) {\n return minA - minB;\n }\n return maxA - maxB;\n });\n let order = 0;\n values.forEach((value) => (value[2] = order++));\n return screenData;\n}\n","import { complete } from '../helpers';\nexport default function fontFamily(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return null;\n }\n if (typeof configValue === `string`) {\n return complete({ fontFamily: configValue });\n }\n const firstFamily = configValue[0];\n if (!firstFamily) {\n return null;\n }\n return complete({ fontFamily: firstFamily });\n}\n","import { isObject, isString } from '../types';\nimport { warn, complete } from '../helpers';\nexport function color(type, value, config) {\n if (!config) {\n return null;\n }\n // support opacity shorthand: `bg-red-200/50`\n let shorthandOpacity = undefined;\n if (value.includes(`/`)) {\n [value = ``, shorthandOpacity] = value.split(`/`, 2);\n }\n let color = ``;\n // for arbitrary support: `bg-[#eaeaea]`, `text-[rgba(1, 1, 1, 0.5)]`\n if (value.startsWith(`[#`) || value.startsWith(`[rgb`)) {\n color = value.slice(1, -1);\n // search for color in config\n }\n else {\n color = findColorInConfigRecursive(value, config);\n }\n if (!color) {\n return null;\n }\n if (shorthandOpacity) {\n const opacity = Number(shorthandOpacity);\n if (!Number.isNaN(opacity)) {\n color = addOpacity(color, opacity / 100);\n return complete({ [STYLE_PROPS[type].color]: color });\n }\n }\n // return a dependent style to support merging of classes\n // like `bg-red-800 bg-opacity-75`\n return {\n kind: `dependent`,\n complete(style) {\n const opacityProp = STYLE_PROPS[type].opacity;\n const opacity = style[opacityProp];\n if (typeof opacity === `number`) {\n color = addOpacity(color, opacity);\n }\n style[STYLE_PROPS[type].color] = color;\n },\n };\n}\nexport function colorOpacity(type, value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n const opacity = percentage / 100;\n const style = { [STYLE_PROPS[type].opacity]: opacity };\n return { kind: `complete`, style };\n}\nfunction addOpacity(color, opacity) {\n if (color.startsWith(`#`)) {\n color = hexToRgba(color);\n }\n else if (color.startsWith(`rgb(`)) {\n color = color.replace(/^rgb\\(/, `rgba(`).replace(/\\)$/, `, 1)`);\n }\n // @TODO: support hls/hlsa if anyone opens an issue...\n return color.replace(/, ?\\d*\\.?(\\d+)\\)$/, `, ${opacity})`);\n}\nexport function removeOpacityHelpers(style) {\n for (const key in style) {\n if (key.startsWith(`__opacity_`)) {\n delete style[key];\n }\n }\n}\nconst STYLE_PROPS = {\n bg: { opacity: `__opacity_bg`, color: `backgroundColor` },\n text: { opacity: `__opacity_text`, color: `color` },\n border: { opacity: `__opacity_border`, color: `borderColor` },\n borderTop: { opacity: `__opacity_border`, color: `borderTopColor` },\n borderBottom: { opacity: `__opacity_border`, color: `borderBottomColor` },\n borderLeft: { opacity: `__opacity_border`, color: `borderLeftColor` },\n borderRight: { opacity: `__opacity_border`, color: `borderRightColor` },\n shadow: { opacity: `__opacity_shadow`, color: `shadowColor` },\n tint: { opacity: `__opacity_tint`, color: `tintColor` },\n};\nfunction hexToRgba(hex) {\n const orig = hex;\n hex = hex.replace(MATCH_SHORT_HEX, (_, r, g, b) => r + r + g + g + b + b);\n const result = MATCH_FULL_HEX.exec(hex);\n if (!result) {\n warn(`invalid config hex color value: ${orig}`);\n return `rgba(0, 0, 0, 1)`;\n }\n const r = parseInt(result[1], 16);\n const g = parseInt(result[2], 16);\n const b = parseInt(result[3], 16);\n return `rgba(${r}, ${g}, ${b}, 1)`;\n}\nfunction findColorInConfigRecursive(colorName, config) {\n const configColor = config[colorName];\n // the color is found at the current config level\n if (isString(configColor)) {\n return configColor;\n }\n else if (isObject(configColor) && isString(configColor.DEFAULT)) {\n return configColor.DEFAULT;\n }\n // search for a matching sub-string at the current config level\n let [colorNameStart = ``, ...colorNameRest] = colorName.split(`-`);\n while (colorNameStart !== colorName) {\n const subConfig = config[colorNameStart];\n if (isObject(subConfig)) {\n return findColorInConfigRecursive(colorNameRest.join(`-`), subConfig);\n }\n else if (colorNameRest.length === 0) {\n return ``;\n }\n colorNameStart = `${colorNameStart}-${colorNameRest.shift()}`;\n }\n return ``;\n}\nconst MATCH_SHORT_HEX = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\nconst MATCH_FULL_HEX = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n","import { parseAndConsumeDirection, complete, getCompleteStyle, unconfiggedStyle, } from '../helpers';\nimport { color } from './color';\nexport function border(value, theme) {\n let [rest, direction] = parseAndConsumeDirection(value);\n const widthUtilityMatch = rest.match(/^(-?(\\d)+)?$/);\n if (widthUtilityMatch) {\n return borderWidth(rest, direction, theme === null || theme === void 0 ? void 0 : theme.borderWidth);\n }\n rest = rest.replace(/^-/, ``);\n if ([`dashed`, `solid`, `dotted`].includes(rest)) {\n return complete({ borderStyle: rest });\n }\n let colorType = `border`;\n switch (direction) {\n case `Bottom`:\n colorType = `borderBottom`;\n break;\n case `Top`:\n colorType = `borderTop`;\n break;\n case `Left`:\n colorType = `borderLeft`;\n break;\n case `Right`:\n colorType = `borderRight`;\n break;\n }\n const colorStyle = color(colorType, rest, theme === null || theme === void 0 ? void 0 : theme.borderColor);\n if (colorStyle) {\n return colorStyle;\n }\n // Finally Handling Arbitrary Width Case\n // border-[20px] or border-[2.5rem]\n const prop = `border${direction === `All` ? `` : direction}Width`;\n rest = rest.replace(/^-/, ``);\n const numericValue = rest.slice(1, -1);\n const arbitraryWidth = unconfiggedStyle(prop, numericValue);\n // can't use % for border-radius in RN\n if (typeof (arbitraryWidth === null || arbitraryWidth === void 0 ? void 0 : arbitraryWidth.style[prop]) !== `number`) {\n return null;\n }\n return arbitraryWidth;\n}\nfunction borderWidth(value, direction, config) {\n if (!config) {\n return null;\n }\n value = value.replace(/^-/, ``);\n const key = value === `` ? `DEFAULT` : value;\n const configValue = config[key];\n if (configValue === undefined) {\n return null;\n }\n const prop = `border${direction === `All` ? `` : direction}Width`;\n return getCompleteStyle(prop, configValue);\n}\nexport function borderRadius(value, config) {\n if (!config) {\n return null;\n }\n let [rest, direction] = parseAndConsumeDirection(value);\n rest = rest.replace(/^-/, ``);\n if (rest === ``) {\n rest = `DEFAULT`;\n }\n const prop = `border${direction === `All` ? `` : direction}Radius`;\n const configValue = config[rest];\n if (configValue) {\n return expand(getCompleteStyle(prop, configValue));\n }\n const arbitrary = unconfiggedStyle(prop, rest);\n // can't use % for border-radius in RN\n if (typeof (arbitrary === null || arbitrary === void 0 ? void 0 : arbitrary.style[prop]) !== `number`) {\n return null;\n }\n return expand(arbitrary);\n}\n// RN only supports `borderRadius` + `border(top|bottom)(left|right)Radius`\nfunction expand(ir) {\n if ((ir === null || ir === void 0 ? void 0 : ir.kind) !== `complete`)\n return ir;\n const top = ir.style.borderTopRadius;\n if (top !== undefined) {\n ir.style.borderTopLeftRadius = top;\n ir.style.borderTopRightRadius = top;\n delete ir.style.borderTopRadius;\n }\n const bottom = ir.style.borderBottomRadius;\n if (bottom !== undefined) {\n ir.style.borderBottomLeftRadius = bottom;\n ir.style.borderBottomRightRadius = bottom;\n delete ir.style.borderBottomRadius;\n }\n const left = ir.style.borderLeftRadius;\n if (left !== undefined) {\n ir.style.borderBottomLeftRadius = left;\n ir.style.borderTopLeftRadius = left;\n delete ir.style.borderLeftRadius;\n }\n const right = ir.style.borderRightRadius;\n if (right !== undefined) {\n ir.style.borderBottomRightRadius = right;\n ir.style.borderTopRightRadius = right;\n delete ir.style.borderRightRadius;\n }\n return ir;\n}\n","import { complete, parseStyleVal, parseUnconfigged } from '../helpers';\nexport function inset(type, value, isNegative, config) {\n let insetDir = null;\n if (type === `inset`) {\n value = value.replace(/^(x|y)-/, (_, dir) => {\n insetDir = dir === `x` ? `x` : `y`;\n return ``;\n });\n }\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const styleVal = parseStyleVal(configValue, { isNegative });\n if (styleVal !== null) {\n return insetStyle(type, insetDir, styleVal);\n }\n }\n const unconfigged = parseUnconfigged(value, { isNegative });\n if (unconfigged !== null) {\n return insetStyle(type, insetDir, unconfigged);\n }\n return null;\n}\nfunction insetStyle(type, dir, styleVal) {\n if (type !== `inset`) {\n return complete({ [type]: styleVal });\n }\n switch (dir) {\n case null:\n return complete({\n top: styleVal,\n left: styleVal,\n right: styleVal,\n bottom: styleVal,\n });\n case `y`:\n return complete({\n top: styleVal,\n bottom: styleVal,\n });\n case `x`:\n return complete({\n left: styleVal,\n right: styleVal,\n });\n }\n}\n","import { complete, parseStyleVal } from '../helpers';\nexport function flexGrowShrink(type, value, config) {\n var _a;\n value = value.replace(/^-/, ``);\n const configKey = value === `` ? `DEFAULT` : value;\n const numericValue = Number((_a = config === null || config === void 0 ? void 0 : config[configKey]) !== null && _a !== void 0 ? _a : value);\n if (!Number.isNaN(numericValue)) {\n return complete({ [`flex${type}`]: numericValue });\n }\n return null;\n}\nexport function flex(value, config) {\n var _a, _b;\n value = (config === null || config === void 0 ? void 0 : config[value]) || value;\n if ([`min-content`, `revert`, `unset`].includes(value)) {\n // unsupported\n return null;\n }\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n // MDN: One value, unitless number: flex-grow flex-basis is then equal to 0.\n if (value.match(/^\\d+(\\.\\d+)?$/)) {\n return complete({\n flexGrow: Number(value),\n flexBasis: `0%`,\n });\n }\n // MDN: Two values (both integers): flex-grow | flex-basis\n let match = value.match(/^(\\d+)\\s+(\\d+)$/);\n if (match) {\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n });\n }\n // MDN: Two values: flex-grow | flex-basis\n match = value.match(/^(\\d+)\\s+([^ ]+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_a = match[2]) !== null && _a !== void 0 ? _a : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexBasis,\n });\n }\n // MDN: Three values: flex-grow | flex-shrink | flex-basis\n match = value.match(/^(\\d+)\\s+(\\d+)\\s+(.+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_b = match[3]) !== null && _b !== void 0 ? _b : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n flexBasis,\n });\n }\n return null;\n}\n","import { getCompleteStyle, complete, parseStyleVal, unconfiggedStyle } from '../helpers';\nexport function widthHeight(type, value, context = {}, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue !== undefined) {\n return getCompleteStyle(type, configValue, context);\n }\n return unconfiggedStyle(type, value, context);\n}\nexport function minMaxWidthHeight(type, value, context = {}, config) {\n const styleVal = parseStyleVal(config === null || config === void 0 ? void 0 : config[value], context);\n if (styleVal) {\n return complete({ [type]: styleVal });\n }\n if (value === `screen`) {\n value = type.includes(`Width`) ? `100vw` : `100vh`;\n }\n return unconfiggedStyle(type, value, context);\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal, unconfiggedStyle, warn, } from '../helpers';\nexport function letterSpacing(value, isNegative, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsed = parseNumericValue(configValue, { isNegative });\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.em) {\n return relativeLetterSpacing(number);\n }\n // @TODO, if we get a percentage based config value, theoretically we could\n // make a font-size dependent style as well, wait for someone to raise an issue\n if (unit === Unit.percent) {\n warn(`percentage-based letter-spacing configuration currently unsupported, switch to \\`em\\`s, or open an issue if you'd like to see support added.`);\n return null;\n }\n const styleVal = toStyleVal(number, unit, { isNegative });\n if (styleVal !== null) {\n return complete({ letterSpacing: styleVal });\n }\n return null;\n }\n return unconfiggedStyle(`letterSpacing`, value, { isNegative });\n}\nfunction relativeLetterSpacing(ems) {\n return {\n kind: `dependent`,\n complete(style) {\n const fontSize = style.fontSize;\n if (typeof fontSize !== `number` || Number.isNaN(fontSize)) {\n return `tracking-X relative letter spacing classes require font-size to be set`;\n }\n style.letterSpacing = Math.round((ems * fontSize + Number.EPSILON) * 100) / 100;\n },\n };\n}\n","import { parseNumericValue, complete } from '../helpers';\nexport function opacity(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsedConfig = parseNumericValue(String(configValue));\n if (parsedConfig) {\n return complete({ opacity: parsedConfig[0] });\n }\n }\n const parsedArbitrary = parseNumericValue(value);\n if (parsedArbitrary) {\n return complete({ opacity: parsedArbitrary[0] / 100 });\n }\n return null;\n}\n","import { parseUnconfigged } from '../helpers';\nexport function shadowOpacity(value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n return {\n kind: `complete`,\n style: { shadowOpacity: percentage / 100 },\n };\n}\nexport function shadowOffset(value) {\n if (value.includes(`/`)) {\n const [widthStr = ``, heightStr = ``] = value.split(`/`, 2);\n const width = offsetValue(widthStr);\n const height = offsetValue(heightStr);\n if (width === null || height === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width,\n height,\n },\n },\n };\n }\n const number = offsetValue(value);\n if (number === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width: number,\n height: number,\n },\n },\n };\n}\nfunction offsetValue(value) {\n const parsed = parseUnconfigged(value);\n return typeof parsed === `number` ? parsed : null;\n}\n","import fontSize from './resolve/font-size';\nimport lineHeight from './resolve/line-height';\nimport spacing from './resolve/spacing';\nimport screens from './screens';\nimport { isOrientation, isPlatform, } from './types';\nimport fontFamily from './resolve/font-family';\nimport { color, colorOpacity } from './resolve/color';\nimport { border, borderRadius } from './resolve/borders';\nimport { getCompleteStyle, getDirection, unconfiggedStyle, warn, complete, parseNumericValue, } from './helpers';\nimport { inset } from './resolve/inset';\nimport { flexGrowShrink, flex } from './resolve/flex';\nimport { widthHeight, minMaxWidthHeight } from './resolve/width-height';\nimport { letterSpacing } from './resolve/letter-spacing';\nimport { opacity } from './resolve/opacity';\nimport { shadowOpacity, shadowOffset } from './resolve/shadow';\nexport default class ClassParser {\n constructor(input, config = {}, cache, device, platform) {\n var _a, _b, _c, _d, _e, _f;\n this.config = config;\n this.cache = cache;\n this.position = 0;\n this.isNull = false;\n this.isNegative = false;\n this.context = {};\n this.context.device = device;\n const parts = input.trim().split(`:`);\n let prefixes = [];\n if (parts.length === 1) {\n this.string = input;\n }\n else {\n this.string = (_a = parts.pop()) !== null && _a !== void 0 ? _a : ``;\n prefixes = parts;\n }\n this.char = this.string[0];\n const widthBreakpoints = screens((_b = this.config.theme) === null || _b === void 0 ? void 0 : _b.screens);\n // loop through the prefixes ONE time, extracting useful info\n for (const prefix of prefixes) {\n if (widthBreakpoints[prefix]) {\n const breakpointOrder = (_c = widthBreakpoints[prefix]) === null || _c === void 0 ? void 0 : _c[2];\n if (breakpointOrder !== undefined) {\n this.order = ((_d = this.order) !== null && _d !== void 0 ? _d : 0) + breakpointOrder;\n }\n const windowWidth = (_e = device.windowDimensions) === null || _e === void 0 ? void 0 : _e.width;\n if (windowWidth) {\n const [min, max] = (_f = widthBreakpoints[prefix]) !== null && _f !== void 0 ? _f : [0, 0];\n if (windowWidth <= min || windowWidth > max) {\n // breakpoint does not match\n this.isNull = true;\n }\n }\n else {\n this.isNull = true;\n }\n }\n else if (isPlatform(prefix)) {\n this.isNull = prefix !== platform;\n }\n else if (isOrientation(prefix)) {\n if (!device.windowDimensions) {\n this.isNull = true;\n }\n else {\n const deviceOrientation = device.windowDimensions.width > device.windowDimensions.height\n ? `landscape`\n : `portrait`;\n if (deviceOrientation !== prefix) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n }\n else if (prefix === `retina`) {\n if (device.pixelDensity === 2) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n }\n else if (prefix === `dark`) {\n if (device.colorScheme !== `dark`) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n else if (!this.handlePossibleArbitraryBreakpointPrefix(prefix)) {\n this.isNull = true;\n }\n }\n }\n parse() {\n if (this.isNull) {\n return { kind: `null` };\n }\n // resolve things like ios:hidden, after prefix removed\n const cached = this.cache.getIr(this.rest);\n if (cached) {\n return cached;\n }\n this.parseIsNegative();\n const ir = this.parseUtility();\n if (!ir) {\n return { kind: `null` };\n }\n if (this.order !== undefined) {\n return { kind: `ordered`, order: this.order, styleIr: ir };\n }\n return ir;\n }\n parseUtility() {\n var _a, _b, _c, _d, _e;\n const theme = this.config.theme;\n let style = null;\n switch (this.char) {\n case `m`:\n case `p`: {\n const match = this.peekSlice(1, 3).match(/^(t|b|r|l|x|y)?-/);\n if (match) {\n const prop = this.char === `m` ? `margin` : `padding`;\n this.advance(((_b = (_a = match[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + 1);\n const spacingDirection = getDirection(match[1]);\n const style = spacing(prop, spacingDirection, this.isNegative, this.rest, (_c = this.config.theme) === null || _c === void 0 ? void 0 : _c[prop]);\n if (style)\n return style;\n }\n }\n }\n if (this.consumePeeked(`h-`)) {\n style = widthHeight(`height`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.height);\n if (style)\n return style;\n }\n if (this.consumePeeked(`w-`)) {\n style = widthHeight(`width`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.width);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-w-`)) {\n style = minMaxWidthHeight(`minWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-h-`)) {\n style = minMaxWidthHeight(`minHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-w-`)) {\n style = minMaxWidthHeight(`maxWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-h-`)) {\n style = minMaxWidthHeight(`maxHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`leading-`)) {\n style = lineHeight(this.rest, theme === null || theme === void 0 ? void 0 : theme.lineHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`text-`)) {\n style = fontSize(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontSize, this.context);\n if (style)\n return style;\n style = color(`text`, this.rest, theme === null || theme === void 0 ? void 0 : theme.textColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`text`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`font-`)) {\n style = fontFamily(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontFamily);\n if (style)\n return style;\n }\n if (this.consumePeeked(`aspect-`)) {\n if (this.consumePeeked(`ratio-`)) {\n warn(`\\`aspect-ratio-{ratio}\\` is deprecated, use \\`aspect-{ratio}\\` instead`);\n }\n style = getCompleteStyle(`aspectRatio`, this.rest, { fractions: true });\n if (style)\n return style;\n }\n if (this.consumePeeked(`tint-`)) {\n style = color(`tint`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bg-`)) {\n style = color(`bg`, this.rest, theme === null || theme === void 0 ? void 0 : theme.backgroundColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`bg`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`border`)) {\n style = border(this.rest, theme);\n if (style)\n return style;\n if (this.consumePeeked(`-opacity-`)) {\n style = colorOpacity(`border`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`rounded`)) {\n style = borderRadius(this.rest, theme === null || theme === void 0 ? void 0 : theme.borderRadius);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bottom-`)) {\n style = inset(`bottom`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`top-`)) {\n style = inset(`top`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`left-`)) {\n style = inset(`left`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`right-`)) {\n style = inset(`right`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`inset-`)) {\n style = inset(`inset`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`flex-`)) {\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n }\n else if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n }\n else {\n style = flex(this.rest, theme === null || theme === void 0 ? void 0 : theme.flex);\n }\n if (style)\n return style;\n }\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-color-opacity-`)) {\n style = colorOpacity(`shadow`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-opacity-`)) {\n style = shadowOpacity(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-offset-`)) {\n style = shadowOffset(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-radius-`)) {\n style = unconfiggedStyle(`shadowRadius`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-`)) {\n style = color(`shadow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`elevation-`)) {\n const elevation = parseInt(this.rest, 10);\n if (!Number.isNaN(elevation)) {\n return complete({ elevation });\n }\n }\n if (this.consumePeeked(`opacity-`)) {\n style = opacity(this.rest, theme === null || theme === void 0 ? void 0 : theme.opacity);\n if (style)\n return style;\n }\n if (this.consumePeeked(`tracking-`)) {\n style = letterSpacing(this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.letterSpacing);\n if (style)\n return style;\n }\n if (this.consumePeeked(`z-`)) {\n const zIndex = Number((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.zIndex) === null || _d === void 0 ? void 0 : _d[this.rest]) !== null && _e !== void 0 ? _e : this.rest);\n if (!Number.isNaN(zIndex)) {\n return complete({ zIndex });\n }\n }\n warn(`\\`${this.rest}\\` unknown or invalid utility`);\n return null;\n }\n handlePossibleArbitraryBreakpointPrefix(prefix) {\n var _a;\n // save the expense of running the regex with a quick sniff test\n if (prefix[0] !== `m`)\n return false;\n const match = prefix.match(/^(min|max)-(w|h)-\\[([^\\]]+)\\]$/);\n if (!match)\n return false;\n if (!((_a = this.context.device) === null || _a === void 0 ? void 0 : _a.windowDimensions)) {\n this.isNull = true;\n return true;\n }\n const windowDims = this.context.device.windowDimensions;\n const [, type = ``, dir = ``, amount = ``] = match;\n const checkDimension = dir === `w` ? windowDims.width : windowDims.height;\n const parsedAmount = parseNumericValue(amount, this.context);\n if (parsedAmount === null) {\n this.isNull = true;\n return true;\n }\n const [bound, unit] = parsedAmount;\n if (unit !== `px`) {\n this.isNull = true;\n }\n if (type === `min` ? checkDimension >= bound : checkDimension <= bound) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n return true;\n }\n advance(amount = 1) {\n this.position += amount;\n this.char = this.string[this.position];\n }\n get rest() {\n return this.peekSlice(0, this.string.length);\n }\n peekSlice(begin, end) {\n return this.string.slice(this.position + begin, this.position + end);\n }\n consumePeeked(string) {\n if (this.peekSlice(0, string.length) === string) {\n this.advance(string.length);\n return true;\n }\n return false;\n }\n parseIsNegative() {\n if (this.char === `-`) {\n this.advance();\n this.isNegative = true;\n this.context.isNegative = true;\n }\n }\n incrementOrder() {\n var _a;\n this.order = ((_a = this.order) !== null && _a !== void 0 ? _a : 0) + 1;\n }\n}\n","export function parseInputs(inputs) {\n let classNames = [];\n let styles = null;\n inputs.forEach((input) => {\n if (typeof input === `string`) {\n classNames = [...classNames, ...split(input)];\n }\n else if (Array.isArray(input)) {\n classNames = [...classNames, ...input.flatMap(split)];\n }\n else if (typeof input === `object` && input !== null) {\n for (const [key, value] of Object.entries(input)) {\n if (typeof value === `boolean`) {\n classNames = [...classNames, ...(value ? split(key) : [])];\n }\n else if (styles) {\n styles[key] = value;\n }\n else {\n styles = { [key]: value };\n }\n }\n }\n });\n return [classNames.filter(Boolean).filter(unique), styles];\n}\nfunction split(str) {\n return str.trim().split(/\\s+/);\n}\nfunction unique(className, index, classes) {\n return classes.indexOf(className) === index;\n}\n","const plugin = (handler) => {\n return { handler, config: undefined };\n};\nexport default plugin;\nexport function getAddedUtilities(plugins) {\n var _a;\n return ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.reduce((utils, plugin) => ({ ...utils, ...callPluginFunction(plugin.handler) }), {})) !== null && _a !== void 0 ? _a : {});\n}\nfunction callPluginFunction(pluginFn) {\n let added = {};\n pluginFn({\n addUtilities: (utilities) => {\n added = utilities;\n },\n ...core,\n });\n return added;\n}\nfunction notImplemented(fn) {\n throw new Error(`tailwindcss plugin function argument object prop \"${fn}\" not implemented`);\n}\nconst core = {\n addComponents: notImplemented,\n addBase: notImplemented,\n addVariant: notImplemented,\n e: notImplemented,\n prefix: notImplemented,\n theme: notImplemented,\n variants: notImplemented,\n config: notImplemented,\n corePlugins: notImplemented,\n matchUtilities: notImplemented,\n postcss: null,\n};\n","import type { TwConfig } from 'twrnc'\n\nimport * as twrnc from 'twrnc/create'\n\ntype TwPlugin = TwConfig['plugins'][number]\n\nconst defaultShadows: TwPlugin = {\n handler: ({ addUtilities }) => {\n const presets = {\n 'shadow-sm': { boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n shadow: {\n boxShadow:\n '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n },\n 'shadow-md': {\n boxShadow:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n },\n 'shadow-lg': {\n boxShadow:\n '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n 'shadow-xl': {\n boxShadow:\n '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n },\n 'shadow-2xl': {\n boxShadow: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n },\n 'shadow-inner': {\n boxShadow: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n },\n 'shadow-none': { boxShadow: '0 0 #0000' },\n }\n\n addUtilities(presets)\n },\n}\n\nfunction createTw(config?: TwConfig) {\n return twrnc.create(\n {\n ...config,\n plugins: [...(config?.plugins ?? []), defaultShadows],\n },\n 'web'\n )\n}\n\nlet tw\nexport default function getTw({\n width,\n height,\n config,\n}: {\n width: number\n height: number\n config?: TwConfig\n}) {\n if (!tw) {\n tw = createTw(config)\n }\n tw.setWindowDimensions({ width: +width, height: +height })\n return tw\n}\n","import type { ReactNode } from 'react'\nimport type { TwConfig } from 'twrnc'\nimport type { SatoriNode } from './layout.js'\n\nimport getYoga, { init } from './yoga/index.js'\nimport layout from './layout.js'\nimport FontLoader, { FontOptions } from './font.js'\nimport svg from './builder/svg.js'\nimport { segment } from './utils.js'\nimport { detectLanguageCode, LangCode, Locale } from './language.js'\nimport getTw from './handler/tailwind.js'\nimport { preProcessNode } from './handler/preprocess.js'\nimport { cache, inflightRequests } from './handler/image.js'\n\n// We don't need to initialize the opentype instances every time.\nconst fontCache = new WeakMap()\n\nexport type SatoriOptions = (\n | {\n width: number\n height: number\n }\n | {\n width: number\n }\n | {\n height: number\n }\n) & {\n fonts: FontOptions[]\n embedFont?: boolean\n debug?: boolean\n graphemeImages?: Record\n loadAdditionalAsset?: (\n languageCode: string,\n segment: string\n ) => Promise>\n tailwindConfig?: TwConfig\n onNodeDetected?: (node: SatoriNode) => void\n}\nexport type { SatoriNode }\n\nexport { init }\n\nexport default async function satori(\n element: ReactNode,\n options: SatoriOptions\n): Promise {\n const Yoga = await getYoga()\n if (!Yoga || !Yoga.Node) {\n throw new Error(\n 'Satori is not initialized: expect `yoga` to be loaded, got ' + Yoga\n )\n }\n options.fonts = options.fonts || []\n\n let font: FontLoader\n if (fontCache.has(options.fonts)) {\n font = fontCache.get(options.fonts)\n } else {\n fontCache.set(options.fonts, (font = new FontLoader(options.fonts)))\n }\n\n const definedWidth = 'width' in options ? options.width : undefined\n const definedHeight = 'height' in options ? options.height : undefined\n\n const root = Yoga.Node.create()\n if (definedWidth) root.setWidth(definedWidth)\n if (definedHeight) root.setHeight(definedHeight)\n root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW)\n root.setFlexWrap(Yoga.WRAP_WRAP)\n root.setAlignContent(Yoga.ALIGN_AUTO)\n root.setAlignItems(Yoga.ALIGN_FLEX_START)\n root.setJustifyContent(Yoga.JUSTIFY_FLEX_START)\n root.setOverflow(Yoga.OVERFLOW_HIDDEN)\n\n const graphemeImages = { ...options.graphemeImages }\n // Some Chinese characters have different glyphs in Chinese and\n // Japanese, but their Unicode is the same. If the user needs to display\n // the Chinese and Japanese characters simultaneously correctly, the user\n // needs to download the Chinese and Japanese fonts, respectively.\n // Assuming that the user has downloaded the corresponding Japanese font,\n // to let the program realize that the font has not been downloaded in Chinese,\n // we need to prohibit Japanese as the fallback when executing `engine.has`.\n //\n // This causes a problem. Consider a scenario where we need to display Chinese\n // correctly under tags with `lang=\"ja\"` set. `engine.has` will repeatedly treat\n // the Chinese as missing font because we have removed the Chinese as a fallback.\n // To address this situation, we may need to add `processedWordsMissingFont`\n const processedWordsMissingFonts = new Set()\n\n cache.clear()\n inflightRequests.clear()\n await preProcessNode(element)\n\n const handler = layout(element, {\n id: 'id',\n parentStyle: {},\n inheritedStyle: {\n fontSize: 16,\n fontWeight: 'normal',\n fontFamily: 'serif',\n fontStyle: 'normal',\n lineHeight: 'normal',\n color: 'black',\n opacity: 1,\n whiteSpace: 'normal',\n\n // Special style properties:\n _viewportWidth: definedWidth,\n _viewportHeight: definedHeight,\n },\n parent: root,\n font,\n embedFont: options.embedFont,\n debug: options.debug,\n graphemeImages,\n canLoadAdditionalAssets: !!options.loadAdditionalAsset,\n onNodeDetected: options.onNodeDetected,\n getTwStyles: (tw, style) => {\n const twToStyles = getTw({\n width: definedWidth,\n height: definedHeight,\n config: options.tailwindConfig,\n })\n const twStyles = { ...twToStyles([tw] as any) }\n if (typeof twStyles.lineHeight === 'number') {\n twStyles.lineHeight =\n twStyles.lineHeight / (+twStyles.fontSize || style.fontSize || 16)\n }\n if (twStyles.shadowColor && twStyles.boxShadow) {\n twStyles.boxShadow = (twStyles.boxShadow as string).replace(\n /rgba?\\([^)]+\\)/,\n twStyles.shadowColor as string\n )\n }\n return twStyles\n },\n })\n\n const segmentsMissingFont = (await handler.next()).value as {\n word: string\n locale?: Locale\n }[]\n\n if (options.loadAdditionalAsset) {\n if (segmentsMissingFont.length) {\n const languageCodes = convertToLanguageCodes(segmentsMissingFont)\n const fonts: FontOptions[] = []\n const images: Record = {}\n\n await Promise.all(\n Object.entries(languageCodes).flatMap(([code, segments]) =>\n segments.map((_segment) => {\n const key = `${code}_${_segment}`\n if (processedWordsMissingFonts.has(key)) {\n return null\n }\n processedWordsMissingFonts.add(key)\n\n return options\n .loadAdditionalAsset(code, _segment)\n .then((asset: any) => {\n if (typeof asset === 'string') {\n images[_segment] = asset\n } else if (asset) {\n if (Array.isArray(asset)) {\n fonts.push(...asset)\n } else {\n fonts.push(asset)\n }\n }\n })\n })\n )\n )\n\n // Directly mutate the font provider and the grapheme map.\n font.addFonts(fonts)\n Object.assign(graphemeImages, images)\n }\n }\n\n await handler.next()\n root.calculateLayout(definedWidth, definedHeight, Yoga.DIRECTION_LTR)\n\n const content = (await handler.next([0, 0])).value as string\n\n const computedWidth = root.getComputedWidth()\n const computedHeight = root.getComputedHeight()\n\n root.freeRecursive()\n\n return svg({ width: computedWidth, height: computedHeight, content })\n}\n\nfunction convertToLanguageCodes(\n segmentsMissingFont: { word: string; locale?: Locale }[]\n): Partial> {\n const languageCodes = {}\n let wordsByCode = {}\n\n for (const { word, locale } of segmentsMissingFont) {\n const code = detectLanguageCode(word, locale).join('|')\n wordsByCode[code] = wordsByCode[code] || ''\n wordsByCode[code] += word\n }\n\n Object.keys(wordsByCode).forEach((code: LangCode) => {\n languageCodes[code] = languageCodes[code] || []\n if (code === 'emoji') {\n languageCodes[code].push(\n ...unique(segment(wordsByCode[code], 'grapheme'))\n )\n } else {\n languageCodes[code][0] = languageCodes[code][0] || ''\n languageCodes[code][0] += unique(\n segment(\n wordsByCode[code],\n 'grapheme',\n code === 'unknown' ? undefined : code\n )\n ).join('')\n }\n })\n\n return languageCodes\n}\n\nfunction unique(arr: T[]): T[] {\n return Array.from(new Set(arr))\n}\n","import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport type { Readable } from \"node:stream\";\nimport { styleText } from \"node:util\";\nimport satori, { type FontWeight, type SatoriOptions } from \"satori\";\nimport sharp from \"sharp\";\nimport readingTime from \"reading-time\";\nimport type {\n QuartzEmitterPlugin,\n BuildCtx,\n FilePath,\n FullSlug,\n GlobalConfiguration,\n} from \"@quartz-community/types\";\nimport { joinSegments } from \"@quartz-community/types\";\nimport { unescapeHTML } from \"@quartz-community/utils\";\nimport type { JSX } from \"preact\";\nimport { type ThemeKey } from \"@quartz-community/types\";\nimport { getIconCode } from \"@quartz-community/utils/emoji\";\nimport { type FontSpecification, type Theme, getFontSpecificationName } from \"./theme.js\";\nimport { loadEmoji } from \"./emoji.js\";\n\nconst QUARTZ = \"quartz\";\n\ntype Frontmatter = {\n title?: string;\n description?: string;\n socialDescription?: string;\n socialImage?: string;\n tags?: string[];\n} & Record;\n\ntype QuartzPluginData = {\n slug?: FullSlug;\n frontmatter?: Frontmatter;\n description?: string;\n text?: string;\n filePath?: string;\n dates?: Record;\n};\n\nconst defaultHeaderWeight = [700];\nconst defaultBodyWeight = [400];\n\nconst write = async (args: {\n ctx: BuildCtx;\n content: string | Buffer | Readable;\n slug: FullSlug;\n ext: string;\n}): Promise => {\n const pathToPage = joinSegments(args.ctx.argv.output, args.slug + args.ext) as FilePath;\n const dir = path.dirname(pathToPage);\n await fs.mkdir(dir, { recursive: true });\n await fs.writeFile(pathToPage, args.content);\n return pathToPage;\n};\n\nfunction getFileExtension(path: string): string | undefined {\n return path.match(/\\.([^./?#]+)(?:[?#]|$)/)?.[1];\n}\n\nfunction isAbsoluteURL(url: string): boolean {\n return /^https?:\\/\\//.test(url);\n}\n\nfunction getDate(cfg: GlobalConfiguration, data: Record): Date | undefined {\n return (data.dates as Record | undefined)?.[cfg.defaultDateType ?? \"modified\"];\n}\n\nfunction formatDate(d: Date, locale: string = \"en-US\"): string {\n return d.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n });\n}\n\nexport async function getSatoriFonts(headerFont: FontSpecification, bodyFont: FontSpecification) {\n const headerWeights: FontWeight[] = (\n typeof headerFont === \"string\"\n ? defaultHeaderWeight\n : (headerFont.weights ?? defaultHeaderWeight)\n ) as FontWeight[];\n const bodyWeights: FontWeight[] = (\n typeof bodyFont === \"string\" ? defaultBodyWeight : (bodyFont.weights ?? defaultBodyWeight)\n ) as FontWeight[];\n\n const headerFontName = typeof headerFont === \"string\" ? headerFont : headerFont.name;\n const bodyFontName = typeof bodyFont === \"string\" ? bodyFont : bodyFont.name;\n\n const headerFontPromises = headerWeights.map(async (weight) => {\n const data = await fetchTtf(headerFontName, weight);\n if (!data) return null;\n return {\n name: headerFontName,\n data,\n weight,\n style: \"normal\" as const,\n };\n });\n\n const bodyFontPromises = bodyWeights.map(async (weight) => {\n const data = await fetchTtf(bodyFontName, weight);\n if (!data) return null;\n return {\n name: bodyFontName,\n data,\n weight,\n style: \"normal\" as const,\n };\n });\n\n const [headerFonts, bodyFonts] = await Promise.all([\n Promise.all(headerFontPromises),\n Promise.all(bodyFontPromises),\n ]);\n\n const fonts: SatoriOptions[\"fonts\"] = [\n ...headerFonts.filter((font): font is NonNullable => font !== null),\n ...bodyFonts.filter((font): font is NonNullable => font !== null),\n ];\n\n return fonts;\n}\n\nexport async function fetchTtf(\n rawFontName: string,\n weight: FontWeight,\n): Promise {\n const fontName = rawFontName.replaceAll(\" \", \"+\");\n const cacheKey = `${fontName}-${weight}`;\n const cacheDir = path.join(QUARTZ, \".quartz-cache\", \"fonts\");\n const cachePath = path.join(cacheDir, cacheKey);\n\n try {\n await fs.access(cachePath);\n return fs.readFile(cachePath);\n } catch {\n /* file not cached, will fetch below */\n }\n\n const cssResponse = await fetch(\n `https://fonts.googleapis.com/css2?family=${fontName}:wght@${weight}`,\n );\n const css = await cssResponse.text();\n\n const urlRegex = /url\\((https:\\/\\/fonts.gstatic.com\\/s\\/.*?.ttf)\\)/g;\n const match = urlRegex.exec(css);\n\n if (!match) {\n console.log(\n styleText(\n \"yellow\",\n `\\nWarning: Failed to fetch font ${rawFontName} with weight ${weight}, got ${cssResponse.statusText}`,\n ),\n );\n return;\n }\n\n const fontUrl = match[1];\n if (!fontUrl) {\n return;\n }\n const fontResponse = await fetch(fontUrl);\n const fontData = Buffer.from(await fontResponse.arrayBuffer());\n await fs.mkdir(cacheDir, { recursive: true });\n await fs.writeFile(cachePath, fontData);\n\n return fontData;\n}\n\nexport type SocialImageOptions = {\n colorScheme: ThemeKey;\n height: number;\n width: number;\n excludeRoot: boolean;\n defaultTitle?: string;\n defaultDescription?: string;\n readingTimeText?: (minutes: number) => string;\n imageStructure: (\n options: ImageOptions & {\n userOpts: UserOpts;\n iconBase64?: string;\n },\n ) => JSX.Element;\n};\n\nexport type UserOpts = Omit;\n\nexport type ImageOptions = {\n title: string;\n description: string;\n fonts: SatoriOptions[\"fonts\"];\n cfg: GlobalConfiguration;\n fileData: QuartzPluginData;\n};\n\nexport const defaultImage: SocialImageOptions[\"imageStructure\"] = ({\n cfg,\n userOpts,\n title,\n description,\n fileData,\n iconBase64,\n}) => {\n const { colorScheme } = userOpts;\n const theme = cfg.theme as Theme;\n const fontBreakPoint = 32;\n const useSmallerFont = title.length > fontBreakPoint;\n\n const rawDate = getDate(cfg, fileData);\n const date = rawDate ? formatDate(rawDate, cfg.locale) : null;\n\n const { minutes } = readingTime(fileData.text ?? \"\");\n const readingTimeText = (userOpts.readingTimeText ?? ((time) => `${time} min read`))(\n Math.ceil(minutes),\n );\n\n const tags = fileData.frontmatter?.tags ?? [];\n const bodyFont = getFontSpecificationName(theme.typography.body);\n const headerFont = getFontSpecificationName(theme.typography.header);\n\n return (\n \n \n {iconBase64 && (\n \n )}\n \n {cfg.baseUrl}\n
\n \n\n \n \n {title}\n \n \n\n \n \n {description}\n

\n \n\n \n \n {date && (\n
\n \n \n \n \n \n \n {date}\n
\n )}\n
\n \n \n \n \n {readingTimeText}\n
\n \n\n \n {tags.slice(0, 3).map((tag) => (\n \n #{tag}\n \n ))}\n \n \n \n );\n};\n\nconst defaultOptions: SocialImageOptions = {\n colorScheme: \"lightMode\",\n width: 1200,\n height: 630,\n imageStructure: defaultImage,\n excludeRoot: false,\n defaultTitle: \"Untitled\",\n defaultDescription: \"No description provided\",\n readingTimeText: (minutes) => `${minutes} min read`,\n};\n\nasync function generateSocialImage(\n { cfg, description, fonts, title, fileData }: ImageOptions,\n userOpts: SocialImageOptions,\n): Promise {\n const { width, height } = userOpts;\n const iconPath = joinSegments(QUARTZ, \"static\", \"icon.png\");\n let iconBase64: string | undefined = undefined;\n\n try {\n const iconData = await fs.readFile(iconPath);\n iconBase64 = `data:image/png;base64,${iconData.toString(\"base64\")}`;\n } catch {\n console.warn(styleText(\"yellow\", `Warning: Could not find icon at ${iconPath}`));\n }\n\n const imageComponent = userOpts.imageStructure({\n cfg,\n userOpts,\n title,\n description,\n fonts,\n fileData,\n iconBase64,\n });\n\n const svg = await satori(imageComponent as Parameters[0], {\n width,\n height,\n fonts,\n loadAdditionalAsset: async (languageCode: string, segment: string) => {\n if (languageCode === \"emoji\") {\n return await loadEmoji(getIconCode(segment));\n }\n\n return languageCode;\n },\n });\n\n return sharp(Buffer.from(svg)).webp({ quality: 40 });\n}\n\nasync function processOgImage(\n ctx: BuildCtx,\n fileData: QuartzPluginData,\n fonts: SatoriOptions[\"fonts\"],\n fullOptions: SocialImageOptions,\n) {\n const cfg = ctx.cfg.configuration;\n const slug = fileData.slug!;\n const titleSuffix = cfg.pageTitleSuffix ?? \"\";\n const frontmatter = fileData.frontmatter;\n const title = (frontmatter?.title ?? fullOptions.defaultTitle ?? \"\") + titleSuffix;\n const description =\n frontmatter?.socialDescription ??\n frontmatter?.description ??\n unescapeHTML(fileData.description?.trim() ?? fullOptions.defaultDescription ?? \"\");\n\n const stream = await generateSocialImage(\n {\n title,\n description,\n fonts,\n cfg,\n fileData,\n },\n fullOptions,\n );\n\n return write({\n ctx,\n content: stream,\n slug: `${slug}-og-image` as FullSlug,\n ext: \".webp\",\n });\n}\n\nexport const CustomOgImagesEmitterName = \"CustomOgImages\";\nexport const CustomOgImages: QuartzEmitterPlugin> = (userOpts) => {\n const fullOptions = { ...defaultOptions, ...userOpts };\n\n return {\n name: CustomOgImagesEmitterName,\n getQuartzComponents() {\n return [];\n },\n async *emit(ctx, content, _resources) {\n const cfg = ctx.cfg.configuration;\n const theme = cfg.theme as Theme;\n const headerFont = theme.typography.header;\n const bodyFont = theme.typography.body;\n const fonts = await getSatoriFonts(headerFont, bodyFont);\n\n for (const [_tree, vfile] of content) {\n const data = vfile.data as QuartzPluginData;\n if (data.frontmatter?.socialImage !== undefined) continue;\n yield processOgImage(ctx, data, fonts, fullOptions);\n }\n },\n async *partialEmit(ctx, _content, _resources, changeEvents) {\n const cfg = ctx.cfg.configuration;\n const theme = cfg.theme as Theme;\n const headerFont = theme.typography.header;\n const bodyFont = theme.typography.body;\n const fonts = await getSatoriFonts(headerFont, bodyFont);\n\n for (const changeEvent of changeEvents) {\n if (!changeEvent.file) continue;\n const data = changeEvent.file.data as QuartzPluginData;\n if (data.frontmatter?.socialImage !== undefined) continue;\n if (changeEvent.type === \"add\" || changeEvent.type === \"change\") {\n yield processOgImage(ctx, data, fonts, fullOptions);\n }\n }\n },\n externalResources: (ctx) => {\n if (!ctx.cfg.configuration.baseUrl) {\n return {};\n }\n\n const baseUrl = ctx.cfg.configuration.baseUrl;\n return {\n additionalHead: [\n (pageData: QuartzPluginData) => {\n const isRealFile = pageData.filePath !== undefined;\n let userDefinedOgImagePath = pageData.frontmatter?.socialImage;\n\n if (userDefinedOgImagePath) {\n userDefinedOgImagePath = isAbsoluteURL(userDefinedOgImagePath)\n ? userDefinedOgImagePath\n : `https://${baseUrl}/static/${userDefinedOgImagePath}`;\n }\n\n const generatedOgImagePath = isRealFile\n ? `https://${baseUrl}/${pageData.slug!}-og-image.webp`\n : undefined;\n const defaultOgImagePath = `https://${baseUrl}/static/og-image.png`;\n const ogImagePath =\n userDefinedOgImagePath ?? generatedOgImagePath ?? defaultOgImagePath;\n const ogImageMimeType = `image/${getFileExtension(ogImagePath) ?? \"png\"}`;\n return (\n <>\n {!userDefinedOgImagePath && (\n <>\n \n \n \n )}\n \n \n \n \n \n );\n },\n ],\n };\n },\n };\n};\n","export interface ColorScheme {\n light: string;\n lightgray: string;\n gray: string;\n darkgray: string;\n dark: string;\n secondary: string;\n tertiary: string;\n highlight: string;\n textHighlight: string;\n}\n\ninterface Colors {\n lightMode: ColorScheme;\n darkMode: ColorScheme;\n}\n\nexport type FontSpecification =\n | string\n | {\n name: string;\n weights?: number[];\n includeItalic?: boolean;\n };\n\nexport interface Theme {\n typography: {\n title?: FontSpecification;\n header: FontSpecification;\n body: FontSpecification;\n code: FontSpecification;\n };\n cdnCaching: boolean;\n colors: Colors;\n fontOrigin: \"googleFonts\" | \"local\";\n}\n\nexport type ThemeKey = keyof Colors;\n\nexport function getFontSpecificationName(spec: FontSpecification): string {\n if (typeof spec === \"string\") {\n return spec;\n }\n return spec.name;\n}\n","type EmojiMap = {\n codePointToName: Record;\n nameToBase64: Record;\n};\n\nlet emojimap: EmojiMap | undefined = undefined;\nexport async function loadEmoji(code: string) {\n if (!emojimap) {\n const path = await import(\"node:path\");\n const fs = await import(\"node:fs/promises\");\n const mapPath = path.join(\"quartz\", \"util\", \"emojimap.json\");\n const data = JSON.parse(await fs.readFile(mapPath, \"utf-8\"));\n emojimap = data;\n }\n\n const name = emojimap!.codePointToName[`${code.toUpperCase()}`];\n if (!name) throw new Error(`codepoint ${code} not found in map`);\n\n const b64 = emojimap!.nameToBase64[name];\n if (!b64) throw new Error(`name ${name} not found in map`);\n\n return b64;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../node_modules/tiny-inflate/index.js","../node_modules/unicode-trie/swap.js","../node_modules/unicode-trie/index.js","../node_modules/base64-js/lib/b64.js","../node_modules/postcss-value-parser/lib/parse.js","../node_modules/postcss-value-parser/lib/walk.js","../node_modules/postcss-value-parser/lib/stringify.js","../node_modules/postcss-value-parser/lib/unit.js","../node_modules/postcss-value-parser/lib/index.js","../node_modules/camelize/index.js","../node_modules/css-color-keywords/colors.json","../node_modules/css-color-keywords/index.js","../node_modules/css-to-react-native/index.js","../node_modules/css-background-parser/index.js","../node_modules/css-box-shadow/index.js","../node_modules/color-name/index.js","../node_modules/hex-rgb/index.js","../node_modules/escape-html/index.js","../node_modules/yoga-wasm-web/dist/wrapAsm-f766f97f.js","../node_modules/yoga-wasm-web/dist/asm.js","../node_modules/reading-time/lib/reading-time.js","../node_modules/reading-time/lib/stream.js","../node_modules/reading-time/index.js","../node_modules/linebreak/dist/src/classes.js","../node_modules/linebreak/dist/src/pairs.js","../node_modules/linebreak/dist/src/linebreaker.js","../node_modules/satori/src/handler/expand.ts","../node_modules/parse-css-color/dist/index.esm.js","../node_modules/satori/src/transform-origin.ts","../node_modules/satori/src/parser/mask.ts","../node_modules/satori/src/builder/text.ts","../node_modules/css-gradient-parser/src/utils.ts","../node_modules/css-gradient-parser/src/linear.ts","../node_modules/css-gradient-parser/src/radial.ts","../node_modules/satori/src/parser/shape.ts","../node_modules/@shuding/opentype.js/node_modules/.pnpm/fflate@0.7.3/node_modules/fflate/esm/browser.js","../node_modules/@shuding/opentype.js/src/path.js","../node_modules/@shuding/opentype.js/src/encoding.js","../node_modules/@shuding/opentype.js/src/check.js","../node_modules/@shuding/opentype.js/src/glyph.js","../node_modules/@shuding/opentype.js/src/glyphset.js","../node_modules/@shuding/opentype.js/src/layout.js","../node_modules/@shuding/opentype.js/src/position.js","../node_modules/@shuding/opentype.js/src/substitution.js","../node_modules/@shuding/opentype.js/src/util.js","../node_modules/@shuding/opentype.js/src/parse.js","../node_modules/@shuding/opentype.js/src/tables/glyf.js","../node_modules/@shuding/opentype.js/src/hintingtt.js","../node_modules/@shuding/opentype.js/src/tokenizer.js","../node_modules/@shuding/opentype.js/src/char.js","../node_modules/@shuding/opentype.js/src/features/featureQuery.js","../node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicWord.js","../node_modules/@shuding/opentype.js/src/features/arab/contextCheck/arabicSentence.js","../node_modules/@shuding/opentype.js/src/features/applySubstitution.js","../node_modules/@shuding/opentype.js/src/features/arab/arabicPresentationForms.js","../node_modules/@shuding/opentype.js/src/features/arab/arabicRequiredLigatures.js","../node_modules/@shuding/opentype.js/src/features/latn/contextCheck/latinWord.js","../node_modules/@shuding/opentype.js/src/features/latn/latinLigatures.js","../node_modules/@shuding/opentype.js/src/bidi.js","../node_modules/@shuding/opentype.js/src/font.js","../node_modules/@shuding/opentype.js/src/tables/cmap.js","../node_modules/@shuding/opentype.js/src/tables/cff.js","../node_modules/@shuding/opentype.js/src/tables/fvar.js","../node_modules/@shuding/opentype.js/src/tables/gdef.js","../node_modules/@shuding/opentype.js/src/tables/gpos.js","../node_modules/@shuding/opentype.js/src/tables/gsub.js","../node_modules/@shuding/opentype.js/src/tables/head.js","../node_modules/@shuding/opentype.js/src/tables/hhea.js","../node_modules/@shuding/opentype.js/src/tables/hmtx.js","../node_modules/@shuding/opentype.js/src/tables/kern.js","../node_modules/@shuding/opentype.js/src/tables/ltag.js","../node_modules/@shuding/opentype.js/src/tables/loca.js","../node_modules/@shuding/opentype.js/src/tables/maxp.js","../node_modules/@shuding/opentype.js/src/tables/os2.js","../node_modules/@shuding/opentype.js/src/tables/post.js","../node_modules/@shuding/opentype.js/src/types.js","../node_modules/@shuding/opentype.js/src/tables/meta.js","../node_modules/@shuding/opentype.js/src/opentype.js","../node_modules/satori/src/yoga/yoga-prebuilt.ts","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/negateValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/corePluginList.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/configurePlugins.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/stubs/defaultConfig.stub.js","../node_modules/satori/src/vendor/twrnc/log.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/colors.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/defaults.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toPath.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/normalizeConfig.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/isPlainObject.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/cloneDeep.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/satori/node_modules/.pnpm/cssesc@3.0.0/node_modules/cssesc/cssesc.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../node_modules/satori/src/vendor/twrnc/deprecate.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/parser.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/processor.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/satori/node_modules/.pnpm/postcss-selector-parser@6.0.10/node_modules/postcss-selector-parser/dist/index.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/escapeCommas.js","../node_modules/satori/node_modules/.pnpm/color-name@1.1.4/node_modules/color-name/index.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/color.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/withAlphaVariable.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/lib/regex.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/parseBoxShadowValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/dataTypes.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/pluginUtils.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/toColorValue.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/resolveConfig.js","../node_modules/satori/src/vendor/twrnc/picocolors.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/featureFlags.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/util/getAllConfigs.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/lib/public/resolve-config.js","../node_modules/satori/node_modules/.pnpm/tailwindcss@3.1.8_postcss@8.4.21/node_modules/tailwindcss/resolveConfig.js","../node_modules/satori/src/yoga/index.ts","../node_modules/satori/src/vendor/parse-css-dimension/index.js","../node_modules/satori/src/utils.ts","../node_modules/satori/src/handler/image.ts","../node_modules/satori/src/handler/preprocess.ts","../node_modules/satori/src/handler/presets.ts","../node_modules/satori/src/handler/inheritable.ts","../node_modules/satori/src/handler/compute.ts","../node_modules/satori/src/builder/transform.ts","../node_modules/satori/src/builder/shadow.ts","../node_modules/satori/src/builder/text-decoration.ts","../node_modules/satori/src/text/characters.ts","../node_modules/satori/src/text/measurer.ts","../node_modules/satori/src/text/processor.ts","../node_modules/satori/src/text/index.ts","../node_modules/satori/src/builder/gradient/utils.ts","../node_modules/satori/src/builder/gradient/linear.ts","../node_modules/satori/src/builder/gradient/radial.ts","../node_modules/satori/src/builder/background-image.ts","../node_modules/satori/src/builder/border-radius.ts","../node_modules/satori/src/builder/border.ts","../node_modules/satori/src/builder/content-mask.ts","../node_modules/satori/src/builder/clip-path.ts","../node_modules/satori/src/builder/overflow.ts","../node_modules/satori/src/builder/mask-image.ts","../node_modules/satori/src/builder/rect.ts","../node_modules/satori/node_modules/.pnpm/emoji-regex@10.2.1/node_modules/emoji-regex/index.mjs","../node_modules/satori/src/language.ts","../node_modules/satori/src/layout.ts","../node_modules/satori/src/font.ts","../node_modules/satori/src/builder/svg.ts","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/create.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/types.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/helpers.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/styles.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/cache.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-size.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/line-height.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/spacing.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/screens.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/font-family.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/color.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/borders.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/inset.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/flex.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/width-height.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/letter-spacing.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/opacity.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/resolve/shadow.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/ClassParser.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/parse-inputs.js","../node_modules/satori/node_modules/.pnpm/twrnc@3.4.0_postcss@8.4.21_react-native@0.72.4/node_modules/twrnc/dist/esm/plugin.js","../node_modules/satori/src/handler/tailwind.ts","../node_modules/satori/src/satori.ts","../src/emitter.tsx","../src/theme.ts","../src/emoji.ts"],"names":["exports","bits","lengths","d","offs","m","decode","l","v","max","parse","x","matchString","matchColor","noopToken","valueForTypeToken","regExpToken","transform","aspectRatio","border","borderWidth","borderColor","directionFactory","keyFor","parseShadowOffset","parseShadow","boxShadow","flex","flexFlow","fontFamily","font","fontWeight","fontVariant","placeContent","textDecoration","textDecorationLine","textShadow","oneOfType","xyTransformFactory","transforms","background","shadowOffset","textShadowOffset","TokenStream","transformRawValue","baseTransformShorthandValue","getStylesForProperty","getPropertyName","index","number","E","_","T","N","O","u","r","e","k","a","i","n","f","t","b","o","c","s","A","h","p","w","y","G","R","g","Z","W","V","B","I","X","L","F","C","S","P","Y","U","M","H","Q","z","j","D","J","K","q","$","rr","re","ra","ri","rn","rf","rb","rk","rA","rl","rd","rh","rp","rN","rw","rG","rX","rL","r_","rF","rC","rY","rH","rz","rD","rx","rJ","rK","rq","r$","r0","r2","r1","r4","r3","r8","r9","r7","er","ei","ef","et","eb","eo","ek","rP","rS","rM","rU","rZ","rW","eu","ro","rV","rs","rQ","rc","ry","ru","rO","rg","rt","rB","rv","rm","rE","rj","r5","rI","rR","rT","el","ec","readingTime","require_reading_time","$hJqJp$base64js","$hJqJp$unicodetrie","percentage","hex2Rgb","colorName","import_css_to_react_native","split","input","separator","result","parenCount","resolveStops","stops","color","offset","isHint","resolveLength","REGEX","value","unit","parseLinearGradient","repeating","props","properties","orientation","resolveLinearOrientation","angle","rgExtentKeyword","positionKeyword","isRgExtentKeyword","isPositionKeyWord","extendPosition","res","parseRadialGradient","isColor","prefix","shape","size","position","le","st","sl","bl","bt","tl","let","const","arguments","cmap","path","parseGlyph","buildPath","parseCFFCharstring","langSysTable","pair","loca","ci","this","subtable","gsub","singleSubstitutionFormat1","singleSubstitutionFormat2","chainingSubstitutionFormat3","ligatureSubstitutionFormat1","getContextParams","check","HintingTrueType","meta","code","charString","gdef","subtableParsers","parseLookup1","parseLookup2","parseLookup3","parseLookup4","parseLookup5","glyphCount","substCount","parseLookup6","parseLookup7","parseLookup8","head","hhea","maxp","os2","post","yoga_prebuilt_exports","__export","getYogaModule","initYoga","init_yoga_prebuilt","__esmMin","require_negateValue","__commonJSMin","_default","sign","require_corePluginList","require_configurePlugins","pluginConfig","plugins","pluginName","require_defaultConfig_stub","module","colors","theme","breakpoints","log_exports","log_default","init_log","key","messages","require_colors","_log","_interopRequireDefault","obj","warn","version","from","to","require_defaults","defaults","target","sources","source","ref","k1","ref1","require_toPath","toPath","openBrackets","closedBrackets","require_normalizeConfig","normalizeConfig","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","cacheBabelInterop","cacheNodeInterop","cache","newObj","hasPropertyDescriptor","desc","config","value1","content","purge","safelist","_prefix","extract","ref2","ref3","ref4","ref5","ref6","ref7","ref8","ref9","extractors","defaultExtractor","extensions","extractor","extension","transformers","file","require_isPlainObject","isPlainObject","prototype","require_cloneDeep","cloneDeep","child","require_unesc","unesc","gobbleHex","str","lower","hex","spaceTerminated","valid","codePoint","isSurrogate","CONTAINS_ESCAPE","needToProcess","ret","gobbled","require_getProp","getProp","_len","_key","prop","require_ensureObject","ensureObject","require_stripComments","stripComments","commentStart","lastEnd","commentEnd","require_util","_unesc","_getProp","_ensureObject","_stripComments","require_node","_util","_defineProperties","descriptor","_createClass","Constructor","protoProps","staticProps","cloneNode","parent","cloned","type","Node","opts","_proto","overrides","name","valueEscaped","originalValue","originalEscaped","line","column","rawSpace","raw","require_types","TAG","STRING","SELECTOR","ROOT","PSEUDO","NESTING","ID","COMMENT","COMBINATOR","CLASS","ATTRIBUTE","UNIVERSAL","require_container","_node","types","_createForOfIteratorHelperLoose","allowArrayLike","it","_unsupportedIterableToArray","minLen","_arrayLikeToArray","arr","len","arr2","_inheritsLoose","subClass","superClass","_setPrototypeOf","Container","_Node","_this","selector","id","_iterator","_step","node","oldNode","newNode","oldIndex","col","found","foundChild","callback","_this2","_this3","_this4","_this5","_this6","_this7","_this8","_this9","_this10","_this11","current","memo","require_root","_container","_types","Root","_Container","message","options","handler","require_selector","Selector","require_cssesc","object","hasOwnProperty","merge","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","string","quote","isIdentifier","firstChar","output","counter","length","character","extra","$0","$1","$2","require_className","_cssesc","ClassName","escaped","require_comment","Comment","require_id","require_namespace","Namespace","namespace","ns","require_tag","_namespace","Tag","_Namespace","require_string","String","require_pseudo","Pseudo","params","require_deprecate","fn","args","require_attribute","unescapeValue","_CSSESC_QUOTE_OPTIONS","deprecate","WRAPPED_IN_QUOTES","warnOfDeprecatedValueAssignment","warnOfDeprecatedQuotedAssignment","warnOfDeprecatedConstructor","deprecatedUsage","quoteMark","unescaped","handleDeprecatedContructorOpts","_unescapeValue","Attribute","cssescopts","CSSESC_QUOTE_OPTIONS","numSingleQuotes","numDoubleQuotes","pref","quoteValue","rawValue","attrSpaces","spaces","rawSpaces","spaceName","concat","defaultAttrConcat","count","attributeSpaces","operatorSpaces","operator","valueSpaces","insensitiveSpaces","attrValue","qm","_unescapeValue2","require_universal","Universal","require_combinator","Combinator","require_nesting","Nesting","require_sortAscending","sortAscending","list","require_tokenTypes","ampersand","asterisk","at","comma","colon","semicolon","openParenthesis","closeParenthesis","openSquare","closeSquare","dollar","tilde","caret","plus","equals","pipe","greaterThan","space","singleQuote","doubleQuote","slash","bang","backslash","cr","feed","newline","tab","comment","word","combinator","require_tokenize","tokenize","_unescapable","_wordDelimiters","unescapable","wordDelimiters","hexChars","consumeWord","css","start","next","consumeEscape","hexDigits","FIELDS","tokens","_css","end","endColumn","endLine","escapePos","last","lines","nextLine","nextOffset","tokenType","unclosed","what","fix","require_parser","_root","_selector","_className","_comment","_id","_tag","_string","_pseudo","_attribute","_universal","_combinator","_nesting","_sortAscending","_tokenize","_WHITESPACE_TOKENS","_Object$assign","WHITESPACE_TOKENS","WHITESPACE_EQUIV_TOKENS","tokenStart","token","tokenEnd","getSource","startLine","startColumn","getTokenSource","getTokenSourceSpan","startToken","endToken","unescapeProp","indexesOf","array","item","indexes","uniqs","Parser","rule","rootSource","errorOptions","attr","startingToken","pos","spaceBefore","commentBefore","lastAdded","spaceAfterMeaningfulToken","prevContent","existingComment","oldRawValue","_rawValue","_unescaped","_oldRawValue","oldValue","insensitive","lastComment","rawLastComment","lastValue","rawLastValue","stopPosition","startPosition","nodes","firstToken","lastToken","requiredSpace","rawSpaceBefore","nameRaw","raws","nextSigTokenPos","_this$convertWhitespa","spaceOrDescendantSelectorNodes","_this$convertWhitespa2","_space","_rawSpace","_this$convertWhitespa3","_space2","_rawSpace2","before","nextContent","unbalanced","parenStart","parenValue","parenEnd","pseudoStr","first","nextToken","firstCallback","hasClass","escapedDot","isKeyframesPercent","hasId","interpolations","hashIndex","indices","ind","sourceIndex","classNameOpts","idOpts","tagOpts","throwOnParenthesis","description","an","required","searchPosition","require_processor","_parser","Processor","func","merged","parser","resolve","reject","root","require_constructors","attribute","className","nesting","pseudo","tag","universal","require_guards","isNode","isPseudoElement","isPseudoClass","isContainer","isNamespace","_IS_TYPE","IS_TYPE","isNodeType","isAttribute","isClassName","isCombinator","isComment","isNesting","isPseudo","isRoot","isSelector","isString","isTag","isUniversal","require_selectors","_constructors","_guards","require_dist","_processor","selectors","processor","require_escapeCommas","escapeCommas","require_color_name","require_color","_export","all","parseColor","formatColor","_colorName","HEX","SHORT_HEX","VALUE","SEP","ALPHA_SEP","CUSTOM_PROPERTY","RGB","HSL","loose","match","part","mode","alpha","hasAlpha","require_withAlphaVariable","withAlphaValue","withAlphaVariable","_color","alphaValue","defaultValue","parsed","property","variable","require_regex","pattern","withoutCapturing","any","optional","zeroOrMore","nestedBrackets","escape","REGEX_SPECIAL","REGEX_HAS_SPECIAL","toSource","open","close","depth","require_splitAtTopLevelOnly","splitAtTopLevelOnly","_regex","SPECIALS","lastIndex","separatorIndex","separatorStart","separatorLength","matchesSeparator","atEndOfSeparator","matchesFullSeparator","require_parseBoxShadowValue","parseBoxShadowValue","formatBoxShadowValue","_splitAtTopLevelOnly","KEYWORDS","SPACE","LENGTH","shadow","parts","seen","shadows","require_dataTypes","normalize","url","lineWidth","image","gradient","familyName","genericName","absoluteSize","relativeSize","_parseBoxShadowValue","cssFunctions","COMMA","UNDERSCORE","fullMatch","characterBefore","lengthUnits","lengthUnitsPattern","lineWidths","parsedShadows","parsedShadow","images","gradientTypes","validPositions","positions","fonts","genericNames","absoluteSizes","relativeSizes","require_pluginUtils","updateAllClasses","asValue","parseColorFormat","asColor","asLookupValue","coerceValue","_postcssSelectorParser","_escapeCommas","_withAlphaVariable","_dataTypes","_negateValue","updateClass","sel","updatedClass","resolveArbitraryValue","modifier","validate","isArbitraryValue","asNegativeValue","lookup","positiveValue","resolved","splitAlpha","slashIdx","opacityValue","tailwindConfig","normalizedColor","guess","typeMap","supportedTypes","splitAtFirst","delim","idx","arbitraryValue","explicitType","require_toColorValue","toColorValue","maybeFunction","require_resolveConfig","resolveConfig","_corePluginList","_configurePlugins","_defaultConfigStub","_colors","_defaults","_toPath","_normalizeConfig","_isPlainObject","_cloneDeep","_pluginUtils","_toColorValue","isFunction","isObject","mergeWith","customizer","configUtils","scale","negativeScale","negativeValue","screens","valueToResolve","collectExtends","items","extend","mergedValue","extendValue","mergeThemes","themes","mergeExtensionCustomizer","mergeExtensions","themeValue","resolveThemePath","utils","toPaths","matches","newPath","resolveFunctionKeys","resolvePath","val","normalized","extractPluginConfigs","configs","allConfigs","plugin","resolveCorePlugins","corePluginConfigs","corePluginConfig","resolvePluginLists","pluginLists","pluginList","picocolors_exports","picocolors_default","init_picocolors","require_featureFlags","flagEnabled","issueFlagNotices","_picocolors","featureFlags","flag","experimentalFlagsEnabled","changes","require_getAllConfigs","getAllConfigs","_defaultConfigStubJs","_featureFlags","preset","features","experimentals","feature","require_resolve_config","_resolveConfig","_getAllConfigs","defaultConfigs","yogaInstance","initializationPromise","getYoga","mod","yoga","isReactElement","isClass","hasDangerouslySetInnerHTMLProp","normalizeChildren","children","flattend","lengthToNumber","baseFontSize","baseLength","inheritedStyle","calcDegree","deg","multiply","m1","m2","field","map","fallback","errorIfNotAllowedForProperty","_v","wordSegmenter","graphemeSegmenter","wordSeparators","point","segment","granularity","locale","seg","segmented","previousWord","nextWord","buildXMLString","attrs","attrString","createLRU","store","set","keyToDelete","get","entry","clear","parseViewBox","viewBox","toString","isNumber","isUndefined","splitByBreakOpportunities","wordBreak","breaker","LineBreaker","bk","words","requiredBreaks","midline","letter","splitEffects","AVIF","WEBP","APNG","PNG","JPEG","GIF","SVG","parseJPEG","buf","view","parseGIF","parsePNG","inflightRequests","ALLOWED_IMAGE_TYPES","arrayBufferToBase64","buffer","binary","bytes","base64ToArrayBuffer","base64","binaryString","parseSvgImageSize","src","data","svgTag","viewBoxStr","width","height","ratio","arrayBufferToDataUri","imageSize","imageType","detectContentType","resolveImageData","newSrc","decodedURI","encodingType","dataString","utf8Src","base64Src","cached","promise","err","detectAPNG","dv","off","isAPNG","chars","ATTRIBUTE_MAPPING","SVGSymbols","translateSVGNodeToSVGString","inheritedColor","style","restProps","currentColor","styles","preProcessNode","walk","SVGNodeToImage","viewbox","viewBoxSize","DEFAULT_DISPLAY","presets_default","inheritable","parseUnit","handleWord","unitIsHorizontal","parsedUnit","parseTransformOrigin","valueParser","getMaskProperty","parseMask","maskImage","common","optOutPx","keepNumber","handleFallbackColor","rawInput","purify","num","handleSpecialCase","horizontal","vertical","vh","vv","purified","full","parseBoxShadow","symbols","replaced","symbol","values","getErrorHint","RGB_SLASH","normalizeColor","expand","serializedStyle","getCurrentColor","preprocess","resolvedStyle","backgrounds","parseElementStyle","calcBaseFontSize","textShadowRadius","inheritedSize","refineHSL","cssColorParse","convertCurrentColorToActualValue","compute","definedStyle","Yoga","resolvedSrc","imageWidth","imageHeight","extraHorizontal","extraVertical","contentBoxWidth","contentBoxHeight","isAbsoluteContentSize","baseMatrix","resolveTransforms","matrix","transformMatrix","rad","left","top","isInheritingTransform","transformOrigin","xOrigin","yOrigin","container","opacity","buildText","filter","clipPathId","debug","decorationShape","shapeProps","escapeHTML","shiftPath","dx","dy","command","SCALE","buildDropShadow","shadowCount","effects","right","bottom","grow","innerShadow","shadowStyle","sid","maskId","shapeWithSpread","finalShape","buildDecoration","ascender","textDecorationColor","textDecorationStyle","fontSize","dasharray","stringFromCode","Space","Tab","HorizontalEllipsis","genMeasurer","engine","isImage","letterSpacing","measureGrapheme","grapheme","measureGraphemeArray","graphemes","measureText","text","textTransform","whiteSpace","processTextTransform","processedContent","shouldCollapseTabsAndSpaces","allowSoftWrap","processWhiteSpace","allowBreakWord","processWordBreak","lineLimit","blockEllipsis","processTextOverflow","textOverflow","lineClamp","WebkitLineClamp","WebkitBoxOrient","overflow","display","parseLineClamp","shouldKeepLinebreak","regex1","regex2","match1","match2","skippedWordWhenFindingMissingFont","shouldSkipWhenFindingMissingFont","buildTextNodes","context","parentStyle","embedFont","graphemeImages","canLoadAdditionalAssets","textAlign","lineHeight","textWrap","cssFilter","tabSize","_inheritedBackgroundClipTextPath","flexShrink","textContainer","createTextContainerNode","wordsMissingFont","tabWidth","calc","currentWidth","tabCount","detectTabs","originWidth","textBeforeTab","textAfterTab","textWidthBeforeTab","offsetBeforeTab","afterTrimEndWidth","baselines","lineSegmentNumber","texts","wordPositionInLayout","flow","maxWidth","lineIndex","currentLineHeight","currentBaselineOffset","prevLineEndingSpacesWidth","forceBreak","endingSpacesWidth","_word","lineEndingSpacesWidth","allowedToPutAtBeginning","allowedToJustify","willWrap","glyphHeight","_texts","_text","_width","_isImage","measuredTextSize","containerWidth","mHeight","backgroundClipDef","overflowMaskId","containerLeft","containerTop","containerHeight","parentContainerInnerWidth","textShadowColor","mergedPath","skippedLine","decorationLines","wordBuffer","bufferedOffset","layout","nextLayout","isLastDisplayedBeforeEllipsis","topOffset","leftOffset","extendedWidth","remainingWidth","segments","gutter","baselineOfLine","baselineOfWord","heightOfWord","baselineDelta","calcEllipsis","baseWidth","subset","resolvedWidth","char","ellipsisWidth","_blockEllipsis","spaceWidth","isNotLastLine","nextLineText","finalizedSegment","finalizedLeftOffset","finalizedWidth","deco","normalizeStops","totalLength","colorStops","stop","lastStop","previousStop","nextStop","buildLinearGradient","repeatX","repeatY","dimensions","offsets","inheritableStyle","points","xys","resolveXYFromDirection","calcNormalPoint","calcPercentage","resolveRepeatingCycle","gradientId","patternId","defs","dir","x1","y1","x2","y2","tmp","dfs","p1","p2","sx","sy","ex","ey","buildRadialGradient","_a","xDelta","yDelta","cx","cy","calcRadialGradient","spread","calcRadius","calcPos","endingShape","centerAxis","fx","fy","isSizeAllLength","toAbsoluteValue","base","parseLengthPairs","defaultX","defaultY","backgroundImage","repeat","dimensionsWithoutFallback","resolvedHeight","svgArcCenterOffset","resolveSize","limit","makeSmaller","resolveRadius","sides","singleValue","radiusZeroOrNull","_radius","getBorderRadiusClipPath","borderRadiusPath","borderType","rectClipId","radius","partialSides","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","singleAbsValueTopLeftCorner","singleAbsValueTopRightCorner","singleAbsValueBottomLeftCorner","singleAbsValueBottomRightCorner","getArc","c0","arc0","arc1","compareBorderDirections","getBorderClipPath","currentClipPathId","borderPath","asContentMask","maskBorderOnly","directions","direction","fullBorder","currentStyle","_i","ni","nd","contentMask","borderOnly","offsetLeft","offsetTop","offsetRight","offsetBottom","contentArea","regexMap","createShapeParser","parseCircle","resolvePosition","parseEllipse","parsePath","fillRule","resolveFillRule","parsePolygon","parseInset","inset","radiusMap","genClipPathId","genClipPath","buildClipPath","clipPath","rest","currentClipPath","overflowClipPath","genMaskImageId","buildMaskImage","miId","mask","def","rect","fills","backgroundShapes","mi","backgroundClip","clip","fill","borderClip","imageBorderRadius","preserveAspectRatio","emoji_regex_default","emojiRegex","specialCode","locales","isValidLocale","detectLanguageCode","languages","lang","normalizeLocale","element","getTwStyles","iter","tw","_newLocale","newLocale","twStyles","computedStyle","newInheritableStyle","mutateRefValue","normalizedChildren","iterators","segmentsMissingFont","childrenRenderResult","baseRenderResult","depsRenderResult","childrenNode","SUFFIX_WHEN_LANG_NOT_SET","compareFont","weight","matchedWeight","matchedStyle","nextWeight","nextStyle","FontLoader","fontOptions","matchedFont","weight1","style1","weight2","style2","fontOption","_lang","opentype","originalCharToGlyphIndex","_name","fontStyle","face","getNormal","getUnknown","keys","specifiedLangFonts","nonSpecifiedLangFonts","additionalFonts","getLangFromFontName","cachedFontResolver","resolveFont","_fonts","_font","resolvedFont","useOS2Table","_b","descender","_lineGap","asc","contentHeight","brokenChars","originalStringToGlyphs","glyphs","anotherFont","glyph","scaledCommand","unpatch","svg","import_resolveConfig","PLATFORMS","isPlatform","ORIENTATIONS","isOrientation","ConfigType","Unit","complete","parseNumericValue","fractions","numerator","denominator","parsedNumerator","parsedDenominator","getCompleteStyle","styleVal","parseStyleVal","mergeStyle","getStyle","toStyleVal","isNegative","device","toPx","DIR_MAP","getDirection","parseAndConsumeDirection","utilityFragment","parseUnconfigged","unconfiggedStyleVal","unconfiggedStyle","consoleWarn","noopWarn","defaultStyles","styles_default","Cache","customStyles","ir","configValue","fontSizeStyle","calculateLineHeight","parseValue","spacing","numericValue","unconfigged","spacingStyle","pixels","screenData","acc","screen","minPx","maxPx","minA","maxA","minB","maxB","order","firstFamily","shorthandOpacity","findColorInConfigRecursive","addOpacity","STYLE_PROPS","opacityProp","colorOpacity","hexToRgba","removeOpacityHelpers","orig","MATCH_SHORT_HEX","MATCH_FULL_HEX","configColor","colorNameStart","colorNameRest","subConfig","colorType","colorStyle","arbitraryWidth","borderRadius","arbitrary","insetDir","insetStyle","flexGrowShrink","configKey","flexBasis","widthHeight","minMaxWidthHeight","relativeLetterSpacing","ems","parsedConfig","parsedArbitrary","shadowOpacity","widthStr","heightStr","offsetValue","ClassParser","platform","_c","_d","_e","_f","prefixes","widthBreakpoints","breakpointOrder","windowWidth","min","spacingDirection","elevation","zIndex","windowDims","amount","checkDimension","parsedAmount","bound","begin","parseInputs","inputs","classNames","unique","classes","getAddedUtilities","callPluginFunction","pluginFn","added","utilities","core","notImplemented","create","customConfig","withContent","pluginUtils","customStringUtils","customStyleUtils","util","deriveCacheGroup","cacheGroup","contextCaches","getCache","existing","dependents","ordered","userStyle","joined","utility","styleIr","customStyle","orderedStyle","dependent","error","styleObj","tailwindFn","strings","prefixMatches","newDimensions","newFontScale","newPixelDensity","newColorScheme","defaultShadows","addUtilities","createTw","getTw","fontCache","satori","definedWidth","definedHeight","processedWordsMissingFonts","languageCodes","convertToLanguageCodes","_segment","asset","computedWidth","computedHeight","wordsByCode","fs"],"mappings":"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AA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA;;AACjQ,EAAA;AAAC,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA,yCAAA;AAAQ,IAAA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AAA,EAAK,MAAI6Q,EAAAA,EACZ,CAAA;AACD,EAAA,IAAMA,KAAW,CACb,WAAA,EACA,aACA,eAAA,EACA,eAAA,EACA,cACA,UAAA,EACA,OAAA,EACA,WAAA,EACA,QAAA,EACA,SACA,YAAA,EACA,iBAAA,EACA,iBACA,SAAA,EACA,cAAA,EACA,cACA,OAAA,EACA,OAAA,EACA,QAAA,EACA,WAAA,EACA,WACA,aAAA,EACA,QAAA,EACA,aACA,WAAA,EACA,OAAA,EACA,YACA,UAAA,EACA,MAAA,EACA,YAAA,EACA,UAAA,EACA,aACA,aAAA,EACA,gBAAA,EACA,iBACA,iBAAA,EACA,WAAA,EACA,UACA,MAAA,EACA,OAAA,EACA,WAAA,EACA,WAAA,EACA,UACA,aAAA,EACA,YAAA,EACA,UACA,gBAAA,EACA,iBAAA,EACA,kBACA,cAAA,EACA,eAAA,EACA,mBAAA,EACA,eAAA,EACA,cACA,SAAA,EACA,aAAA,EACA,eACA,YAAA,EACA,iBAAA,EACA,gBACA,cAAA,EACA,qBAAA,EACA,kBAAA,EACA,eAAA,EACA,YACA,cAAA,EACA,YAAA,EACA,gBACA,YAAA,EACA,gBAAA,EACA,gBACA,KAAA,EACA,OAAA,EACA,aAAA,EACA,aAAA,EACA,eACA,eAAA,EACA,WAAA,EACA,aACA,aAAA,EACA,UAAA,EACA,sBACA,gBAAA,EACA,cAAA,EACA,YAAA,EACA,WAAA,EACA,gBACA,aAAA,EACA,aAAA,EACA,eACA,eAAA,EACA,iBAAA,EACA,qBACA,iBAAA,EACA,oBAAA,EACA,oBAAA,EACA,gBAAA,EACA,wBACA,gBAAA,EACA,oBAAA,EACA,oBACA,kBAAA,EACA,MAAA,EACA,UACA,aAAA,EACA,WAAA,EACA,gBAAA,EACA,SAAA,EACA,aACA,YAAA,EACA,eAAA,EACA,cACA,UAAA,EACA,YAAA,EACA,iBACA,WAAA,EACA,oBAAA,EACA,YAAA,EACA,eAAA,EACA,aACA,aAAA,EACA,gBAAA,EACA,uBACA,qBAAA,EACA,yBAAA,EACA,uBACA,eAAA,EACA,kBAAA,EAC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","file":"index.js","sourcesContent":["var TINF_OK = 0;\nvar TINF_DATA_ERROR = -3;\n\nfunction Tree() {\n this.table = new Uint16Array(16); /* table of code length counts */\n this.trans = new Uint16Array(288); /* code -> symbol translation table */\n}\n\nfunction Data(source, dest) {\n this.source = source;\n this.sourceIndex = 0;\n this.tag = 0;\n this.bitcount = 0;\n \n this.dest = dest;\n this.destLen = 0;\n \n this.ltree = new Tree(); /* dynamic length/symbol tree */\n this.dtree = new Tree(); /* dynamic distance tree */\n}\n\n/* --------------------------------------------------- *\n * -- uninitialized global data (static structures) -- *\n * --------------------------------------------------- */\n\nvar sltree = new Tree();\nvar sdtree = new Tree();\n\n/* extra bits and base tables for length codes */\nvar length_bits = new Uint8Array(30);\nvar length_base = new Uint16Array(30);\n\n/* extra bits and base tables for distance codes */\nvar dist_bits = new Uint8Array(30);\nvar dist_base = new Uint16Array(30);\n\n/* special ordering of code length codes */\nvar clcidx = new Uint8Array([\n 16, 17, 18, 0, 8, 7, 9, 6,\n 10, 5, 11, 4, 12, 3, 13, 2,\n 14, 1, 15\n]);\n\n/* used by tinf_decode_trees, avoids allocations every call */\nvar code_tree = new Tree();\nvar lengths = new Uint8Array(288 + 32);\n\n/* ----------------------- *\n * -- utility functions -- *\n * ----------------------- */\n\n/* build extra bits and base tables */\nfunction tinf_build_bits_base(bits, base, delta, first) {\n var i, sum;\n\n /* build bits table */\n for (i = 0; i < delta; ++i) bits[i] = 0;\n for (i = 0; i < 30 - delta; ++i) bits[i + delta] = i / delta | 0;\n\n /* build base table */\n for (sum = first, i = 0; i < 30; ++i) {\n base[i] = sum;\n sum += 1 << bits[i];\n }\n}\n\n/* build the fixed huffman trees */\nfunction tinf_build_fixed_trees(lt, dt) {\n var i;\n\n /* build fixed length tree */\n for (i = 0; i < 7; ++i) lt.table[i] = 0;\n\n lt.table[7] = 24;\n lt.table[8] = 152;\n lt.table[9] = 112;\n\n for (i = 0; i < 24; ++i) lt.trans[i] = 256 + i;\n for (i = 0; i < 144; ++i) lt.trans[24 + i] = i;\n for (i = 0; i < 8; ++i) lt.trans[24 + 144 + i] = 280 + i;\n for (i = 0; i < 112; ++i) lt.trans[24 + 144 + 8 + i] = 144 + i;\n\n /* build fixed distance tree */\n for (i = 0; i < 5; ++i) dt.table[i] = 0;\n\n dt.table[5] = 32;\n\n for (i = 0; i < 32; ++i) dt.trans[i] = i;\n}\n\n/* given an array of code lengths, build a tree */\nvar offs = new Uint16Array(16);\n\nfunction tinf_build_tree(t, lengths, off, num) {\n var i, sum;\n\n /* clear code length count table */\n for (i = 0; i < 16; ++i) t.table[i] = 0;\n\n /* scan symbol lengths, and sum code length counts */\n for (i = 0; i < num; ++i) t.table[lengths[off + i]]++;\n\n t.table[0] = 0;\n\n /* compute offset table for distribution sort */\n for (sum = 0, i = 0; i < 16; ++i) {\n offs[i] = sum;\n sum += t.table[i];\n }\n\n /* create code->symbol translation table (symbols sorted by code) */\n for (i = 0; i < num; ++i) {\n if (lengths[off + i]) t.trans[offs[lengths[off + i]]++] = i;\n }\n}\n\n/* ---------------------- *\n * -- decode functions -- *\n * ---------------------- */\n\n/* get one bit from source stream */\nfunction tinf_getbit(d) {\n /* check if tag is empty */\n if (!d.bitcount--) {\n /* load next tag */\n d.tag = d.source[d.sourceIndex++];\n d.bitcount = 7;\n }\n\n /* shift bit out of tag */\n var bit = d.tag & 1;\n d.tag >>>= 1;\n\n return bit;\n}\n\n/* read a num bit value from a stream and add base */\nfunction tinf_read_bits(d, num, base) {\n if (!num)\n return base;\n\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n\n var val = d.tag & (0xffff >>> (16 - num));\n d.tag >>>= num;\n d.bitcount -= num;\n return val + base;\n}\n\n/* given a data stream and a tree, decode a symbol */\nfunction tinf_decode_symbol(d, t) {\n while (d.bitcount < 24) {\n d.tag |= d.source[d.sourceIndex++] << d.bitcount;\n d.bitcount += 8;\n }\n \n var sum = 0, cur = 0, len = 0;\n var tag = d.tag;\n\n /* get more bits while code value is above sum */\n do {\n cur = 2 * cur + (tag & 1);\n tag >>>= 1;\n ++len;\n\n sum += t.table[len];\n cur -= t.table[len];\n } while (cur >= 0);\n \n d.tag = tag;\n d.bitcount -= len;\n\n return t.trans[sum + cur];\n}\n\n/* given a data stream, decode dynamic trees from it */\nfunction tinf_decode_trees(d, lt, dt) {\n var hlit, hdist, hclen;\n var i, num, length;\n\n /* get 5 bits HLIT (257-286) */\n hlit = tinf_read_bits(d, 5, 257);\n\n /* get 5 bits HDIST (1-32) */\n hdist = tinf_read_bits(d, 5, 1);\n\n /* get 4 bits HCLEN (4-19) */\n hclen = tinf_read_bits(d, 4, 4);\n\n for (i = 0; i < 19; ++i) lengths[i] = 0;\n\n /* read code lengths for code length alphabet */\n for (i = 0; i < hclen; ++i) {\n /* get 3 bits code length (0-7) */\n var clen = tinf_read_bits(d, 3, 0);\n lengths[clcidx[i]] = clen;\n }\n\n /* build code length tree */\n tinf_build_tree(code_tree, lengths, 0, 19);\n\n /* decode code lengths for the dynamic trees */\n for (num = 0; num < hlit + hdist;) {\n var sym = tinf_decode_symbol(d, code_tree);\n\n switch (sym) {\n case 16:\n /* copy previous code length 3-6 times (read 2 bits) */\n var prev = lengths[num - 1];\n for (length = tinf_read_bits(d, 2, 3); length; --length) {\n lengths[num++] = prev;\n }\n break;\n case 17:\n /* repeat code length 0 for 3-10 times (read 3 bits) */\n for (length = tinf_read_bits(d, 3, 3); length; --length) {\n lengths[num++] = 0;\n }\n break;\n case 18:\n /* repeat code length 0 for 11-138 times (read 7 bits) */\n for (length = tinf_read_bits(d, 7, 11); length; --length) {\n lengths[num++] = 0;\n }\n break;\n default:\n /* values 0-15 represent the actual code lengths */\n lengths[num++] = sym;\n break;\n }\n }\n\n /* build dynamic trees */\n tinf_build_tree(lt, lengths, 0, hlit);\n tinf_build_tree(dt, lengths, hlit, hdist);\n}\n\n/* ----------------------------- *\n * -- block inflate functions -- *\n * ----------------------------- */\n\n/* given a stream and two trees, inflate a block of data */\nfunction tinf_inflate_block_data(d, lt, dt) {\n while (1) {\n var sym = tinf_decode_symbol(d, lt);\n\n /* check for end of block */\n if (sym === 256) {\n return TINF_OK;\n }\n\n if (sym < 256) {\n d.dest[d.destLen++] = sym;\n } else {\n var length, dist, offs;\n var i;\n\n sym -= 257;\n\n /* possibly get more bits from length code */\n length = tinf_read_bits(d, length_bits[sym], length_base[sym]);\n\n dist = tinf_decode_symbol(d, dt);\n\n /* possibly get more bits from distance code */\n offs = d.destLen - tinf_read_bits(d, dist_bits[dist], dist_base[dist]);\n\n /* copy match */\n for (i = offs; i < offs + length; ++i) {\n d.dest[d.destLen++] = d.dest[i];\n }\n }\n }\n}\n\n/* inflate an uncompressed block of data */\nfunction tinf_inflate_uncompressed_block(d) {\n var length, invlength;\n var i;\n \n /* unread from bitbuffer */\n while (d.bitcount > 8) {\n d.sourceIndex--;\n d.bitcount -= 8;\n }\n\n /* get length */\n length = d.source[d.sourceIndex + 1];\n length = 256 * length + d.source[d.sourceIndex];\n\n /* get one's complement of length */\n invlength = d.source[d.sourceIndex + 3];\n invlength = 256 * invlength + d.source[d.sourceIndex + 2];\n\n /* check length */\n if (length !== (~invlength & 0x0000ffff))\n return TINF_DATA_ERROR;\n\n d.sourceIndex += 4;\n\n /* copy block */\n for (i = length; i; --i)\n d.dest[d.destLen++] = d.source[d.sourceIndex++];\n\n /* make sure we start next block on a byte boundary */\n d.bitcount = 0;\n\n return TINF_OK;\n}\n\n/* inflate stream from source to dest */\nfunction tinf_uncompress(source, dest) {\n var d = new Data(source, dest);\n var bfinal, btype, res;\n\n do {\n /* read final block flag */\n bfinal = tinf_getbit(d);\n\n /* read block type (2 bits) */\n btype = tinf_read_bits(d, 2, 0);\n\n /* decompress block */\n switch (btype) {\n case 0:\n /* decompress uncompressed block */\n res = tinf_inflate_uncompressed_block(d);\n break;\n case 1:\n /* decompress block with fixed huffman trees */\n res = tinf_inflate_block_data(d, sltree, sdtree);\n break;\n case 2:\n /* decompress block with dynamic huffman trees */\n tinf_decode_trees(d, d.ltree, d.dtree);\n res = tinf_inflate_block_data(d, d.ltree, d.dtree);\n break;\n default:\n res = TINF_DATA_ERROR;\n }\n\n if (res !== TINF_OK)\n throw new Error('Data error');\n\n } while (!bfinal);\n\n if (d.destLen < d.dest.length) {\n if (typeof d.dest.slice === 'function')\n return d.dest.slice(0, d.destLen);\n else\n return d.dest.subarray(0, d.destLen);\n }\n \n return d.dest;\n}\n\n/* -------------------- *\n * -- initialization -- *\n * -------------------- */\n\n/* build fixed huffman trees */\ntinf_build_fixed_trees(sltree, sdtree);\n\n/* build extra bits and base tables */\ntinf_build_bits_base(length_bits, length_base, 4, 3);\ntinf_build_bits_base(dist_bits, dist_base, 2, 1);\n\n/* fix a special case */\nlength_bits[28] = 0;\nlength_base[28] = 258;\n\nmodule.exports = tinf_uncompress;\n","const isBigEndian = (new Uint8Array(new Uint32Array([0x12345678]).buffer)[0] === 0x12);\n\nconst swap = (b, n, m) => {\n let i = b[n];\n b[n] = b[m];\n b[m] = i;\n};\n\nconst swap32 = array => {\n const len = array.length;\n for (let i = 0; i < len; i += 4) {\n swap(array, i, i + 3);\n swap(array, i + 1, i + 2);\n }\n};\n\nconst swap32LE = array => {\n if (isBigEndian) {\n swap32(array);\n }\n};\n\nmodule.exports = {\n swap32LE: swap32LE\n};\n","const inflate = require('tiny-inflate');\nconst { swap32LE } = require('./swap');\n\n// Shift size for getting the index-1 table offset.\nconst SHIFT_1 = 6 + 5;\n\n// Shift size for getting the index-2 table offset.\nconst SHIFT_2 = 5;\n\n// Difference between the two shift sizes,\n// for getting an index-1 offset from an index-2 offset. 6=11-5\nconst SHIFT_1_2 = SHIFT_1 - SHIFT_2;\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.\nconst OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> SHIFT_1;\n\n// Number of entries in an index-2 block. 64=0x40\nconst INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;\n\n// Mask for getting the lower bits for the in-index-2-block offset. */\nconst INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;\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 DATA_GRANULARITY.\nconst INDEX_SHIFT = 2;\n\n// Number of entries in a data block. 32=0x20\nconst DATA_BLOCK_LENGTH = 1 << SHIFT_2;\n\n// Mask for getting the lower bits for the in-data-block offset.\nconst DATA_MASK = DATA_BLOCK_LENGTH - 1;\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>>SHIFT_2. (There are 1024=0x400 lead surrogates.)\nconst LSCP_INDEX_2_OFFSET = 0x10000 >> SHIFT_2;\nconst LSCP_INDEX_2_LENGTH = 0x400 >> SHIFT_2;\n\n// Count the lengths of both BMP pieces. 2080=0x820\nconst INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + 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 SHIFT_2.\nconst UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;\nconst 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>>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.\nconst INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;\n\n// The alignment size of a data block. Also the granularity for compaction.\nconst DATA_GRANULARITY = 1 << INDEX_SHIFT;\n\nclass UnicodeTrie {\n constructor(data) {\n const isBuffer = (typeof data.readUInt32BE === 'function') && (typeof data.slice === 'function');\n\n if (isBuffer || data instanceof Uint8Array) {\n // read binary format\n let uncompressedLength;\n if (isBuffer) {\n this.highStart = data.readUInt32LE(0);\n this.errorValue = data.readUInt32LE(4);\n uncompressedLength = data.readUInt32LE(8);\n data = data.slice(12);\n } else {\n const view = new DataView(data.buffer);\n this.highStart = view.getUint32(0, true);\n this.errorValue = view.getUint32(4, true);\n uncompressedLength = view.getUint32(8, true);\n data = data.subarray(12);\n }\n\n // double inflate the actual trie data\n data = inflate(data, new Uint8Array(uncompressedLength));\n data = inflate(data, new Uint8Array(uncompressedLength));\n\n // swap bytes from little-endian\n swap32LE(data);\n\n this.data = new Uint32Array(data.buffer);\n\n } else {\n // pre-parsed data\n ({ data: this.data, highStart: this.highStart, errorValue: this.errorValue } = data);\n }\n }\n\n get(codePoint) {\n let index;\n if ((codePoint < 0) || (codePoint > 0x10ffff)) {\n return this.errorValue;\n }\n\n if ((codePoint < 0xd800) || ((codePoint > 0xdbff) && (codePoint <= 0xffff))) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the index.\n // data is stored in the index array itself.\n index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\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 index = (this.data[LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n index = this.data[(INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH) + (codePoint >> SHIFT_1)];\n index = this.data[index + ((codePoint >> SHIFT_2) & INDEX_2_MASK)];\n index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);\n return this.data[index];\n }\n\n return this.data[this.data.length - DATA_GRANULARITY];\n }\n}\n\nmodule.exports = UnicodeTrie;","var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n;(function (exports) {\n\t'use strict';\n\n var Arr = (typeof Uint8Array !== 'undefined')\n ? Uint8Array\n : Array\n\n\tvar PLUS = '+'.charCodeAt(0)\n\tvar SLASH = '/'.charCodeAt(0)\n\tvar NUMBER = '0'.charCodeAt(0)\n\tvar LOWER = 'a'.charCodeAt(0)\n\tvar UPPER = 'A'.charCodeAt(0)\n\tvar PLUS_URL_SAFE = '-'.charCodeAt(0)\n\tvar SLASH_URL_SAFE = '_'.charCodeAt(0)\n\n\tfunction decode (elt) {\n\t\tvar code = elt.charCodeAt(0)\n\t\tif (code === PLUS ||\n\t\t code === PLUS_URL_SAFE)\n\t\t\treturn 62 // '+'\n\t\tif (code === SLASH ||\n\t\t code === SLASH_URL_SAFE)\n\t\t\treturn 63 // '/'\n\t\tif (code < NUMBER)\n\t\t\treturn -1 //no match\n\t\tif (code < NUMBER + 10)\n\t\t\treturn code - NUMBER + 26 + 26\n\t\tif (code < UPPER + 26)\n\t\t\treturn code - UPPER\n\t\tif (code < LOWER + 26)\n\t\t\treturn code - LOWER + 26\n\t}\n\n\tfunction b64ToByteArray (b64) {\n\t\tvar i, j, l, tmp, placeHolders, arr\n\n\t\tif (b64.length % 4 > 0) {\n\t\t\tthrow new Error('Invalid string. Length must be a multiple of 4')\n\t\t}\n\n\t\t// the number of equal signs (place holders)\n\t\t// if there are two placeholders, than the two characters before it\n\t\t// represent one byte\n\t\t// if there is only one, then the three characters before it represent 2 bytes\n\t\t// this is just a cheap hack to not do indexOf twice\n\t\tvar len = b64.length\n\t\tplaceHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0\n\n\t\t// base64 is 4/3 + up to two characters of the original data\n\t\tarr = new Arr(b64.length * 3 / 4 - placeHolders)\n\n\t\t// if there are placeholders, only get up to the last complete 4 chars\n\t\tl = placeHolders > 0 ? b64.length - 4 : b64.length\n\n\t\tvar L = 0\n\n\t\tfunction push (v) {\n\t\t\tarr[L++] = v\n\t\t}\n\n\t\tfor (i = 0, j = 0; i < l; i += 4, j += 3) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))\n\t\t\tpush((tmp & 0xFF0000) >> 16)\n\t\t\tpush((tmp & 0xFF00) >> 8)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\tif (placeHolders === 2) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)\n\t\t\tpush(tmp & 0xFF)\n\t\t} else if (placeHolders === 1) {\n\t\t\ttmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)\n\t\t\tpush((tmp >> 8) & 0xFF)\n\t\t\tpush(tmp & 0xFF)\n\t\t}\n\n\t\treturn arr\n\t}\n\n\tfunction uint8ToBase64 (uint8) {\n\t\tvar i,\n\t\t\textraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes\n\t\t\toutput = \"\",\n\t\t\ttemp, length\n\n\t\tfunction encode (num) {\n\t\t\treturn lookup.charAt(num)\n\t\t}\n\n\t\tfunction tripletToBase64 (num) {\n\t\t\treturn encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)\n\t\t}\n\n\t\t// go through the array every three bytes, we'll deal with trailing stuff later\n\t\tfor (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {\n\t\t\ttemp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n\t\t\toutput += tripletToBase64(temp)\n\t\t}\n\n\t\t// pad the end with zeros, but make sure to not forget the extra bytes\n\t\tswitch (extraBytes) {\n\t\t\tcase 1:\n\t\t\t\ttemp = uint8[uint8.length - 1]\n\t\t\t\toutput += encode(temp >> 2)\n\t\t\t\toutput += encode((temp << 4) & 0x3F)\n\t\t\t\toutput += '=='\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\ttemp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])\n\t\t\t\toutput += encode(temp >> 10)\n\t\t\t\toutput += encode((temp >> 4) & 0x3F)\n\t\t\t\toutput += encode((temp << 2) & 0x3F)\n\t\t\t\toutput += '='\n\t\t\t\tbreak\n\t\t}\n\n\t\treturn output\n\t}\n\n\texports.toByteArray = b64ToByteArray\n\texports.fromByteArray = uint8ToBase64\n}(typeof exports === 'undefined' ? (this.base64js = {}) : exports))\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\nvar uLower = \"u\".charCodeAt(0);\nvar uUpper = \"U\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar isUnicodeRange = /^[a-f0-9?-]+$/i;\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next,\n quote,\n prev,\n token,\n escape,\n escapePos,\n whitespacePos,\n parenthesesOpenPos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n prev.sourceEndIndex += token.length;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash &&\n value.charCodeAt(next + 1) !== star &&\n (!parent ||\n (parent && parent.type === \"function\" && parent.value !== \"calc\")))\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n token.sourceEndIndex = token.unclosed ? next : next + 1;\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n next = value.indexOf(\"*/\", pos);\n\n token = {\n type: \"comment\",\n sourceIndex: pos,\n sourceEndIndex: next + 2\n };\n\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n token.sourceEndIndex = next;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Operation within calc\n } else if (\n (code === slash || code === star) &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\"\n ) {\n token = value[pos];\n tokens.push({\n type: \"word\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token\n });\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n parenthesesOpenPos = pos;\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(parenthesesOpenPos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (parenthesesOpenPos < whitespacePos) {\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: whitespacePos + 1,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n sourceEndIndex: next,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n token.sourceEndIndex = next;\n }\n } else {\n token.after = \"\";\n token.nodes = [];\n }\n pos = next + 1;\n token.sourceEndIndex = token.unclosed ? next : pos;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n token.sourceEndIndex = pos + 1;\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n parent.sourceEndIndex += after.length;\n after = \"\";\n balanced -= 1;\n stack[stack.length - 1].sourceEndIndex = pos;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === star &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === slash &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else if (\n (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&\n plus === token.charCodeAt(1) &&\n isUnicodeRange.test(token.slice(2))\n ) {\n tokens.push({\n type: \"unicode-range\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n stack[pos].sourceEndIndex = value.length;\n }\n\n return stack[0].nodes;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes, custom);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\n// Check if three code points would start a number\n// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number\nfunction likeNumber(value) {\n var code = value.charCodeAt(0);\n var nextCode;\n\n if (code === plus || code === minus) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n var nextNextCode = value.charCodeAt(2);\n\n if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code === dot) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code >= 48 && code <= 57) {\n return true;\n }\n\n return false;\n}\n\n// Consume a number\n// https://www.w3.org/TR/css-syntax-3/#consume-number\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var code;\n var nextCode;\n var nextNextCode;\n\n if (length === 0 || !likeNumber(value)) {\n return false;\n }\n\n code = value.charCodeAt(pos);\n\n if (code === plus || code === minus) {\n pos++;\n }\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n\n if (code === dot && nextCode >= 48 && nextCode <= 57) {\n pos += 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n nextNextCode = value.charCodeAt(pos + 2);\n\n if (\n (code === exp || code === EXP) &&\n ((nextCode >= 48 && nextCode <= 57) ||\n ((nextCode === plus || nextCode === minus) &&\n nextNextCode >= 48 &&\n nextNextCode <= 57))\n ) {\n pos += nextCode === plus || nextCode === minus ? 3 : 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n return {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n };\n};\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","'use strict';\n\nmodule.exports = function (obj) {\n\tif (typeof obj === 'string') { return camelCase(obj); }\n\treturn walk(obj);\n};\n\nfunction walk(obj) {\n\tif (!obj || typeof obj !== 'object') { return obj; }\n\tif (isDate(obj) || isRegex(obj)) { return obj; }\n\tif (isArray(obj)) { return map(obj, walk); }\n\treturn reduce(objectKeys(obj), function (acc, key) {\n\t\tvar camel = camelCase(key);\n\t\tacc[camel] = walk(obj[key]);\n\t\treturn acc;\n\t}, {});\n}\n\nfunction camelCase(str) {\n\treturn str.replace(/[_.-](\\w|$)/g, function (_, x) {\n\t\treturn x.toUpperCase();\n\t});\n}\n\nvar isArray = Array.isArray || function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Array]';\n};\n\nvar isDate = function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object Date]';\n};\n\nvar isRegex = function (obj) {\n\treturn Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar has = Object.prototype.hasOwnProperty;\nvar objectKeys = Object.keys || function (obj) {\n\tvar keys = [];\n\tfor (var key in obj) {\n\t\tif (has.call(obj, key)) { keys.push(key); }\n\t}\n\treturn keys;\n};\n\nfunction map(xs, f) {\n\tif (xs.map) { return xs.map(f); }\n\tvar res = [];\n\tfor (var i = 0; i < xs.length; i++) {\n\t\tres.push(f(xs[i], i));\n\t}\n\treturn res;\n}\n\nfunction reduce(xs, f, acc) {\n\tif (xs.reduce) { return xs.reduce(f, acc); }\n\tfor (var i = 0; i < xs.length; i++) {\n\t\tacc = f(acc, xs[i], i);\n\t}\n\treturn acc;\n}\n","{\n \"black\": \"#000000\",\n \"silver\": \"#c0c0c0\",\n \"gray\": \"#808080\",\n \"white\": \"#ffffff\",\n \"maroon\": \"#800000\",\n \"red\": \"#ff0000\",\n \"purple\": \"#800080\",\n \"fuchsia\": \"#ff00ff\",\n \"green\": \"#008000\",\n \"lime\": \"#00ff00\",\n \"olive\": \"#808000\",\n \"yellow\": \"#ffff00\",\n \"navy\": \"#000080\",\n \"blue\": \"#0000ff\",\n \"teal\": \"#008080\",\n \"aqua\": \"#00ffff\",\n \"orange\": \"#ffa500\",\n \"aliceblue\": \"#f0f8ff\",\n \"antiquewhite\": \"#faebd7\",\n \"aquamarine\": \"#7fffd4\",\n \"azure\": \"#f0ffff\",\n \"beige\": \"#f5f5dc\",\n \"bisque\": \"#ffe4c4\",\n \"blanchedalmond\": \"#ffebcd\",\n \"blueviolet\": \"#8a2be2\",\n \"brown\": \"#a52a2a\",\n \"burlywood\": \"#deb887\",\n \"cadetblue\": \"#5f9ea0\",\n \"chartreuse\": \"#7fff00\",\n \"chocolate\": \"#d2691e\",\n \"coral\": \"#ff7f50\",\n \"cornflowerblue\": \"#6495ed\",\n \"cornsilk\": \"#fff8dc\",\n \"crimson\": \"#dc143c\",\n \"darkblue\": \"#00008b\",\n \"darkcyan\": \"#008b8b\",\n \"darkgoldenrod\": \"#b8860b\",\n \"darkgray\": \"#a9a9a9\",\n \"darkgreen\": \"#006400\",\n \"darkgrey\": \"#a9a9a9\",\n \"darkkhaki\": \"#bdb76b\",\n \"darkmagenta\": \"#8b008b\",\n \"darkolivegreen\": \"#556b2f\",\n \"darkorange\": \"#ff8c00\",\n \"darkorchid\": \"#9932cc\",\n \"darkred\": \"#8b0000\",\n \"darksalmon\": \"#e9967a\",\n \"darkseagreen\": \"#8fbc8f\",\n \"darkslateblue\": \"#483d8b\",\n \"darkslategray\": \"#2f4f4f\",\n \"darkslategrey\": \"#2f4f4f\",\n \"darkturquoise\": \"#00ced1\",\n \"darkviolet\": \"#9400d3\",\n \"deeppink\": \"#ff1493\",\n \"deepskyblue\": \"#00bfff\",\n \"dimgray\": \"#696969\",\n \"dimgrey\": \"#696969\",\n \"dodgerblue\": \"#1e90ff\",\n \"firebrick\": \"#b22222\",\n \"floralwhite\": \"#fffaf0\",\n \"forestgreen\": \"#228b22\",\n \"gainsboro\": \"#dcdcdc\",\n \"ghostwhite\": \"#f8f8ff\",\n \"gold\": \"#ffd700\",\n \"goldenrod\": \"#daa520\",\n \"greenyellow\": \"#adff2f\",\n \"grey\": \"#808080\",\n \"honeydew\": \"#f0fff0\",\n \"hotpink\": \"#ff69b4\",\n \"indianred\": \"#cd5c5c\",\n \"indigo\": \"#4b0082\",\n \"ivory\": \"#fffff0\",\n \"khaki\": \"#f0e68c\",\n \"lavender\": \"#e6e6fa\",\n \"lavenderblush\": \"#fff0f5\",\n \"lawngreen\": \"#7cfc00\",\n \"lemonchiffon\": \"#fffacd\",\n \"lightblue\": \"#add8e6\",\n \"lightcoral\": \"#f08080\",\n \"lightcyan\": \"#e0ffff\",\n \"lightgoldenrodyellow\": \"#fafad2\",\n \"lightgray\": \"#d3d3d3\",\n \"lightgreen\": \"#90ee90\",\n \"lightgrey\": \"#d3d3d3\",\n \"lightpink\": \"#ffb6c1\",\n \"lightsalmon\": \"#ffa07a\",\n \"lightseagreen\": \"#20b2aa\",\n \"lightskyblue\": \"#87cefa\",\n \"lightslategray\": \"#778899\",\n \"lightslategrey\": \"#778899\",\n \"lightsteelblue\": \"#b0c4de\",\n \"lightyellow\": \"#ffffe0\",\n \"limegreen\": \"#32cd32\",\n \"linen\": \"#faf0e6\",\n \"mediumaquamarine\": \"#66cdaa\",\n \"mediumblue\": \"#0000cd\",\n \"mediumorchid\": \"#ba55d3\",\n \"mediumpurple\": \"#9370db\",\n \"mediumseagreen\": \"#3cb371\",\n \"mediumslateblue\": \"#7b68ee\",\n \"mediumspringgreen\": \"#00fa9a\",\n \"mediumturquoise\": \"#48d1cc\",\n \"mediumvioletred\": \"#c71585\",\n \"midnightblue\": \"#191970\",\n \"mintcream\": \"#f5fffa\",\n \"mistyrose\": \"#ffe4e1\",\n \"moccasin\": \"#ffe4b5\",\n \"navajowhite\": \"#ffdead\",\n \"oldlace\": \"#fdf5e6\",\n \"olivedrab\": \"#6b8e23\",\n \"orangered\": \"#ff4500\",\n \"orchid\": \"#da70d6\",\n \"palegoldenrod\": \"#eee8aa\",\n \"palegreen\": \"#98fb98\",\n \"paleturquoise\": \"#afeeee\",\n \"palevioletred\": \"#db7093\",\n \"papayawhip\": \"#ffefd5\",\n \"peachpuff\": \"#ffdab9\",\n \"peru\": \"#cd853f\",\n \"pink\": \"#ffc0cb\",\n \"plum\": \"#dda0dd\",\n \"powderblue\": \"#b0e0e6\",\n \"rosybrown\": \"#bc8f8f\",\n \"royalblue\": \"#4169e1\",\n \"saddlebrown\": \"#8b4513\",\n \"salmon\": \"#fa8072\",\n \"sandybrown\": \"#f4a460\",\n \"seagreen\": \"#2e8b57\",\n \"seashell\": \"#fff5ee\",\n \"sienna\": \"#a0522d\",\n \"skyblue\": \"#87ceeb\",\n \"slateblue\": \"#6a5acd\",\n \"slategray\": \"#708090\",\n \"slategrey\": \"#708090\",\n \"snow\": \"#fffafa\",\n \"springgreen\": \"#00ff7f\",\n \"steelblue\": \"#4682b4\",\n \"tan\": \"#d2b48c\",\n \"thistle\": \"#d8bfd8\",\n \"tomato\": \"#ff6347\",\n \"turquoise\": \"#40e0d0\",\n \"violet\": \"#ee82ee\",\n \"wheat\": \"#f5deb3\",\n \"whitesmoke\": \"#f5f5f5\",\n \"yellowgreen\": \"#9acd32\",\n \"rebeccapurple\": \"#663399\"\n}\n","'use strict'\n\nmodule.exports = require('./colors.json')\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar parse = require('postcss-value-parser');\n\nvar parse__default = _interopDefault(parse);\n\nvar camelizeStyleName = _interopDefault(require('camelize'));\n\nvar cssColorKeywords = _interopDefault(require('css-color-keywords'));\n\nvar matchString = function matchString(node) {\n if (node.type !== 'string') return null;\n return node.value.replace(/\\\\([0-9a-f]{1,6})(?:\\s|$)/gi, function (match, charCode) {\n return String.fromCharCode(parseInt(charCode, 16));\n }).replace(/\\\\/g, '');\n};\n\nvar hexColorRe = /^(#(?:[0-9a-f]{3,4}){1,2})$/i;\nvar cssFunctionNameRe = /^(rgba?|hsla?|hwb|lab|lch|gray|color)$/;\n\nvar matchColor = function matchColor(node) {\n if (node.type === 'word' && (hexColorRe.test(node.value) || node.value in cssColorKeywords || node.value === 'transparent')) {\n return node.value;\n } else if (node.type === 'function' && cssFunctionNameRe.test(node.value)) {\n return parse.stringify(node);\n }\n\n return null;\n};\n\nvar noneRe = /^(none)$/i;\nvar autoRe = /^(auto)$/i;\nvar identRe = /(^-?[_a-z][_a-z0-9-]*$)/i; // Note if these are wrong, you'll need to change index.js too\n\nvar numberRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)$/i; // Note lengthRe is sneaky: you can omit units for 0\n\nvar lengthRe = /^(0$|(?:[+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)(?=px$))/i;\nvar unsupportedUnitRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?(ch|em|ex|rem|vh|vw|vmin|vmax|cm|mm|in|pc|pt))$/i;\nvar angleRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?(?:deg|rad))$/i;\nvar percentRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?%)$/i;\n\nvar noopToken = function noopToken(predicate) {\n return function (node) {\n return predicate(node) ? '' : null;\n };\n};\n\nvar valueForTypeToken = function valueForTypeToken(type) {\n return function (node) {\n return node.type === type ? node.value : null;\n };\n};\n\nvar regExpToken = function regExpToken(regExp, transform) {\n if (transform === void 0) {\n transform = String;\n }\n\n return function (node) {\n if (node.type !== 'word') return null;\n var match = node.value.match(regExp);\n if (match === null) return null;\n var value = transform(match[1]);\n return value;\n };\n};\n\nvar SPACE = noopToken(function (node) {\n return node.type === 'space';\n});\nvar SLASH = noopToken(function (node) {\n return node.type === 'div' && node.value === '/';\n});\nvar COMMA = noopToken(function (node) {\n return node.type === 'div' && node.value === ',';\n});\nvar WORD = valueForTypeToken('word');\nvar NONE = regExpToken(noneRe);\nvar AUTO = regExpToken(autoRe);\nvar NUMBER = regExpToken(numberRe, Number);\nvar LENGTH = regExpToken(lengthRe, Number);\nvar UNSUPPORTED_LENGTH_UNIT = regExpToken(unsupportedUnitRe);\nvar ANGLE = regExpToken(angleRe, function (angle) {\n return angle.toLowerCase();\n});\nvar PERCENT = regExpToken(percentRe);\nvar IDENT = regExpToken(identRe);\nvar STRING = matchString;\nvar COLOR = matchColor;\nvar LINE = regExpToken(/^(none|underline|line-through)$/i);\n\nvar aspectRatio = function aspectRatio(tokenStream) {\n var aspectRatio = tokenStream.expect(NUMBER);\n\n if (tokenStream.hasTokens()) {\n tokenStream.expect(SLASH);\n aspectRatio /= tokenStream.expect(NUMBER);\n }\n\n return {\n aspectRatio: aspectRatio\n };\n};\n\nvar BORDER_STYLE = regExpToken(/^(solid|dashed|dotted)$/);\nvar defaultBorderWidth = 1;\nvar defaultBorderColor = 'black';\nvar defaultBorderStyle = 'solid';\n\nvar border = function border(tokenStream) {\n var borderWidth;\n var borderColor;\n var borderStyle;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n borderWidth: 0,\n borderColor: 'black',\n borderStyle: 'solid'\n };\n }\n\n var partsParsed = 0;\n\n while (partsParsed < 3 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (borderWidth === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n borderWidth = tokenStream.lastValue;\n } else if (borderColor === undefined && tokenStream.matches(COLOR)) {\n borderColor = tokenStream.lastValue;\n } else if (borderStyle === undefined && tokenStream.matches(BORDER_STYLE)) {\n borderStyle = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (borderWidth === undefined) borderWidth = defaultBorderWidth;\n if (borderColor === undefined) borderColor = defaultBorderColor;\n if (borderStyle === undefined) borderStyle = defaultBorderStyle;\n return {\n borderWidth: borderWidth,\n borderColor: borderColor,\n borderStyle: borderStyle\n };\n};\n\nvar directionFactory = function directionFactory(_ref) {\n var _ref$types = _ref.types,\n types = _ref$types === void 0 ? [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT] : _ref$types,\n _ref$directions = _ref.directions,\n directions = _ref$directions === void 0 ? ['Top', 'Right', 'Bottom', 'Left'] : _ref$directions,\n _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === void 0 ? '' : _ref$prefix,\n _ref$suffix = _ref.suffix,\n suffix = _ref$suffix === void 0 ? '' : _ref$suffix;\n return function (tokenStream) {\n var _ref2;\n\n var values = []; // borderWidth doesn't currently allow a percent value, but may do in the future\n\n values.push(tokenStream.expect.apply(tokenStream, types));\n\n while (values.length < 4 && tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n values.push(tokenStream.expect.apply(tokenStream, types));\n }\n\n tokenStream.expectEmpty();\n var top = values[0],\n _values$ = values[1],\n right = _values$ === void 0 ? top : _values$,\n _values$2 = values[2],\n bottom = _values$2 === void 0 ? top : _values$2,\n _values$3 = values[3],\n left = _values$3 === void 0 ? right : _values$3;\n\n var keyFor = function keyFor(n) {\n return \"\" + prefix + directions[n] + suffix;\n };\n\n return _ref2 = {}, _ref2[keyFor(0)] = top, _ref2[keyFor(1)] = right, _ref2[keyFor(2)] = bottom, _ref2[keyFor(3)] = left, _ref2;\n };\n};\n\nvar parseShadowOffset = function parseShadowOffset(tokenStream) {\n var width = tokenStream.expect(LENGTH);\n var height = tokenStream.matches(SPACE) ? tokenStream.expect(LENGTH) : width;\n tokenStream.expectEmpty();\n return {\n width: width,\n height: height\n };\n};\n\nvar parseShadow = function parseShadow(tokenStream) {\n var offsetX;\n var offsetY;\n var radius;\n var color;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n offset: {\n width: 0,\n height: 0\n },\n radius: 0,\n color: 'black'\n };\n }\n\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n\n if (offsetX === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n offsetX = tokenStream.lastValue;\n tokenStream.expect(SPACE);\n offsetY = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE) && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT)) {\n radius = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (color === undefined && tokenStream.matches(COLOR)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n didParseFirst = true;\n }\n\n if (offsetX === undefined) tokenStream[\"throw\"]();\n return {\n offset: {\n width: offsetX,\n height: offsetY\n },\n radius: radius !== undefined ? radius : 0,\n color: color !== undefined ? color : 'black'\n };\n};\n\nvar boxShadow = function boxShadow(tokenStream) {\n var _parseShadow = parseShadow(tokenStream),\n offset = _parseShadow.offset,\n radius = _parseShadow.radius,\n color = _parseShadow.color;\n\n return {\n shadowOffset: offset,\n shadowRadius: radius,\n shadowColor: color,\n shadowOpacity: 1\n };\n};\n\nvar defaultFlexGrow = 1;\nvar defaultFlexShrink = 1;\nvar defaultFlexBasis = 0;\n\nvar flex = function flex(tokenStream) {\n var flexGrow;\n var flexShrink;\n var flexBasis;\n\n if (tokenStream.matches(NONE)) {\n tokenStream.expectEmpty();\n return {\n flexGrow: 0,\n flexShrink: 0,\n flexBasis: 'auto'\n };\n }\n\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(AUTO) && !tokenStream.hasTokens()) {\n return {\n flexGrow: 1,\n flexShrink: 1,\n flexBasis: 'auto'\n };\n }\n\n tokenStream.rewind();\n var partsParsed = 0;\n\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (flexGrow === undefined && tokenStream.matches(NUMBER)) {\n flexGrow = tokenStream.lastValue;\n tokenStream.saveRewindPoint();\n\n if (tokenStream.matches(SPACE) && tokenStream.matches(NUMBER)) {\n flexShrink = tokenStream.lastValue;\n } else {\n tokenStream.rewind();\n }\n } else if (flexBasis === undefined && tokenStream.matches(LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT)) {\n flexBasis = tokenStream.lastValue;\n } else if (flexBasis === undefined && tokenStream.matches(AUTO)) {\n flexBasis = 'auto';\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (flexGrow === undefined) flexGrow = defaultFlexGrow;\n if (flexShrink === undefined) flexShrink = defaultFlexShrink;\n if (flexBasis === undefined) flexBasis = defaultFlexBasis;\n return {\n flexGrow: flexGrow,\n flexShrink: flexShrink,\n flexBasis: flexBasis\n };\n};\n\nvar FLEX_WRAP = regExpToken(/(nowrap|wrap|wrap-reverse)/);\nvar FLEX_DIRECTION = regExpToken(/(row|row-reverse|column|column-reverse)/);\nvar defaultFlexWrap = 'nowrap';\nvar defaultFlexDirection = 'row';\n\nvar flexFlow = function flexFlow(tokenStream) {\n var flexWrap;\n var flexDirection;\n var partsParsed = 0;\n\n while (partsParsed < 2 && tokenStream.hasTokens()) {\n if (partsParsed !== 0) tokenStream.expect(SPACE);\n\n if (flexWrap === undefined && tokenStream.matches(FLEX_WRAP)) {\n flexWrap = tokenStream.lastValue;\n } else if (flexDirection === undefined && tokenStream.matches(FLEX_DIRECTION)) {\n flexDirection = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n partsParsed += 1;\n }\n\n tokenStream.expectEmpty();\n if (flexWrap === undefined) flexWrap = defaultFlexWrap;\n if (flexDirection === undefined) flexDirection = defaultFlexDirection;\n return {\n flexWrap: flexWrap,\n flexDirection: flexDirection\n };\n};\n\nvar fontFamily = function fontFamily(tokenStream) {\n var fontFamily;\n\n if (tokenStream.matches(STRING)) {\n fontFamily = tokenStream.lastValue;\n } else {\n fontFamily = tokenStream.expect(IDENT);\n\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n var nextIdent = tokenStream.expect(IDENT);\n fontFamily += \" \" + nextIdent;\n }\n }\n\n tokenStream.expectEmpty();\n return {\n fontFamily: fontFamily\n };\n};\n\nvar NORMAL = regExpToken(/^(normal)$/);\nvar STYLE = regExpToken(/^(italic)$/);\nvar WEIGHT = regExpToken(/^([1-9]00|bold)$/);\nvar VARIANT = regExpToken(/^(small-caps)$/);\nvar defaultFontStyle = 'normal';\nvar defaultFontWeight = 'normal';\nvar defaultFontVariant = [];\n\nvar font = function font(tokenStream) {\n var fontStyle;\n var fontWeight;\n var fontVariant; // let fontSize;\n\n var lineHeight; // let fontFamily;\n\n var numStyleWeightVariantMatched = 0;\n\n while (numStyleWeightVariantMatched < 3 && tokenStream.hasTokens()) {\n if (tokenStream.matches(NORMAL)) ;else if (fontStyle === undefined && tokenStream.matches(STYLE)) {\n fontStyle = tokenStream.lastValue;\n } else if (fontWeight === undefined && tokenStream.matches(WEIGHT)) {\n fontWeight = tokenStream.lastValue;\n } else if (fontVariant === undefined && tokenStream.matches(VARIANT)) {\n fontVariant = [tokenStream.lastValue];\n } else {\n break;\n }\n tokenStream.expect(SPACE);\n numStyleWeightVariantMatched += 1;\n }\n\n var fontSize = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n\n if (tokenStream.matches(SLASH)) {\n lineHeight = tokenStream.expect(LENGTH, UNSUPPORTED_LENGTH_UNIT);\n }\n\n tokenStream.expect(SPACE);\n\n var _fontFamily = fontFamily(tokenStream),\n fontFamily$1 = _fontFamily.fontFamily;\n\n if (fontStyle === undefined) fontStyle = defaultFontStyle;\n if (fontWeight === undefined) fontWeight = defaultFontWeight;\n if (fontVariant === undefined) fontVariant = defaultFontVariant;\n var out = {\n fontStyle: fontStyle,\n fontWeight: fontWeight,\n fontVariant: fontVariant,\n fontSize: fontSize,\n fontFamily: fontFamily$1\n };\n if (lineHeight !== undefined) out.lineHeight = lineHeight;\n return out;\n};\n\nvar fontVariant = function fontVariant(tokenStream) {\n var values = [tokenStream.expect(IDENT)];\n\n while (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n values.push(tokenStream.expect(IDENT));\n }\n\n return {\n fontVariant: values\n };\n};\n\nvar ALIGN_CONTENT = regExpToken(/(flex-(?:start|end)|center|stretch|space-(?:between|around))/);\nvar JUSTIFY_CONTENT = regExpToken(/(flex-(?:start|end)|center|space-(?:between|around|evenly))/);\n\nvar placeContent = function placeContent(tokenStream) {\n var alignContent = tokenStream.expect(ALIGN_CONTENT);\n var justifyContent;\n\n if (tokenStream.hasTokens()) {\n tokenStream.expect(SPACE);\n justifyContent = tokenStream.expect(JUSTIFY_CONTENT);\n } else {\n justifyContent = 'stretch';\n }\n\n tokenStream.expectEmpty();\n return {\n alignContent: alignContent,\n justifyContent: justifyContent\n };\n};\n\nvar STYLE$1 = regExpToken(/^(solid|double|dotted|dashed)$/);\nvar defaultTextDecorationLine = 'none';\nvar defaultTextDecorationStyle = 'solid';\nvar defaultTextDecorationColor = 'black';\n\nvar textDecoration = function textDecoration(tokenStream) {\n var line;\n var style;\n var color;\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n\n if (line === undefined && tokenStream.matches(LINE)) {\n var lines = [tokenStream.lastValue.toLowerCase()];\n tokenStream.saveRewindPoint();\n\n if (lines[0] !== 'none' && tokenStream.matches(SPACE) && tokenStream.matches(LINE)) {\n lines.push(tokenStream.lastValue.toLowerCase()); // Underline comes before line-through\n\n lines.sort().reverse();\n } else {\n tokenStream.rewind();\n }\n\n line = lines.join(' ');\n } else if (style === undefined && tokenStream.matches(STYLE$1)) {\n style = tokenStream.lastValue;\n } else if (color === undefined && tokenStream.matches(COLOR)) {\n color = tokenStream.lastValue;\n } else {\n tokenStream[\"throw\"]();\n }\n\n didParseFirst = true;\n }\n\n return {\n textDecorationLine: line !== undefined ? line : defaultTextDecorationLine,\n textDecorationColor: color !== undefined ? color : defaultTextDecorationColor,\n textDecorationStyle: style !== undefined ? style : defaultTextDecorationStyle\n };\n};\n\nvar textDecorationLine = function textDecorationLine(tokenStream) {\n var lines = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n lines.push(tokenStream.expect(LINE).toLowerCase());\n didParseFirst = true;\n }\n\n lines.sort().reverse();\n return {\n textDecorationLine: lines.join(' ')\n };\n};\n\nvar textShadow = function textShadow(tokenStream) {\n var _parseShadow2 = parseShadow(tokenStream),\n offset = _parseShadow2.offset,\n radius = _parseShadow2.radius,\n color = _parseShadow2.color;\n\n return {\n textShadowOffset: offset,\n textShadowRadius: radius,\n textShadowColor: color\n };\n};\n\nvar oneOfType = function oneOfType(tokenType) {\n return function (functionStream) {\n var value = functionStream.expect(tokenType);\n functionStream.expectEmpty();\n return value;\n };\n};\n\nvar singleNumber = oneOfType(NUMBER);\nvar singleLength = oneOfType(LENGTH);\nvar singleAngle = oneOfType(ANGLE);\n\nvar xyTransformFactory = function xyTransformFactory(tokenType) {\n return function (key, valueIfOmitted) {\n return function (functionStream) {\n var _ref3, _ref4;\n\n var x = functionStream.expect(tokenType);\n var y;\n\n if (functionStream.hasTokens()) {\n functionStream.expect(COMMA);\n y = functionStream.expect(tokenType);\n } else if (valueIfOmitted !== undefined) {\n y = valueIfOmitted;\n } else {\n // Assumption, if x === y, then we can omit XY\n // I.e. scale(5) => [{ scale: 5 }] rather than [{ scaleX: 5 }, { scaleY: 5 }]\n return x;\n }\n\n functionStream.expectEmpty();\n return [(_ref3 = {}, _ref3[key + \"Y\"] = y, _ref3), (_ref4 = {}, _ref4[key + \"X\"] = x, _ref4)];\n };\n };\n};\n\nvar xyNumber = xyTransformFactory(NUMBER);\nvar xyLength = xyTransformFactory(LENGTH);\nvar xyAngle = xyTransformFactory(ANGLE);\nvar partTransforms = {\n perspective: singleNumber,\n scale: xyNumber('scale'),\n scaleX: singleNumber,\n scaleY: singleNumber,\n translate: xyLength('translate', 0),\n translateX: singleLength,\n translateY: singleLength,\n rotate: singleAngle,\n rotateX: singleAngle,\n rotateY: singleAngle,\n rotateZ: singleAngle,\n skewX: singleAngle,\n skewY: singleAngle,\n skew: xyAngle('skew', '0deg')\n};\n\nvar transform = function transform(tokenStream) {\n var transforms = [];\n var didParseFirst = false;\n\n while (tokenStream.hasTokens()) {\n if (didParseFirst) tokenStream.expect(SPACE);\n var functionStream = tokenStream.expectFunction();\n var functionName = functionStream.functionName;\n var transformedValues = partTransforms[functionName](functionStream);\n\n if (!Array.isArray(transformedValues)) {\n var _ref5;\n\n transformedValues = [(_ref5 = {}, _ref5[functionName] = transformedValues, _ref5)];\n }\n\n transforms = transformedValues.concat(transforms);\n didParseFirst = true;\n }\n\n return {\n transform: transforms\n };\n};\n\nvar background = function background(tokenStream) {\n return {\n backgroundColor: tokenStream.expect(COLOR)\n };\n};\n\nvar borderColor = directionFactory({\n types: [COLOR],\n prefix: 'border',\n suffix: 'Color'\n});\nvar borderRadius = directionFactory({\n directions: ['TopLeft', 'TopRight', 'BottomRight', 'BottomLeft'],\n prefix: 'border',\n suffix: 'Radius'\n});\nvar borderWidth = directionFactory({\n prefix: 'border',\n suffix: 'Width'\n});\nvar margin = directionFactory({\n types: [LENGTH, UNSUPPORTED_LENGTH_UNIT, PERCENT, AUTO],\n prefix: 'margin'\n});\nvar padding = directionFactory({\n prefix: 'padding'\n});\n\nvar fontWeight = function fontWeight(tokenStream) {\n return {\n fontWeight: tokenStream.expect(WORD) // Also match numbers as strings\n\n };\n};\n\nvar shadowOffset = function shadowOffset(tokenStream) {\n return {\n shadowOffset: parseShadowOffset(tokenStream)\n };\n};\n\nvar textShadowOffset = function textShadowOffset(tokenStream) {\n return {\n textShadowOffset: parseShadowOffset(tokenStream)\n };\n};\n\nvar transforms = {\n aspectRatio: aspectRatio,\n background: background,\n border: border,\n borderColor: borderColor,\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n boxShadow: boxShadow,\n flex: flex,\n flexFlow: flexFlow,\n font: font,\n fontFamily: fontFamily,\n fontVariant: fontVariant,\n fontWeight: fontWeight,\n margin: margin,\n padding: padding,\n placeContent: placeContent,\n shadowOffset: shadowOffset,\n textShadow: textShadow,\n textShadowOffset: textShadowOffset,\n textDecoration: textDecoration,\n textDecorationLine: textDecorationLine,\n transform: transform\n};\nvar propertiesWithoutUnits;\n\nif (process.env.NODE_ENV !== 'production') {\n propertiesWithoutUnits = ['aspectRatio', 'elevation', 'flexGrow', 'flexShrink', 'opacity', 'shadowOpacity', 'zIndex'];\n}\n\nvar devPropertiesWithUnitsRegExp = propertiesWithoutUnits != null ? new RegExp(propertiesWithoutUnits.join('|')) : null;\nvar SYMBOL_MATCH = 'SYMBOL_MATCH';\n\nvar TokenStream =\n/*#__PURE__*/\nfunction () {\n function TokenStream(nodes, parent) {\n this.index = 0;\n this.nodes = nodes;\n this.functionName = parent != null ? parent.value : null;\n this.lastValue = null;\n this.rewindIndex = -1;\n }\n\n var _proto = TokenStream.prototype;\n\n _proto.hasTokens = function hasTokens() {\n return this.index <= this.nodes.length - 1;\n };\n\n _proto[SYMBOL_MATCH] = function () {\n if (!this.hasTokens()) return null;\n var node = this.nodes[this.index];\n\n for (var i = 0; i < arguments.length; i += 1) {\n var tokenDescriptor = i < 0 || arguments.length <= i ? undefined : arguments[i];\n var value = tokenDescriptor(node);\n\n if (value !== null) {\n this.index += 1;\n this.lastValue = value;\n return value;\n }\n }\n\n return null;\n };\n\n _proto.matches = function matches() {\n return this[SYMBOL_MATCH].apply(this, arguments) !== null;\n };\n\n _proto.expect = function expect() {\n var value = this[SYMBOL_MATCH].apply(this, arguments);\n return value !== null ? value : this[\"throw\"]();\n };\n\n _proto.matchesFunction = function matchesFunction() {\n var node = this.nodes[this.index];\n if (node.type !== 'function') return null;\n var value = new TokenStream(node.nodes, node);\n this.index += 1;\n this.lastValue = null;\n return value;\n };\n\n _proto.expectFunction = function expectFunction() {\n var value = this.matchesFunction();\n return value !== null ? value : this[\"throw\"]();\n };\n\n _proto.expectEmpty = function expectEmpty() {\n if (this.hasTokens()) this[\"throw\"]();\n };\n\n _proto[\"throw\"] = function _throw() {\n throw new Error(\"Unexpected token type: \" + this.nodes[this.index].type);\n };\n\n _proto.saveRewindPoint = function saveRewindPoint() {\n this.rewindIndex = this.index;\n };\n\n _proto.rewind = function rewind() {\n if (this.rewindIndex === -1) throw new Error('Internal error');\n this.index = this.rewindIndex;\n this.lastValue = null;\n };\n\n return TokenStream;\n}();\n/* eslint-disable no-param-reassign */\n// Note if this is wrong, you'll need to change tokenTypes.js too\n\n\nvar numberOrLengthRe = /^([+-]?(?:\\d*\\.)?\\d+(?:e[+-]?\\d+)?)(?:px)?$/i;\nvar numberOnlyRe = /^[+-]?(?:\\d*\\.\\d*|[1-9]\\d*)(?:e[+-]?\\d+)?$/i;\nvar boolRe = /^true|false$/i;\nvar nullRe = /^null$/i;\nvar undefinedRe = /^undefined$/i; // Undocumented export\n\nvar transformRawValue = function transformRawValue(propName, value) {\n if (process.env.NODE_ENV !== 'production') {\n var needsUnit = !devPropertiesWithUnitsRegExp.test(propName);\n var isNumberWithoutUnit = numberOnlyRe.test(value);\n\n if (needsUnit && isNumberWithoutUnit) {\n // eslint-disable-next-line no-console\n console.warn(\"Expected style \\\"\" + propName + \": \" + value + \"\\\" to contain units\");\n }\n\n if (!needsUnit && value !== '0' && !isNumberWithoutUnit) {\n // eslint-disable-next-line no-console\n console.warn(\"Expected style \\\"\" + propName + \": \" + value + \"\\\" to be unitless\");\n }\n }\n\n var numberMatch = value.match(numberOrLengthRe);\n if (numberMatch !== null) return Number(numberMatch[1]);\n var boolMatch = value.match(boolRe);\n if (boolMatch !== null) return boolMatch[0].toLowerCase() === 'true';\n var nullMatch = value.match(nullRe);\n if (nullMatch !== null) return null;\n var undefinedMatch = value.match(undefinedRe);\n if (undefinedMatch !== null) return undefined;\n return value;\n};\n\nvar baseTransformShorthandValue = function baseTransformShorthandValue(propName, value) {\n var ast = parse__default(value);\n var tokenStream = new TokenStream(ast.nodes);\n return transforms[propName](tokenStream);\n};\n\nvar transformShorthandValue = process.env.NODE_ENV === 'production' ? baseTransformShorthandValue : function (propName, value) {\n try {\n return baseTransformShorthandValue(propName, value);\n } catch (e) {\n throw new Error(\"Failed to parse declaration \\\"\" + propName + \": \" + value + \"\\\"\");\n }\n};\n\nvar getStylesForProperty = function getStylesForProperty(propName, inputValue, allowShorthand) {\n var _ref6;\n\n var isRawValue = allowShorthand === false || !(propName in transforms);\n var value = inputValue.trim();\n var propValues = isRawValue ? (_ref6 = {}, _ref6[propName] = transformRawValue(propName, value), _ref6) : transformShorthandValue(propName, value);\n return propValues;\n};\n\nvar getPropertyName = function getPropertyName(propName) {\n var isCustomProp = /^--\\w+/.test(propName);\n\n if (isCustomProp) {\n return propName;\n }\n\n return camelizeStyleName(propName);\n};\n\nvar index = function index(rules, shorthandBlacklist) {\n if (shorthandBlacklist === void 0) {\n shorthandBlacklist = [];\n }\n\n return rules.reduce(function (accum, rule) {\n var propertyName = getPropertyName(rule[0]);\n var value = rule[1];\n var allowShorthand = shorthandBlacklist.indexOf(propertyName) === -1;\n return Object.assign(accum, getStylesForProperty(propertyName, value, allowShorthand));\n }, {});\n};\n\nexports[\"default\"] = index;\nexports.getPropertyName = getPropertyName;\nexports.getStylesForProperty = getStylesForProperty;\nexports.transformRawValue = transformRawValue;\n","/*!\n * https://github.com/gilmoreorless/css-background-parser\n * Copyright © 2015 Gilmore Davidson under the MIT license: http://gilmoreorless.mit-license.org/\n */\n(function (exports) {\n\n function BackgroundList(backgrounds) {\n if (!(this instanceof BackgroundList)) {\n return new BackgroundList();\n }\n this.backgrounds = backgrounds || [];\n }\n\n BackgroundList.prototype.toString = function () {\n return this.backgrounds.join(', ');\n };\n\n\n function Background(props) {\n if (!(this instanceof Background)) {\n return new Background(props);\n }\n props = props || {};\n var bg = this;\n\n function defprop(name, defaultValue) {\n bg[name] = (name in props) ? props[name] : defaultValue;\n }\n\n // http://www.w3.org/TR/css3-background/#backgrounds\n defprop('color', '');\n defprop('image', 'none');\n defprop('attachment', 'scroll');\n defprop('clip', 'border-box');\n defprop('origin', 'padding-box');\n defprop('position', '0% 0%');\n defprop('repeat', 'repeat');\n defprop('size', 'auto');\n }\n\n Background.prototype.toString = function () {\n var list = [\n this.image,\n this.repeat,\n this.attachment,\n this.position + ' / ' + this.size,\n this.origin,\n this.clip\n ];\n if (this.color) {\n list.unshift(this.color);\n }\n return list.join(' ');\n };\n\n exports.BackgroundList = BackgroundList;\n exports.Background = Background;\n\n\n function parseImages(cssText) {\n var images = [];\n var tokens = /[,\\(\\)]/;\n var parens = 0;\n var buffer = '';\n\n if (cssText == null) {\n return images;\n }\n\n while (cssText.length) {\n var match = tokens.exec(cssText);\n if (!match) {\n break;\n }\n var char = match[0];\n var ignoreChar = false;\n switch (char) {\n case ',':\n if (!parens) {\n images.push(buffer.trim());\n buffer = '';\n ignoreChar = true;\n }\n break;\n case '(':\n parens++;\n break;\n case ')':\n parens--;\n break;\n }\n\n var index = match.index + 1;\n buffer += cssText.slice(0, ignoreChar ? index - 1 : index);\n cssText = cssText.slice(index);\n }\n\n if (buffer.length || cssText.length) {\n images.push((buffer + cssText).trim());\n }\n\n return images;\n }\n\n // Helper for .map()\n function trim(str) {\n return str.trim();\n }\n\n function parseSimpleList(cssText) {\n return (cssText || '').split(',').map(trim);\n }\n\n exports.parseElementStyle = function (styleObject) {\n var list = new BackgroundList();\n if (styleObject == null) {\n return list;\n }\n\n var bgImage = parseImages(styleObject.backgroundImage);\n var bgColor = styleObject.backgroundColor;\n var bgAttachment = parseSimpleList(styleObject.backgroundAttachment);\n var bgClip = parseSimpleList(styleObject.backgroundClip);\n var bgOrigin = parseSimpleList(styleObject.backgroundOrigin);\n var bgPosition = parseSimpleList(styleObject.backgroundPosition);\n var bgRepeat = parseSimpleList(styleObject.backgroundRepeat);\n var bgSize = parseSimpleList(styleObject.backgroundSize);\n var background;\n\n for (var i = 0, ii = bgImage.length; i < ii; i++) {\n background = new Background({\n image: bgImage[i],\n attachment: bgAttachment[i % bgAttachment.length],\n clip: bgClip[i % bgClip.length],\n origin: bgOrigin[i % bgOrigin.length],\n position: bgPosition[i % bgPosition.length],\n repeat: bgRepeat[i % bgRepeat.length],\n size: bgSize[i % bgSize.length]\n });\n if (i === ii - 1) {\n background.color = bgColor;\n }\n list.backgrounds.push(background);\n }\n\n return list;\n };\n\n // exports.parseCssString = function (cssString) {\n // return new Background();\n // };\n\n // exports.parseBackgroundValue = function (cssString) {\n // return new Background();\n // };\n\n})((function (root) {\n // CommonJS\n if (typeof module !== 'undefined' && module.exports !== undefined) return module.exports;\n // Global `cssBgParser`\n return (root.cssBgParser = {});\n})(this));\n","const VALUES_REG = /,(?![^\\(]*\\))/\nconst PARTS_REG = /\\s(?![^(]*\\))/\nconst LENGTH_REG = /^[0-9]+[a-zA-Z%]+?$/\n\nconst parseValue = str => {\n const parts = str.split(PARTS_REG)\n const inset = parts.includes('inset')\n const last = parts.slice(-1)[0]\n const color = !isLength(last) ? last : undefined\n\n const nums = parts\n .filter(n => n !== 'inset')\n .filter(n => n !== color)\n .map(toNum)\n const [ offsetX, offsetY, blurRadius, spreadRadius ] = nums\n\n return {\n inset,\n offsetX,\n offsetY,\n blurRadius,\n spreadRadius,\n color\n }\n}\n\nconst stringifyValue = obj => {\n const {\n inset,\n offsetX = 0,\n offsetY = 0,\n blurRadius = 0,\n spreadRadius,\n color\n } = obj || {}\n\n return [\n (inset ? 'inset' : null),\n offsetX,\n offsetY,\n blurRadius ,\n spreadRadius,\n color\n ].filter(v => v !== null && v !== undefined)\n .map(toPx)\n .map(s => ('' + s).trim())\n .join(' ')\n}\n\nconst isLength = v => v === '0' || LENGTH_REG.test(v)\nconst toNum = v => {\n if (!/px$/.test(v) && v !== '0') return v\n const n = parseFloat(v)\n return !isNaN(n) ? n : v\n}\nconst toPx = n => typeof n === 'number' && n !== 0 ? (n + 'px') : n\n\nconst parse = str => str.split(VALUES_REG).map(s => s.trim()).map(parseValue)\nconst stringify = arr => arr.map(stringifyValue).join(', ')\n\nmodule.exports = {\n parse,\n stringify\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nconst hexCharacters = 'a-f\\\\d';\nconst match3or4Hex = `#?[${hexCharacters}]{3}[${hexCharacters}]?`;\nconst match6or8Hex = `#?[${hexCharacters}]{6}([${hexCharacters}]{2})?`;\nconst nonHexChars = new RegExp(`[^#${hexCharacters}]`, 'gi');\nconst validHexSize = new RegExp(`^${match3or4Hex}$|^${match6or8Hex}$`, 'i');\n\nmodule.exports = (hex, options = {}) => {\n\tif (typeof hex !== 'string' || nonHexChars.test(hex) || !validHexSize.test(hex)) {\n\t\tthrow new TypeError('Expected a valid hex string');\n\t}\n\n\thex = hex.replace(/^#/, '');\n\tlet alphaFromHex = 1;\n\n\tif (hex.length === 8) {\n\t\talphaFromHex = Number.parseInt(hex.slice(6, 8), 16) / 255;\n\t\thex = hex.slice(0, 6);\n\t}\n\n\tif (hex.length === 4) {\n\t\talphaFromHex = Number.parseInt(hex.slice(3, 4).repeat(2), 16) / 255;\n\t\thex = hex.slice(0, 3);\n\t}\n\n\tif (hex.length === 3) {\n\t\thex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n\t}\n\n\tconst number = Number.parseInt(hex, 16);\n\tconst red = number >> 16;\n\tconst green = (number >> 8) & 255;\n\tconst blue = number & 255;\n\tconst alpha = typeof options.alpha === 'number' ? options.alpha : alphaFromHex;\n\n\tif (options.format === 'array') {\n\t\treturn [red, green, blue, alpha];\n\t}\n\n\tif (options.format === 'css') {\n\t\tconst alphaString = alpha === 1 ? '' : ` / ${Number((alpha * 100).toFixed(2))}%`;\n\t\treturn `rgb(${red} ${green} ${blue}${alphaString})`;\n\t}\n\n\treturn {red, green, blue, alpha};\n};\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","var YGEnums={},ALIGN_AUTO=YGEnums.ALIGN_AUTO=0,ALIGN_FLEX_START=YGEnums.ALIGN_FLEX_START=1,ALIGN_CENTER=YGEnums.ALIGN_CENTER=2,ALIGN_FLEX_END=YGEnums.ALIGN_FLEX_END=3,ALIGN_STRETCH=YGEnums.ALIGN_STRETCH=4,ALIGN_BASELINE=YGEnums.ALIGN_BASELINE=5,ALIGN_SPACE_BETWEEN=YGEnums.ALIGN_SPACE_BETWEEN=6,ALIGN_SPACE_AROUND=YGEnums.ALIGN_SPACE_AROUND=7,DIMENSION_WIDTH=YGEnums.DIMENSION_WIDTH=0,DIMENSION_HEIGHT=YGEnums.DIMENSION_HEIGHT=1,DIRECTION_INHERIT=YGEnums.DIRECTION_INHERIT=0,DIRECTION_LTR=YGEnums.DIRECTION_LTR=1,DIRECTION_RTL=YGEnums.DIRECTION_RTL=2,DISPLAY_FLEX=YGEnums.DISPLAY_FLEX=0,DISPLAY_NONE=YGEnums.DISPLAY_NONE=1,EDGE_LEFT=YGEnums.EDGE_LEFT=0,EDGE_TOP=YGEnums.EDGE_TOP=1,EDGE_RIGHT=YGEnums.EDGE_RIGHT=2,EDGE_BOTTOM=YGEnums.EDGE_BOTTOM=3,EDGE_START=YGEnums.EDGE_START=4,EDGE_END=YGEnums.EDGE_END=5,EDGE_HORIZONTAL=YGEnums.EDGE_HORIZONTAL=6,EDGE_VERTICAL=YGEnums.EDGE_VERTICAL=7,EDGE_ALL=YGEnums.EDGE_ALL=8,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=YGEnums.EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS=0,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=YGEnums.EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE=1,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=YGEnums.EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN=2,FLEX_DIRECTION_COLUMN=YGEnums.FLEX_DIRECTION_COLUMN=0,FLEX_DIRECTION_COLUMN_REVERSE=YGEnums.FLEX_DIRECTION_COLUMN_REVERSE=1,FLEX_DIRECTION_ROW=YGEnums.FLEX_DIRECTION_ROW=2,FLEX_DIRECTION_ROW_REVERSE=YGEnums.FLEX_DIRECTION_ROW_REVERSE=3,GUTTER_COLUMN=YGEnums.GUTTER_COLUMN=0,GUTTER_ROW=YGEnums.GUTTER_ROW=1,GUTTER_ALL=YGEnums.GUTTER_ALL=2,JUSTIFY_FLEX_START=YGEnums.JUSTIFY_FLEX_START=0,JUSTIFY_CENTER=YGEnums.JUSTIFY_CENTER=1,JUSTIFY_FLEX_END=YGEnums.JUSTIFY_FLEX_END=2,JUSTIFY_SPACE_BETWEEN=YGEnums.JUSTIFY_SPACE_BETWEEN=3,JUSTIFY_SPACE_AROUND=YGEnums.JUSTIFY_SPACE_AROUND=4,JUSTIFY_SPACE_EVENLY=YGEnums.JUSTIFY_SPACE_EVENLY=5,LOG_LEVEL_ERROR=YGEnums.LOG_LEVEL_ERROR=0,LOG_LEVEL_WARN=YGEnums.LOG_LEVEL_WARN=1,LOG_LEVEL_INFO=YGEnums.LOG_LEVEL_INFO=2,LOG_LEVEL_DEBUG=YGEnums.LOG_LEVEL_DEBUG=3,LOG_LEVEL_VERBOSE=YGEnums.LOG_LEVEL_VERBOSE=4,LOG_LEVEL_FATAL=YGEnums.LOG_LEVEL_FATAL=5,MEASURE_MODE_UNDEFINED=YGEnums.MEASURE_MODE_UNDEFINED=0,MEASURE_MODE_EXACTLY=YGEnums.MEASURE_MODE_EXACTLY=1,MEASURE_MODE_AT_MOST=YGEnums.MEASURE_MODE_AT_MOST=2,NODE_TYPE_DEFAULT=YGEnums.NODE_TYPE_DEFAULT=0,NODE_TYPE_TEXT=YGEnums.NODE_TYPE_TEXT=1,OVERFLOW_VISIBLE=YGEnums.OVERFLOW_VISIBLE=0,OVERFLOW_HIDDEN=YGEnums.OVERFLOW_HIDDEN=1,OVERFLOW_SCROLL=YGEnums.OVERFLOW_SCROLL=2,POSITION_TYPE_STATIC=YGEnums.POSITION_TYPE_STATIC=0,POSITION_TYPE_RELATIVE=YGEnums.POSITION_TYPE_RELATIVE=1,POSITION_TYPE_ABSOLUTE=YGEnums.POSITION_TYPE_ABSOLUTE=2,PRINT_OPTIONS_LAYOUT=YGEnums.PRINT_OPTIONS_LAYOUT=1,PRINT_OPTIONS_STYLE=YGEnums.PRINT_OPTIONS_STYLE=2,PRINT_OPTIONS_CHILDREN=YGEnums.PRINT_OPTIONS_CHILDREN=4,UNIT_UNDEFINED=YGEnums.UNIT_UNDEFINED=0,UNIT_POINT=YGEnums.UNIT_POINT=1,UNIT_PERCENT=YGEnums.UNIT_PERCENT=2,UNIT_AUTO=YGEnums.UNIT_AUTO=3,WRAP_NO_WRAP=YGEnums.WRAP_NO_WRAP=0,WRAP_WRAP=YGEnums.WRAP_WRAP=1,WRAP_WRAP_REVERSE=YGEnums.WRAP_WRAP_REVERSE=2;let CONSTANTS=YGEnums;var wrapAsm=E=>{function _(E,_,T){let N=E[_];E[_]=function(...E){return T.call(this,N,...E)}}for(let T of[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"]){let N={[YGEnums.UNIT_POINT]:E.Node.prototype[T],[YGEnums.UNIT_PERCENT]:E.Node.prototype[`${T}Percent`],[YGEnums.UNIT_AUTO]:E.Node.prototype[`${T}Auto`]};_(E.Node.prototype,T,function(E,..._){let I,L;let O=_.pop();if(\"auto\"===O)I=YGEnums.UNIT_AUTO,L=void 0;else if(\"object\"==typeof O)I=O.unit,L=O.valueOf();else if(I=\"string\"==typeof O&&O.endsWith(\"%\")?YGEnums.UNIT_PERCENT:YGEnums.UNIT_POINT,L=parseFloat(O),!Number.isNaN(O)&&Number.isNaN(L))throw Error(`Invalid value ${O} for ${T}`);if(!N[I])throw Error(`Failed to execute \"${T}\": Unsupported unit '${O}'`);return void 0!==L?N[I].call(this,..._,L):N[I].call(this,..._)})}function T(_){return E.MeasureCallback.implement({measure:(...E)=>{let{width:T,height:N}=_(...E);return{width:T??NaN,height:N??NaN}}})}function N(_){return E.DirtiedCallback.implement({dirtied:_})}return _(E.Node.prototype,\"setMeasureFunc\",function(E,_){return _?E.call(this,T(_)):this.unsetMeasureFunc()}),_(E.Node.prototype,\"setDirtiedFunc\",function(E,_){E.call(this,N(_))}),_(E.Config.prototype,\"free\",function(){E.Config.destroy(this)}),_(E.Node,\"create\",(_,T)=>T?E.Node.createWithConfig(T):E.Node.createDefault()),_(E.Node.prototype,\"free\",function(){E.Node.destroy(this)}),_(E.Node.prototype,\"freeRecursive\",function(){for(let E=0,_=this.getChildCount();E<_;++E)this.getChild(0).freeRecursive();this.free()}),_(E.Node.prototype,\"calculateLayout\",function(E,_=NaN,T=NaN,N=YGEnums.DIRECTION_LTR){return E.call(this,_,T,N)}),{Config:E.Config,Node:E.Node,...YGEnums}};export{OVERFLOW_HIDDEN as $,ALIGN_AUTO as A,FLEX_DIRECTION_ROW as B,FLEX_DIRECTION_ROW_REVERSE as C,DIMENSION_WIDTH as D,EDGE_LEFT as E,FLEX_DIRECTION_COLUMN as F,GUTTER_COLUMN as G,GUTTER_ROW as H,GUTTER_ALL as I,JUSTIFY_FLEX_START as J,JUSTIFY_CENTER as K,JUSTIFY_FLEX_END as L,JUSTIFY_SPACE_BETWEEN as M,JUSTIFY_SPACE_AROUND as N,JUSTIFY_SPACE_EVENLY as O,LOG_LEVEL_ERROR as P,LOG_LEVEL_WARN as Q,LOG_LEVEL_INFO as R,LOG_LEVEL_DEBUG as S,LOG_LEVEL_VERBOSE as T,LOG_LEVEL_FATAL as U,MEASURE_MODE_UNDEFINED as V,MEASURE_MODE_EXACTLY as W,MEASURE_MODE_AT_MOST as X,NODE_TYPE_DEFAULT as Y,NODE_TYPE_TEXT as Z,OVERFLOW_VISIBLE as _,ALIGN_FLEX_START as a,OVERFLOW_SCROLL as a0,POSITION_TYPE_STATIC as a1,POSITION_TYPE_RELATIVE as a2,POSITION_TYPE_ABSOLUTE as a3,PRINT_OPTIONS_LAYOUT as a4,PRINT_OPTIONS_STYLE as a5,PRINT_OPTIONS_CHILDREN as a6,UNIT_UNDEFINED as a7,UNIT_POINT as a8,UNIT_PERCENT as a9,UNIT_AUTO as aa,WRAP_NO_WRAP as ab,WRAP_WRAP as ac,WRAP_WRAP_REVERSE as ad,ALIGN_CENTER as b,ALIGN_FLEX_END as c,ALIGN_STRETCH as d,ALIGN_BASELINE as e,ALIGN_SPACE_BETWEEN as f,ALIGN_SPACE_AROUND as g,DIMENSION_HEIGHT as h,DIRECTION_INHERIT as i,DIRECTION_LTR as j,DIRECTION_RTL as k,DISPLAY_FLEX as l,DISPLAY_NONE as m,EDGE_TOP as n,EDGE_RIGHT as o,EDGE_BOTTOM as p,EDGE_START as q,EDGE_END as r,EDGE_HORIZONTAL as s,EDGE_VERTICAL as t,EDGE_ALL as u,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS as v,wrapAsm as w,EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE as x,EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN as y,FLEX_DIRECTION_COLUMN_REVERSE as z};\n","import{w as r}from\"./wrapAsm-f766f97f.js\";export{A as ALIGN_AUTO,e as ALIGN_BASELINE,b as ALIGN_CENTER,c as ALIGN_FLEX_END,a as ALIGN_FLEX_START,g as ALIGN_SPACE_AROUND,f as ALIGN_SPACE_BETWEEN,d as ALIGN_STRETCH,h as DIMENSION_HEIGHT,D as DIMENSION_WIDTH,i as DIRECTION_INHERIT,j as DIRECTION_LTR,k as DIRECTION_RTL,l as DISPLAY_FLEX,m as DISPLAY_NONE,u as EDGE_ALL,p as EDGE_BOTTOM,r as EDGE_END,s as EDGE_HORIZONTAL,E as EDGE_LEFT,o as EDGE_RIGHT,q as EDGE_START,n as EDGE_TOP,t as EDGE_VERTICAL,x as EXPERIMENTAL_FEATURE_ABSOLUTE_PERCENTAGE_AGAINST_PADDING_EDGE,y as EXPERIMENTAL_FEATURE_FIX_ABSOLUTE_TRAILING_COLUMN_MARGIN,v as EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS,F as FLEX_DIRECTION_COLUMN,z as FLEX_DIRECTION_COLUMN_REVERSE,B as FLEX_DIRECTION_ROW,C as FLEX_DIRECTION_ROW_REVERSE,I as GUTTER_ALL,G as GUTTER_COLUMN,H as GUTTER_ROW,K as JUSTIFY_CENTER,L as JUSTIFY_FLEX_END,J as JUSTIFY_FLEX_START,N as JUSTIFY_SPACE_AROUND,M as JUSTIFY_SPACE_BETWEEN,O as JUSTIFY_SPACE_EVENLY,S as LOG_LEVEL_DEBUG,P as LOG_LEVEL_ERROR,U as LOG_LEVEL_FATAL,R as LOG_LEVEL_INFO,T as LOG_LEVEL_VERBOSE,Q as LOG_LEVEL_WARN,X as MEASURE_MODE_AT_MOST,W as MEASURE_MODE_EXACTLY,V as MEASURE_MODE_UNDEFINED,Y as NODE_TYPE_DEFAULT,Z as NODE_TYPE_TEXT,$ as OVERFLOW_HIDDEN,a0 as OVERFLOW_SCROLL,_ as OVERFLOW_VISIBLE,a3 as POSITION_TYPE_ABSOLUTE,a2 as POSITION_TYPE_RELATIVE,a1 as POSITION_TYPE_STATIC,a6 as PRINT_OPTIONS_CHILDREN,a4 as PRINT_OPTIONS_LAYOUT,a5 as PRINT_OPTIONS_STYLE,aa as UNIT_AUTO,a9 as UNIT_PERCENT,a8 as UNIT_POINT,a7 as UNIT_UNDEFINED,ab as WRAP_NO_WRAP,ac as WRAP_WRAP,ad as WRAP_WRAP_REVERSE}from\"./wrapAsm-f766f97f.js\";var yoga=(()=>{var r=\"undefined\"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(e={}){u||(u=void 0!==e?e:{}),u.ready=new Promise(function(r,e){s=r,A=e});var a,i,n=Object.assign({},u),f=\"\";\"undefined\"!=typeof document&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f=0!==f.indexOf(\"blob:\")?f.substr(0,f.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):\"\";var t=u.print||console.log.bind(console),b=u.printErr||console.warn.bind(console);function o(){}function k(r){this.exports=function(r){for(var e,a=new Uint8Array(123),i=25;i>=0;--i)a[48+i]=52+i,a[65+i]=i,a[97+i]=26+i;function n(r,e,i){for(var n,f,t=0,b=e,o=i.length,k=e+(3*o>>2)-(\"=\"==i[o-2])-(\"=\"==i[o-1]);t>4,b>2),b>2]=l[L>>2]+1,L=3&l[r+24>>2],r$=(0|i)<=1?1:i,rf=L||r$,s[r+300|0]=252&d[r+300|0]|3&rf,L=r+252|0,i=((0|rf)!=1)<<3,S=rP(r,rL=(0|rf)==2?3:2,b),p[L+i>>2]=S,_=L,L=((0|rf)==1)<<3,Q=rS(r,rL,b),p[_+L>>2]=Q,H=rP(r,0,b),p[r+256>>2]=H,C=rS(r,0,b),p[r+264>>2]=C,eb=(F=r+268|0)+i|0,eo=rM(r,rL),p[eb>>2]=eo,eb=L+F|0,eo=rU(r,rL),p[eb>>2]=eo,X=rM(r,0),p[r+272>>2]=X,P=rU(r,0),p[r+280>>2]=P,eb=(_=i)+(i=r+284|0)|0,eo=rZ(r,rL,b),p[eb>>2]=eo,eb=i+L|0,eo=rW(r,rL,b),p[eb>>2]=eo,O=rZ(r,0,b),p[r+288>>2]=O,D=rW(r,0,b),p[r+296>>2]=D,S=w(S+Q),Q=w(H+C),i=l[r+8>>2]){H=w(w(w(p[r+284>>2]+p[r+292>>2])+p[r+268>>2])+p[r+276>>2]),a=f?w(a-Q):w(NaN),X=w(w(O+D)+X),e=O=n?w(e-S):w(NaN);i:if(e==e){if((e=w(O-H))!=e){e=w(0);break i}e=eu(e,w(0))}S=w(X+P),X=a;n:if(a==a){if((X=w(a-S))!=X){X=w(0);break n}X=eu(X,w(0))}if(!((0|n)!=1|(0|f)!=1)){i=(e=ro(r,2,O,b))!=e,X=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));f:{if(!(i|X!=X)){e=eu(e,X);break f}e=i?X:e}p[r+516>>2]=e,i=(e=ro(r,0,a,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));t:{if(!(i|a!=a)){e=eu(e,a);break t}e=i?a:e}p[r+520>>2]=e;break r}b:{if(16&d[r+4|0]){eY[0|i](I+24|0,r,e,n,X,f,0);break b}eY[0|i](I+24|0,r,e,n,X,f)}l[h+20>>2]=l[h+20>>2]+1,l[(i=(N<<2)+h|0)+24>>2]=l[i+24>>2]+1,e=w(H+p[I+24>>2]),i=(e=ro(r,2,n?(0|n)==2?e:O:e,b))!=e,X=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));o:{if(!(i|X!=X)){e=eu(e,X);break o}e=i?X:e}p[r+516>>2]=e,e=w(S+p[I+28>>2]),i=(e=ro(r,0,f?(0|f)==2?e:a:e,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));k:{if(!(i|a!=a)){e=eu(e,a);break k}e=i?a:e}p[r+520>>2]=e;break r}if(i=l[r+556>>2],N=l[r+560>>2],(0|i)==(0|N)){Q=w(a-Q),i=(e=ro(r,2,-3&n?w(e-S):w(w(w(p[r+284>>2]+p[r+292>>2])+p[r+268>>2])+p[r+276>>2]),b))!=e,a=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));c:{if(!(i|a!=a)){e=eu(e,a);break c}e=i?a:e}p[r+516>>2]=e,i=(e=ro(r,0,-3&f?Q:w(w(w(O+D)+X)+P),o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));u:{if(!(i|a!=a)){e=eu(e,a);break u}e=i?a:e}p[r+520>>2]=e;break r}s:if(!c){if(O=w(e-S),X=w(a-Q),!((0|n)==2&O<=w(0)|!(!(X<=w(0))|(0|f)!=2)&X==X)&((0|n)!=1|(0|f)!=1))break s;i=(e=ro(r,2,O==O?(0|n)==2&&O>2]=e,i=(e=ro(r,0,X!=X?w(0):(0|f)==2&&X>2]=e;break r}for(rd=(rr=N-i|0)>>2;L=l[i>>2],l[L+552>>2]!=(0|r)&&(F=l[r+568>>2],L=rV(l[F>>2],d[F+8|0],L,r,U,0),l[i>>2]=L,l[L+552>>2]=r),U=U+1|0,(0|N)!=(0|(i=i+4|0)););s[r+300|0]=251&d[r+300|0],U=3,i=(rH=l[r+24>>2])>>>2&3;d:{h:{v:{if((0|rf)==2){N=0;p:switch(i-2|0){case 0:break d;case 1:break p;default:break v}U=2;break d}if(U=2,N=0,i>>>0>1)break h}N=U}U=i}r0=w(e-S),rh=w(w(rZ(r,U,b)+rM(r,U))+w(rW(r,U,b)+rU(r,U))),D=w(rZ(r,N,b)+rM(r,N)),rb=w(D+w(rW(r,N,b)+rU(r,N))),C=rs(r,0,r0,(rk=U>>>0>1)?rh:rb,b),J=rs(r,1,r2=w(a-Q),rk?rb:rh,o),K=rk?J:C,Q=rk?C:J,rp=l[r+560>>2],L=l[r+556>>2],x=rk?n:f;m:if((0|x)==1){if((0|L)==(0|rp))break a;for(i=0,F=L;;){_=i,i=l[F>>2];N:{if(!rQ(i)){i=_;break N}if(Y=0,_||!(_=l[i+552>>2]))break m;w:{y:{a=p[i+32>>2];E:if((a==a||(X=w(0),(a=p[i+28>>2])>w(0)))&&(X=a,a!=a))break y;if(w(y(X))>2])!=a){if(s[i+4|0]<0){a=w(1);break w}if(a=w(0),!((e=p[i+28>>2])>2],rc(M),F=l[M+24>>2];G:{if(4194304&F){if(function r(e,a){var i=0,n=0,f=0,t=0,b=0,o=0;for(re=i=re-320|0,l[(i=n=ry(i,0,288))+16>>2]=2143289344,l[i+20>>2]=2143289344,ry(i+24|0,0,49),l[i+80>>2]=2143289344,t=i+288|0,f=i+96|0;l[(i=f)+16>>2]=-1082130432,l[i+20>>2]=-1082130432,l[i+8>>2]=0,l[i+12>>2]=0,l[i>>2]=-1082130432,l[i+4>>2]=-1082130432,(0|t)!=(0|(f=i+24|0)););if(l[n+312>>2]=-1082130432,l[n+316>>2]=-1082130432,l[n+304>>2]=0,l[n+308>>2]=0,l[n+296>>2]=-1082130432,l[n+300>>2]=-1082130432,l[n+288>>2]=2143289344,l[n+292>>2]=2143289344,ru(e+228|0,n,320),l[e+244>>2]=0,l[e+248>>2]=0,s[e+4|0]=1|d[e+4|0],f=l[e+556>>2],b=l[e+560>>2],(0|f)!=(0|b))for(;i=l[f>>2],l[i+552>>2]!=(0|e)&&(t=l[e+568>>2],i=rV(l[t>>2],d[t+8|0],i,e,o,a),l[f>>2]=i,l[i+552>>2]=e,i=l[f>>2]),r(i,a),o=o+1|0,(0|b)!=(0|(f=f+4|0)););re=n+320|0}(M,0),F=1|(i=d[M+4|0]),s[M+4|0]=F,!(4&i))break G;s[M+4|0]=251&F;break G}if(c&&(rO(M,(i=3&F)||ra,Q,K,C),F=l[M+24>>2]),(196608&F)==131072)break G;R:{if((0|Y)==(0|M)){l[Y+308>>2]=0,l[Y+304>>2]=m,a=w(0);break R}_=(rF=l[r+24>>2])>>>2&3;g:{Z:if((0|rf)==2){i=3;W:switch(_-2|0){case 0:break g;case 1:break W;default:break Z}i=2;break g}i=_}O=(rA=i>>>0>1)?C:J,a=w(0),e=p[M+40>>2];V:{B:{_=l[M+40>>2];T:if((0|_)!=2139156720){if((0|_)==2140081935)break B;j=4276;I:{if((0|_)!=2141891242){if(e==e)break I;j=4268}a=p[j>>2];X:{O:switch(0|(_=l[j+4>>2])){case 0:case 3:break O;default:break X}if(e=w(NaN),!(p[M+28>>2]>w(0)))break V;ri=(j=s[M+4|0]<0)?2143289344:0,_=j?3:1,E=ri,t[2]=E,a=u()}switch(e=w(NaN),_-1|0){case 0:break B;case 1:break T;default:break V}}if(G=(-1073741825&_)+536870912|0,t[2]=G,a=u(),!(1073741824&_))break B}e=w(w(O*a)*w(.009999999776482582));break V}e=a}a=p[M+572>>2],_=0;L:{_:switch(0|($=l[M+576>>2])){case 0:case 3:break L;default:break _}if(S=p[M+572>>2],!((0|$)!=1|S!=S)){if(a>2],j=0;F:{C:switch(0|(q=l[M+584>>2])){case 0:case 3:break F;default:break C}if(P=p[M+580>>2],!((0|q)!=1|P!=P)){if(S>2],(!d[l[M+568>>2]+20|0]|l[M+304>>2]==(0|m))&a==a)break S;if(!((a=w(w(rZ(M,i,C)+rM(M,i))+w(rW(M,i,C)+rU(M,i))))<=e)&ea){a=e;break P}a=a!=a?e:a;break P}if(l[I+360>>2]=2143289344,l[I+24>>2]=2143289344,ri=0,l[I+356>>2]=0,l[I+352>>2]=0,P=w(rP(M,2,C)+rS(M,2,C)),H=rP(M,0,C),z=rS(M,0,C),O=w(NaN),rl=0,e=w(NaN),_){M:{H:switch($-1|0){case 0:e=a;break M;case 1:break H;default:break M}e=w(w(C*a)*w(.009999999776482582))}l[I+356>>2]=1,e=w(P+e),p[I+24>>2]=e,rl=1}if(H=w(H+z),j){a=w(NaN);Q:{z:switch(q-1|0){case 0:a=S;break Q;case 1:break z;default:break Q}a=w(w(J*S)*w(.009999999776482582))}l[I+352>>2]=1,O=w(H+a),p[I+360>>2]=O,ri=1}$=i>>>0<2,q=3145728&rF;j:{D:{x:{if(!(!rA&(0|q)==2097152)){if(rw|(0|q)==2097152)break D;if(e!=e)break x;break D}if(rw|e==e)break j}rl=2,l[I+356>>2]=2,p[I+24>>2]=C,e=C}J:{if(!(!$&(0|q)==2097152)){if((0|q)==2097152|J!=J)break j;if(O!=O)break J;break j}if(O==O|J!=J)break j}ri=2,l[I+352>>2]=2,p[I+360>>2]=J,O=J}q=(a=p[M+224>>2])!=a;K:if(!q){q:{if(!(rA|(0|rl)!=1)){l[I+352>>2]=1,p[I+360>>2]=H+w(w(e-P)/a);break q}if($|(0|ri)!=1)break K;l[I+356>>2]=1,p[I+24>>2]=w(w(O-H)*a)+P}ri=1,rl=1}F=(F=F>>>13&7)||rF>>>10&7;$:if(!((0|F)==5|(0|rl)==1|(rA|(_|rN))|(0|F)!=4)){if(l[I+356>>2]=1,p[I+24>>2]=C,q)break $;ri=1,l[I+352>>2]=1,p[I+360>>2]=w(C-P)/a}rr:if(!($|(0|f)!=1|J!=J|j|(0|F)!=4|(0|ri)==1)){if(l[I+352>>2]=1,p[I+360>>2]=J,q)break rr;l[I+356>>2]=1,p[I+24>>2]=w(J-H)*a}if(rg(M,2,C,C,I+356|0,I+24|0),rg(M,0,J,C,I+352|0,I+360|0),rt(M,p[I+24>>2],p[I+360>>2],rf,l[I+356>>2],l[I+352>>2],C,J,0,5,A,h,v,m),F=(e=p[(M+(l[(i<<2)+4252>>2]<<2)|0)+516>>2])!=e,a=w(w(rZ(M,i,C)+rM(M,i))+w(rW(M,i,C)+rU(M,i))),!(F|a!=a)){a=eu(e,a);break P}a=F?a:e}p[M+308>>2]=a}l[M+304>>2]=m}X=w(X+w(a+w(rP(M,U,C)+rS(M,U,C))))}if((0|rp)==(0|(L=L+4|0)))break}break e}l[I>>2]=3023,rB(r,I),eX(),k()}l[I+16>>2]=3105,rB(r,I+16|0),eX(),k()}X=w(0)}e=w(X+w(0)),rz=rk?o:b,rC=rk?b:o,rr>>>0>=5&&(e=w(w(rv(r,U,K)*w(rd-1>>>0))+e)),i=e>Q,rp=786432&rH,rG=(0|x)==2&&rp&&i?1:x,r8=(rw=(0|(M=rk?f:n))==1)&(1^c),rk=U>>>0<2,r9=-3&M,rF=r+208|0,q=(f=N<<2)+4220|0,r7=!rp&rw,er=(0|M)!=1|c,rA=(L=U<<2)+4220|0,r_=L+4252|0,ei=(rl=K==K)<<1,$=f+4252|0,ef=!x|!i,rH=I+52|0,r1=rv(r,N,K),F=0,i=0,ri=0;re:{for(;;){j=i,ry(I+24|0,0,44),i=l[r+560>>2],f=l[r+556>>2];ra:if((0|i)!=(0|f)){if((0|(i=i-f|0))<0)break re;if(L=en(I+360|0,i>>2,0,rH),i=l[I+44>>2],f=l[I+48>>2]-i|0,f=rm(l[I+364>>2]-f|0,i,f),i=l[I+44>>2],l[I+364>>2]=i,l[I+44>>2]=f,_=l[I+368>>2],Y=l[I+372>>2],f=l[I+48>>2],l[I+368>>2]=f,x=l[I+52>>2],l[I+48>>2]=_,l[I+52>>2]=Y,l[I+372>>2]=x,l[L>>2]=i,(0|i)!=(0|f)&&(l[I+368>>2]=f+((i-f|0)+3&-4)),!i)break ra;rE(i)}f=(Y=l[r+24>>2])>>>2&3;ri:{rn:if((0|((i=3&Y)||r$))==2){i=3;rf:switch(f-2|0){case 0:break ri;case 1:break rf;default:break rn}i=2;break ri}i=f}X=rv(r,i,C),L=F,_=l[r+560>>2],f=l[r+556>>2];rt:if(!(L>>>0>=_-f>>2>>>0))for(x=786432&Y,a=w(0);;){if(_-f>>2>>>0<=L>>>0)break re;if(Y=l[(L<<2)+f>>2],!(4194304&(rr=l[Y+24>>2])|(196608&rr)==131072)){if(l[Y+548>>2]=j,e=rP(Y,i,C),O=rS(Y,i,C),f=l[I+24>>2],S=(0|L)==(0|F)?w(0):X,e=w(e+O),O=p[Y+308>>2],P=ro(Y,i,O,rC),!(f?!(w(S+w(e+w(a+P)))>Q)|!x:1))break rt;if(l[I+24>>2]=f+1,S=w(S+w(e+P)),p[I+28>>2]=S+p[I+28>>2],rQ(Y)){rb:{if(l[Y+552>>2]){if((e=p[Y+32>>2])!=e&&(e=(e=p[Y+28>>2])>w(0)?e:w(0)),p[I+32>>2]=e+p[I+32>>2],(e=p[Y+36>>2])==e)break rb;if(s[Y+4|0]<0){e=w(1);break rb}if(e=w(0),!((P=p[Y+28>>2])>2]=p[I+32>>2]+w(0)}p[I+36>>2]=p[I+36>>2]-w(e*O)}f=l[I+48>>2];ro:{if((0|f)!=l[I+52>>2]){l[f>>2]=Y,l[I+48>>2]=f+4;break ro}if((_=(rr=(f=f-l[I+44>>2]|0)>>2)+1|0)>>>0>=1073741824)break re;if(ra=f>>>1|0,rr=en(I+360|0,f>>>0>=2147483644?1073741823:_>>>0>>0?ra:_,rr,rH),l[l[I+368>>2]>>2]=Y,l[I+368>>2]=l[I+368>>2]+4,f=l[I+44>>2],_=l[I+48>>2]-f|0,_=rm(l[I+364>>2]-_|0,f,_),f=l[I+44>>2],l[I+364>>2]=f,l[I+44>>2]=_,Y=l[I+368>>2],ra=l[I+372>>2],_=l[I+48>>2],l[I+368>>2]=_,rN=l[I+52>>2],l[I+48>>2]=Y,l[I+52>>2]=ra,l[I+372>>2]=rN,l[rr>>2]=f,(0|f)!=(0|_)&&(l[I+368>>2]=_+((f-_|0)+3&-4)),!f)break ro;rE(f)}f=l[r+556>>2],_=l[r+560>>2],a=w(a+S)}if(!((L=L+1|0)>>>0<_-f>>2>>>0))break}!((z=p[I+32>>2])>w(0))|!(z>2]=1065353216,z=w(1)),!((rn=p[I+36>>2])>w(0))|!(rn>2]=1065353216,rn=w(1)),l[I+40>>2]=L,H=p[I+28>>2],x=l[I+24>>2],ri&&rE(ri),S=p[I+56>>2],rr=l[I+48>>2],ri=l[I+44>>2];rk:{rc:{ru:{rs:if((0|rG)!=1){a=w(0),e=p[rF>>2];rA:{rl:{i=l[rF>>2];rd:if((0|i)!=2139156720){if((0|i)==2140081935)break rl;f=4276;rh:{if((0|i)!=2141891242){if(e==e)break rh;f=4268}switch(a=p[f>>2],e=w(NaN),l[f+4>>2]-1|0){case 0:break rl;case 1:break rd;default:break rA}}if(R=(-1073741825&i)+536870912|0,t[2]=R,a=u(),!(1073741824&i))break rl}e=w(w(a*b)*w(.009999999776482582));break rA}e=a}a=w(0),X=p[r+216>>2];rv:{rp:{i=l[r+216>>2];rm:if((0|i)!=2139156720){if((0|i)==2140081935)break rp;f=4276;rN:{if((0|i)!=2141891242){if(X==X)break rN;f=4268}switch(a=p[f>>2],X=w(NaN),l[f+4>>2]-1|0){case 0:break rp;case 1:break rm;default:break rv}}if(g=(-1073741825&i)+536870912|0,t[2]=g,a=u(),!(1073741824&i))break rp}X=w(w(a*b)*w(.009999999776482582));break rv}X=a}a=w(0),O=p[r+212>>2];rw:{ry:{i=l[r+212>>2];rE:if((0|i)!=2139156720){if((0|i)==2140081935)break ry;f=4276;rG:{if((0|i)!=2141891242){if(O==O)break rG;f=4268}switch(a=p[f>>2],P=w(NaN),l[f+4>>2]-1|0){case 0:break ry;case 1:break rE;default:break rw}}if(Z=(-1073741825&i)+536870912|0,t[2]=Z,a=u(),!(1073741824&i))break ry}P=w(w(a*o)*w(.009999999776482582));break rw}P=a}a=w(0),O=p[r+220>>2];rR:{rg:{i=l[r+220>>2];rZ:if((0|i)!=2139156720){if((0|i)==2140081935)break rg;f=4276;rW:{if((0|i)!=2141891242){if(O==O)break rW;f=4268}switch(a=p[f>>2],O=w(NaN),l[f+4>>2]-1|0){case 0:break rg;case 1:break rZ;default:break rR}}if(W=(-1073741825&i)+536870912|0,t[2]=W,a=u(),!(1073741824&i))break rg}O=w(w(a*o)*w(.009999999776482582));break rR}O=a}if((a=w(((i=U>>>0>1)?e:P)-rh))==a&a>H||(a=w((i?X:O)-rh))==a&a>2]+11|0])break rs;if(a=H,!l[r+552>>2]|z==w(0))break rc;e=p[r+32>>2];rV:{rB:{if(e==e){a=e;break rB}if(!((a=p[r+28>>2])>w(0)))break rV}if(a!=a){a=Q;break rc}e=p[r+32>>2]}if(e!=e&&(a=H,!((e=p[r+28>>2])>w(0)))||(a=Q,e!=w(0)))break rc;a=H;break rc}a=Q}if(a!=a)break rc;S=w(a-H);break rk}if(!(H>2])+308>>2],a=ro(i,U,H,rC);rI:{if(S>2];rX:{if(!Y){X=w(0);break rX}if((X=p[i+36>>2])==X)break rX;if(s[i+4|0]<0){X=w(1);break rX}if(X=w(0),!((e=p[i+28>>2])w(0)|e>2])==a)break rL;if(s[i+4|0]<0){a=w(1);break rL}if(a=w(0),!((X=p[i+28>>2])w(0))|!l[i+552>>2]||(X=p[i+32>>2])!=X&&!((X=p[i+28>>2])>w(0))||!(Xw(0)))break rI;_=(e=ro(i,U,P=w(w(w(S/z)*X)+a),Q))!=e,H=w(w(rZ(i,U,C)+rM(i,U))+w(rW(i,U,C)+rU(i,U)));r_:{if(!(_|H!=H)){e=eu(e,H);break r_}e=_?H:e}if(P!=P|e!=e|e==P)break rI;z=w(z-X),O=w(O+w(e-a))}if((0|rr)==(0|(f=f+4|0)))break}for(H=w(S-O),rD=w(H/rn),rx=w(H/z),rK=!(ra=rw&(!(12&d[r+26|0])|ef)),rN=l[$>>2],P=w(0),_=ri;;){f=l[_>>2],a=ro(f,U,p[f+308>>2],rC);rF:{rC:{if(H>2]){e=w(0);break rS}if((e=p[f+36>>2])==e)break rS;if(s[f+4|0]<0){e=w(1);break rS}if(e=w(0),!((X=p[f+28>>2])w(0))|!l[f+552>>2]||(e=p[f+32>>2])!=e&&!((e=p[f+28>>2])>w(0))||!(ew(0)))break rF;e=w(w(rx*e)+a)}if(i=(e=ro(f,U,e,Q))!=e,X=w(w(rZ(f,U,C)+rM(f,U))+w(rW(f,U,C)+rU(f,U))),!(i|X!=X)){X=eu(e,X);break rF}X=i?X:e}e=rP(f,U,C),O=rS(f,U,C),z=rP(f,N,C),rq=rS(f,N,C),O=w(e+O),r4=w(X+O),p[I+352>>2]=r4,l[I+344>>2]=1,z=w(z+rq),e=p[f+224>>2];rP:{if(e==e){l[I+348>>2]=1,O=w(r4-O),p[I+356>>2]=z+(rk?w(O*e):w(O/e)),O=p[(Y=f+(rN<<3)|0)+572>>2],i=l[Y+576>>2],e=p[Y+572>>2];break rP}e=p[(Y=f+(rN<<3)|0)+572>>2];rY:{rU:{rM:{rH:{rQ:{rz:{rj:{rD:{rx:{if(!rl){O=p[Y+572>>2],i=l[Y+576>>2];break rx}O=p[Y+572>>2];rJ:{rK:{rq:{r$:switch(0|(i=l[Y+576>>2])){case 0:case 3:break rq;default:break r$}if(!((0|i)!=1|e!=e)){if(!(ra&O>2]>>>13&7)||(Y=l[r+24>>2]>>>10&7),(0|Y)!=4||(ea(I+24|0,f,N),3==l[I+28>>2]))break rJ;if(ee(I+360|0,f,N),3!=l[I+364>>2])break rD}e=O}switch(0|i){case 0:case 3:break rz;default:break rj}}l[I+348>>2]=1;break rU}if(!((0|i)!=1|e!=e)){if((e=O)>2]=ei;break rU}e=w(NaN);r0:switch(i-1|0){case 1:break rH;case 0:break r0;default:break rM}e=O;break rM}e=w(w(K*O)*w(.009999999776482582))}e=w(z+e),p[I+356>>2]=e,l[I+348>>2]=(rw|(0|i)!=2)&e==e;break rY}p[I+356>>2]=K}e=O}rg(f,U,Q,C,I+344|0,I+352|0),rg(f,N,K,C,I+348|0,I+356|0);r2:{r1:{r4:{r3:switch(0|i){case 0:case 3:break r4;default:break r3}if(!((0|i)!=1|e!=e)){if(O>2]>>>13&7)||(i=l[r+24>>2]>>>10&7),(0|i)!=4||(ea(I+24|0,f,N),3==l[I+28>>2]))break r2;ee(I+360|0,f,N),Y=3!=l[I+364>>2];break r2}Y=0}e=p[I+352>>2],O=p[I+356>>2],z=(i=U>>>0>1)?e:O,e=i?O:e,rJ=l[I+344>>2],r3=l[I+348>>2],et=i?rJ:r3,rJ=i?r3:rJ,i=(1^Y)&c,rt(f,z,e,3&d[r+300|0],et,rJ,C,J,i,i?4:7,A,h,v,m),P=w(P+w(X-a)),i=d[r+300|0];r8:{r6:{if(4&i){Y=251&i;break r6}if(Y=251&i,i=0,!(4&d[f+300|0]))break r8}i=4}if(s[r+300|0]=i|Y,(0|rr)==(0|(_=_+4|0)))break}}S=w(S-P)}i=d[r+300|0],s[r+300|0]=251&i|(Sw(0))|(0|rG)!=2)){P=w(0),a=w(0);r9:{r7:{e=p[(i=rF+(l[r_>>2]<<2)|0)>>2],f=(0|(i=l[i>>2]))==2139156720;er:{if(!f){if(_=(0|i)==2140081935)break r7;if((Y=(0|i)==2141891242)|e!=e)break r5;if(_)break r7;if(Y)break r5;if(V=(-1073741825&i)+536870912|0,t[2]=V,a=u(),!(1073741824&i))break er}a=w(w(rC*a)*w(.009999999776482582))}if(a!=a)break r5;a=w(0);ee:if(!f){if((0|i)==2140081935)break r7;f=4276;ea:{if((0|i)!=2141891242){if(e==e)break ea;f=4268}switch(a=p[f>>2],X=w(NaN),l[f+4>>2]-1|0){case 0:break r7;case 1:break ee;default:break r9}}if(B=(-1073741825&i)+536870912|0,t[2]=B,a=u(),!(1073741824&i))break r7}X=w(w(rC*a)*w(.009999999776482582));break r9}X=a}if((e=w(w(w(X-O)-rD)-w(Q-S)))!=e)break r5;P=eu(e,w(0));break r5}P=S}Y=L>>>0<=F>>>0;ei:{if(!Y){for(rr=l[r+556>>2],ra=(i=l[r+560>>2]-rr>>2)>>>0>>0?F:i,_=0,i=F;;){if((0|i)==(0|ra))break re;if(f=l[rr+(i<<2)>>2],(196608&l[f+24>>2])!=131072&&(ea(rN=I+24|0,f,U),rK=l[I+28>>2],ee(rN,f,U),_=(((0|rK)==3)+_|0)+(3==l[I+28>>2])|0),(0|L)==(0|(i=i+1|0)))break}if(z=w(0),a=H,_)break ei}z=w(0),_=0,a=H;en:switch((l[r+24>>2]>>>4&7)-1|0){case 0:z=w(P*w(.5));break ei;case 1:z=P;break ei;case 2:if(x>>>0<2)break ei;a=w(H+w((eo=w(0),ek=eu(P,w(0)),((eb=P!=P)?eo:ek)/w(x-1>>>0))));break ei;case 4:z=w(P/w(x+1>>>0)),a=w(H+z);break ei;case 3:break en;default:break ei}z=w(w(P*w(.5))/w(x>>>0)),a=w(w(z+z)+H)}if(e=w(O+z),S=w(0),x=rj(r),Y)a=w(0);else{for(rr=L-1|0,rx=w(P/w(0|_)),O=w(0),X=w(0),i=F;;){if(f=l[r+556>>2],l[r+560>>2]-f>>2>>>0<=i>>>0)break re;_=(f=l[f+(i<<2)>>2])+228|0,ru(I+24|0,_,320),a=w(a-((0|i)==(0|rr)?H:w(0))),ra=l[f+24>>2];ef:if(!(4194304&ra)){et:{if((196608&ra)==131072){if(!r5(f,U))break et;if(!c)break ef;P=rI(f,U,Q),rn=rM(r,U),rq=rP(f,U,C),p[_+(l[rA>>2]<<2)>>2]=rq+w(P+rn);break ef}if(ea(I+360|0,f,U),e=w(e+(3==l[I+364>>2]?rx:w(-0))),c&&(ra=_,_=l[rA>>2]<<2,p[ra+_>>2]=e+p[_+(I+24|0)>>2]),ee(I+360|0,f,U),e=w(e+(3==l[I+364>>2]?rx:w(-0))),!er){e=w(e+w(w(a+w(rP(f,U,C)+rS(f,U,C)))+p[I+104>>2])),S=K;break ef}if(e=w(e+w(a+w(p[(_=f+516|0)+(l[r_>>2]<<2)>>2]+w(rP(f,U,C)+rS(f,U,C))))),x){P=rR(f),rn=rP(f,0,C),P=w(P+rn),rn=w(w(p[f+520>>2]+w(rP(f,0,C)+rS(f,0,C)))-P),f=O!=O;eb:{if(!(f|P!=P)){O=eu(O,P);break eb}O=f?P:O}if(!((f=X!=X)|rn!=rn)){X=eu(X,rn);break ef}X=f?rn:X;break ef}if(!((P=w(p[_+(l[$>>2]<<2)>>2]+w(rP(f,N,C)+rS(f,N,C))))!=P|(f=S!=S))){S=eu(S,P);break ef}S=f?P:S;break ef}if(!c)break ef;P=p[(f=l[rA>>2]<<2)+(I+24|0)>>2],eb=f+_|0,eo=w(z+w(P+rM(r,U))),p[eb>>2]=eo}if((0|L)==(0|(i=i+1|0)))break}a=w(X+O)}if(O=x?a:S,P=K,!r9){i=(a=ro(r,N,w(rb+O),rz))!=a,X=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N)));eo:{if(!(i|X!=X)){a=eu(a,X);break eo}a=i?X:a}P=w(a-rb)}i=(a=ro(r,N,w(rb+(r7?K:O)),rz))!=a,X=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N)));ek:{if(!(i|X!=X)){a=eu(a,X);break ek}a=i?X:a}if(X=w(a-rb),!(!c|Y))for(;;){if(i=l[r+556>>2],l[r+560>>2]-i>>2>>>0<=F>>>0)break re;i=l[i+(F<<2)>>2],f=l[i+24>>2];ec:if(!(4194304&f)){if((196608&f)==131072){if(f=l[q>>2],r5(i,N)&&(a=w(w(rI(i,N,K)+rM(r,N))+rP(i,N,C)),p[(i+(f<<2)|0)+228>>2]=a,a==a))break ec;eb=i+(f<<2)|0,eo=w(rM(r,N)+rP(i,N,C)),p[eb+228>>2]=eo;break ec}(f=f>>>13&7)||(f=l[r+24>>2]>>>10&7);eu:{es:{eA:{if((0|f)==5){f=8&l[r+24>>2]?5:1;break eA}if((0|f)!=4||(ea(I+24|0,i,N),f=4,3==l[I+28>>2]))break eA;if(ee(I+360|0,i,N),_=l[$>>2],3==l[I+364>>2])break es;O=p[(_=i+(_<<3)|0)+572>>2];el:{ed:switch(0|(f=l[_+576>>2])){case 0:case 3:break el;default:break ed}if(S=p[_+572>>2],!((0|f)!=1|S!=S)){if(a=D,O>2]<<2)|0)+516>>2],a=(a=p[i+224>>2])==a?w(w(rP(i,N,C)+rS(i,N,C))+(rk?w(O*a):w(O/a))):X,p[I+360>>2]=a,eb=I,eo=w(O+w(rP(i,U,C)+rS(i,U,C))),p[eb+24>>2]=eo,l[I+356>>2]=1,l[I+352>>2]=1,rg(i,U,Q,C,I+356|0,I+24|0),rg(i,N,K,C,I+352|0,I+360|0),O=p[I+360>>2],S=p[I+24>>2],a=(f=U>>>0>1)?O:S,O=f?S:O,f=(0|rp)!=0&(896&l[r+24>>2])!=512,rt(i,O,a,rf,!(f&rk|O!=O),(!f|rk)&a==a,C,J,1,2,A,h,v,m),a=D;break eu}_=l[$>>2]}a=p[((_<<2)+i|0)+516>>2],O=rP(i,N,C),S=rS(i,N,C),ea(I+24|0,i,N),O=w(P-w(a+w(O+S)));eh:if(3==l[I+28>>2]){if(ee(I+360|0,i,N),3!=l[I+364>>2])break eh;a=w(O*w(.5)),a=w(D+(eo=w(0),ek=eu(a,w(0)),(eb=a!=a)?eo:ek));break eu}if(ee(I+24|0,i,N),a=D,3==l[I+28>>2])break eu;if(ea(I+24|0,i,N),3==l[I+28>>2]){a=w(D+(eo=w(0),ek=eu(O,w(0)),(eb=O!=O)?eo:ek));break eu}ev:switch(f-1|0){case 1:a=w(D+w(O*w(.5)));break eu;case 0:break eu;default:break ev}a=w(D+O)}p[(i=i+(l[q>>2]<<2)|0)+228>>2]=a+w(rX+p[i+228>>2])}if((0|(F=F+1|0))==(0|L))break}a=w((j?r1:w(0))+X),i=rY!=rY,e=w(rD+e);ep:{if(!(i|e!=e)){rY=eu(rY,e);break ep}rY=i?e:rY}if(rX=w(rX+a),i=j+1|0,F=L,!(L>>>0>>0))break}em:if(c&&(rp||rj(r))){O=w(0);eN:{ew:if(K==K){e=w(K-rX);ey:switch((l[r+24>>2]>>>7&7)-2|0){case 0:D=w(D+w(e*w(.5)));break ew;case 2:if(!(K>rX))break ew;O=w(e/w(i>>>0));break ew;case 5:if(K>rX){if(D=w(D+w(e/w(i<<1>>>0))),i>>>0<2)break ew;O=w(e/w(i>>>0));break eN}D=w(D+w(e*w(.5)));break ew;case 4:if(!(K>rX)|i>>>0<2)break ew;O=w(e/w(j>>>0));break eN;case 1:break ey;default:break ew}D=w(D+e)}if(!i)break em}for(_=0,i=0,f=0;;){if(S=w(0),a=w(0),e=w(0),X=w(0),L=i,i>>>0>>0){eE:{for(;;){if(f=l[r+556>>2],l[r+560>>2]-f>>2>>>0<=L>>>0)break re;F=l[f+(L<<2)>>2],Y=l[F+24>>2];eG:if(!(4194304&Y|(196608&Y)==131072)){if(f=L,l[F+548>>2]!=(0|_))break eE;e=p[(F+(l[$>>2]<<2)|0)+516>>2];eR:if(e>=w(0)){if(f=a!=a,e=w(e+w(rP(F,N,C)+rS(F,N,C))),!(f|e!=e)){a=eu(a,e);break eR}a=f?e:a}if((f=Y>>>13&7)||(f=l[r+24>>2]>>>10&7),!(8&d[r+24|0])|(0|f)!=5)break eG;e=rR(F),P=rP(F,0,C),e=w(e+P),P=w(w(p[F+520>>2]+w(rP(F,0,C)+rS(F,0,C)))-e),f=a!=a,F=X!=X;eg:{if(!(F|e!=e)){X=eu(X,e);break eg}X=F?e:X}F=S!=S;eZ:{if(!(F|P!=P)){S=eu(S,P);break eZ}S=F?P:S}if(!(f|(e=w(X+S))!=e)){a=eu(a,e);break eG}a=f?e:a}if((0|rd)==(0|(L=L+1|0)))break}f=rd}e=a}if(P=w(D+(_?r1:w(0))),a=w(O+e),D=w(P+a),i>>>0>>0)for(H=w(P+X);;){if(L=l[r+556>>2],l[r+560>>2]-L>>2>>>0<=i>>>0)break re;F=l[L+(i<<2)>>2],L=l[F+24>>2];eW:if(!(4194304&L|(196608&L)==131072)){(L=L>>>13&7)||(L=l[r+24>>2]>>>10&7);eV:{eB:switch(L-1|0){case 4:if(8&d[r+24|0])break eV;case 0:e=rP(F,N,C),p[(F+(l[q>>2]<<2)|0)+228>>2]=P+e;break eW;case 2:e=rS(F,N,C),p[(L=F+228|0)+(l[q>>2]<<2)>>2]=w(D-e)-p[(L+(l[$>>2]<<2)|0)+288>>2];break eW;case 1:p[(L=F+228|0)+(l[q>>2]<<2)>>2]=P+w(w(a-p[(L+(l[$>>2]<<2)|0)+288>>2])*w(.5));break eW;case 3:break eB;default:break eW}e=rP(F,N,C),p[(F+(l[q>>2]<<2)|0)+228>>2]=P+e,e=p[(L=Y=F+(l[$>>2]<<3)|0)+572>>2];eT:{eI:switch(0|(L=l[L+576>>2])){case 0:case 3:break eT;default:break eI}if(X=p[Y+572>>2],!((0|L)!=1|X!=X)){if(e>>0>=2){S=a,e=p[F+516>>2],X=w(e+w(rP(F,U,C)+rS(F,U,C)));break eX}S=w(p[F+520>>2]+w(rP(F,N,C)+rS(F,N,C))),e=p[F+516>>2],X=a}eO:{eL:{if(!(X!=X|e!=e)){if(w(y(w(X-e)))>2])!=e)|S!=S)){if(!(w(y(w(S-e)))>2]=eo}if((0|f)==(0|(i=i+1|0)))break}if(L=(0|_)!=(0|j),_=_+1|0,i=f,!L)break}}_=r+516|0,i=(e=ro(r,2,r0,b))!=e,a=w(w(rZ(r,2,b)+rM(r,2))+w(rW(r,2,b)+rU(r,2)));e_:{if(!(i|a!=a)){e=eu(e,a);break e_}e=i?a:e}p[_>>2]=e,i=(e=ro(r,0,r2,o))!=e,a=w(w(rZ(r,0,b)+rM(r,0))+w(rW(r,0,b)+rU(r,0)));eF:{if(!(i|a!=a)){e=eu(e,a);break eF}e=i?a:e}p[r+520>>2]=e;eC:{eS:{eP:if(!rG||!((0|(i=l[r+24>>2]>>>20&3))==2|(0|rG)!=2)){if(i=(e=ro(r,U,rY,rC))!=e,a=w(w(rZ(r,U,b)+rM(r,U))+w(rW(r,U,b)+rU(r,U))),!(i|a!=a)){e=eu(e,a);break eS}e=i?a:e;break eS}if((0|rG)!=2|(0|i)!=2)break eC;i=(a=w(rh+Q))!=a,e=ro(r,U,rY,rC);eY:{if(!(i|e!=e)){e=es(a,e);break eY}e=i?e:a}if(!((i=e!=e)|rh!=rh)){e=eu(e,rh);break eS}e=i?rh:e}p[_+(l[r_>>2]<<2)>>2]=e}eU:{eM:{eH:if(!M||(f=(0|M)!=2,i=l[r+24>>2]>>>20&3,!(f|(0|i)==2))){if(i=(e=ro(r,N,w(rb+rX),rz))!=e,a=w(w(rZ(r,N,b)+rM(r,N))+w(rW(r,N,b)+rU(r,N))),!(i|a!=a)){e=eu(e,a);break eM}e=i?a:e;break eM}if(f|(0|i)!=2)break eU;i=(a=w(rb+K))!=a,e=ro(r,N,w(rb+rX),rz);eQ:{if(!(i|e!=e)){e=es(a,e);break eQ}e=i?e:a}if(!((i=e!=e)|rb!=rb)){e=eu(e,rb);break eM}e=i?rb:e}p[_+(l[$>>2]<<2)>>2]=e}ez:if(c){if(i=l[r+560>>2],F=l[r+556>>2],(786432&l[r+24>>2])==524288){for(f=rd>>>0<=1?1:rd,c=i-F>>2,i=0;L=0,L=i>>>0>>0?l[(i<<2)+F>>2]:L,(196608&l[L+24>>2])!=131072&&(Y=(L=L+228|0)+(l[q>>2]<<2)|0,j=l[$>>2]<<2,p[Y>>2]=w(p[j+_>>2]-p[Y>>2])-p[(L+j|0)+288>>2]),(0|f)!=(0|(i=i+1|0)););F=l[r+556>>2],i=l[r+560>>2]}if((0|i)!=(0|F))for(j=((U>>>0>1?rG:n)|0)!=0;;){c=l[F>>2];ej:if((4390912&l[c+24>>2])==131072){a=C,Q=J,d[l[r+568>>2]+21|0]&&(Q=p[r+520>>2],a=p[r+516>>2]),n=l[r+24>>2]>>>2&3;eD:{ex:{if((0|rf)==2){f=0,L=3;eJ:switch(n-2|0){case 0:break eD;case 1:break eJ;default:break ex}L=2;break eD}if(f=0,n>>>0<=1)break ex;L=n;break eD}L=n,f=rL}o=w(rP(c,2,a)+rS(c,2,a)),O=rP(c,0,a),S=rS(c,0,a),e=p[c+572>>2];eK:{eq:{e$:switch(0|(n=l[c+576>>2])){case 0:case 3:break eq;default:break e$}b=p[c+572>>2];e0:{if(!((0|n)!=1|b!=b)){if(X=e,!(e>2]-w(rM(r,2)+rU(r,2)))-w(rI(c,2,a)+rT(c,2,a))),a))!=e,b=w(w(rZ(c,2,a)+rM(c,2))+w(rW(c,2,a)+rU(c,2))),!(n|b!=b)){X=eu(e,b);break eK}X=n?b:e}S=w(O+S);e4:{e3:{e8:{e6:{e5:{e9:{e7:{Y=X!=X,b=p[c+580>>2];ar:{ae:{aa:switch(0|(n=l[c+584>>2])){case 0:case 3:break ae;default:break aa}e=p[c+580>>2];ai:{if(!((0|n)!=1|e!=e)){if(!((e=b)>2]-w(rM(r,0)+rU(r,0)))-w(rI(c,0,Q)+rT(c,0,Q))),Q))!=e,b=w(w(rZ(c,0,a)+rM(c,0))+w(rW(c,0,a)+rU(c,0))),!(n|b!=b)){e=eu(e,b);break ar}e=n?b:e}if((0|Y)==(e!=e|0)||(O=p[c+224>>2])!=O)break e5;if(X!=X){X=w(w(w(e-S)*O)+o);break e5}if(e==e)break e5;break e9}if((O=p[c+224>>2])!=O)break e6}e=w(S+w(w(X-o)/O))}if(X!=X)break e8;if(e==e)break e4}n=0;break e3}n=1}Y=a>w(0),b=(x=n&j&L>>>0<2)&&Y?a:X,n^=1,rt(c,b,e,rf,x&&Y?2:n,e==e,b,e,0,6,A,h,v,m),X=w(p[c+516>>2]+eW(c,2,a)),e=w(p[c+520>>2]+eW(c,0,a))}rt(c,X,e,rf,1,1,X,e,1,1,A,h,v,m),o=(n=L>>>0<2)?a:Q,b=d[(Y=l[r+568>>2])+22|0]?o:a;ab:{ao:{ak:if(!(!r6(c,L)||r5(c,L))){x=l[(L<<2)+4252>>2]<<2,e=w(w(w(w(p[x+_>>2]-p[(c+x|0)+516>>2])-rU(r,L))-rS(c,L,b))-rT(c,L,n?Q:a));break ao}if(!(r5(c,L)|(112&l[r+24>>2])!=16)){n=l[(L<<2)+4252>>2]<<2,e=w(w(p[n+_>>2]-p[(n+c|0)+516>>2])*w(.5));break ao}if(!(r5(c,L)|(112&l[r+24>>2])!=32)){n=l[(L<<2)+4252>>2]<<2,e=w(p[n+_>>2]-p[(n+c|0)+516>>2]);break ao}if(!d[Y+21|0]||!r5(c,L))break ab;e=p[_+(l[(L<<2)+4252>>2]<<2)>>2],e=w(w(rI(c,L,e)+rM(r,L))+rP(c,L,e))}p[(c+(l[(L<<2)+4220>>2]<<2)|0)+228>>2]=e}ac:{au:if(!(!r6(c,f)||r5(c,f))){n=l[(f<<2)+4252>>2]<<2,e=w(w(w(w(p[n+_>>2]-p[(n+c|0)+516>>2])-rU(r,f))-rS(c,f,b))-rT(c,f,o));break ac}as:if(!r5(c,f)){if((n=l[c+24>>2]>>>13&7)||(n=l[r+24>>2]>>>10&7),(0|n)!=2)break as;n=l[(f<<2)+4252>>2]<<2,e=w(w(p[n+_>>2]-p[(n+c|0)+516>>2])*w(.5));break ac}aA:if(!r5(c,f)){L=l[c+24>>2]>>>13&7,n=l[r+24>>2],L=L||n>>>10&7;al:{if(!((0|L)!=5|8&n)){if((786432&n)==524288)break al;break aA}if(((786432&n)==524288|0)==((0|L)==3|0))break aA}n=l[(f<<2)+4252>>2]<<2,e=w(p[n+_>>2]-p[(n+c|0)+516>>2]);break ac}if(!d[Y+21|0]||!r5(c,f))break ej;e=p[_+(l[(f<<2)+4252>>2]<<2)>>2],e=w(w(rI(c,f,e)+rM(r,f))+rP(c,f,e))}p[(c+(l[(f<<2)+4220>>2]<<2)|0)+228>>2]=e}if((0|(F=F+4|0))==(0|i))break}if(!((N|U)&1))break ez;for(f=1&N,c=1&U,A=rd>>>0<=1?1:rd,h=(N<<2)+4236|0,v=(U<<2)+4236|0,m=l[r+556>>2],N=l[r+560>>2]-m>>2,i=0;;){if((0|i)==(0|N))break re;r=l[m+(i<<2)>>2];ad:if(!(64&d[r+26|0])){if(c&&(n=r+228|0,L=l[r_>>2]<<2,p[n+(l[v>>2]<<2)>>2]=w(p[L+_>>2]-p[(n+L|0)+288>>2])-p[n+(l[rA>>2]<<2)>>2]),!f)break ad;r=r+228|0,n=l[$>>2]<<2,p[r+(l[h>>2]<<2)>>2]=w(p[n+_>>2]-p[(r+n|0)+288>>2])-p[r+(l[q>>2]<<2)>>2]}if((0|A)==(0|(i=i+1|0)))break}}if(!ri)break r;rE(ri);break r}T(),k()}re=I+384|0}function rn(){var r=0,e=0;B(6952,6953,6954,0,4284,17,4287,0,4287,0,2528,4289,18),l[(r=eo(8))>>2]=8,l[r+4>>2]=1,g(6952,2873,6,4304,4328,19,0|r,1),B(6956,6957,6958,6952,4284,20,4284,21,4284,22,2e3,4289,23),l[(r=eo(4))>>2]=24,g(6956,2358,2,4336,4344,25,0|r,0),W(6952,1397,2,4348,4356,26,27),W(6952,2978,3,4436,4448,28,29),B(6976,6977,6978,0,4284,30,4287,0,4287,0,2544,4289,31),l[(r=eo(8))>>2]=8,l[r+4>>2]=1,g(6976,3244,2,4456,4344,32,0|r,1),B(6979,6980,6981,6976,4284,33,4284,34,4284,35,2023,4289,36),l[(r=eo(4))>>2]=37,g(6979,2358,2,4464,4344,38,0|r,0),W(6976,1397,2,4472,4356,39,40),W(6976,2978,3,4436,4448,28,41),B(6982,6983,6984,0,4284,42,4287,0,4287,0,2812,4289,43),P(6982,1,4520,4284,44,45),W(6982,2866,1,4520,4284,44,45),W(6982,1128,2,4524,4344,46,47),l[(r=eo(8))+4>>2]=0,l[r>>2]=48,g(6982,3185,4,4544,4560,49,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=50,g(6982,1980,3,4568,4580,51,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=52,g(6982,1951,3,4588,4600,53,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=54,g(6982,1799,3,4588,4600,53,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=55,g(6982,3215,3,4608,4448,56,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=57,g(6982,1925,2,4620,4356,58,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=59,g(6982,1784,2,4620,4356,58,0|r,0),_(6985,1270,4628,60,4289,61),eh(1731,0),eh(1611,8),eh(2144,16),eh(2454,24),eh(2560,32),eh(1617,40),L(6985),_(6955,2849,4628,62,4289,63),ed(2560,0),ed(1617,8),L(6955),_(6986,2860,4628,64,4289,65),l[(r=eo(4))>>2]=8,l[(e=eo(4))>>2]=8,X(6986,2854,7018,4630,66,0|r,7018,4634,67,0|e),l[(r=eo(4))>>2]=0,l[(e=eo(4))>>2]=0,X(6986,1606,7011,4356,68,0|r,7011,4600,69,0|e),L(6986),B(6987,6988,6989,0,4284,70,4287,0,4287,0,2973,4289,71),P(6987,1,4640,4284,72,73),W(6987,1592,1,4640,4284,72,73),W(6987,2802,2,4644,4356,74,75),W(6987,1128,2,4652,4344,76,77),l[(r=eo(8))+4>>2]=0,l[r>>2]=78,g(6987,1752,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=80,g(6987,2956,3,4660,4600,81,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=82,g(6987,2881,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=84,g(6987,2334,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=86,g(6987,1484,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=87,g(6987,1355,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=88,g(6987,1817,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=89,g(6987,2823,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=90,g(6987,2378,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=91,g(6987,2163,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=92,g(6987,1319,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=93,g(6987,2412,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=94,g(6987,1503,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=95,g(6987,2235,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=96,g(6987,1219,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=97,g(6987,1136,3,4672,4600,83,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=98,g(6987,1158,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=100,g(6987,1845,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=101,g(6987,1464,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=102,g(6987,2218,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=103,g(6987,1195,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=104,g(6987,2500,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=105,g(6987,2590,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=106,g(6987,1539,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=107,g(6987,2249,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=108,g(6987,1650,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=109,g(6987,1427,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=110,g(6987,2204,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=111,g(6987,2608,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=112,g(6987,1555,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=113,g(6987,1670,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=114,g(6987,1444,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=115,g(6987,2566,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=116,g(6987,1520,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=117,g(6987,1624,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=118,g(6987,1407,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=119,g(6987,2304,3,4712,4634,99,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=120,g(6987,2092,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=121,g(6987,2718,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=122,g(6987,1574,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=123,g(6987,2187,4,4688,4704,85,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=124,g(6987,2897,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=126,g(6987,2346,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=128,g(6987,1371,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=129,g(6987,1831,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=130,g(6987,2836,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=131,g(6987,2395,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=132,g(6987,2175,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=133,g(6987,1337,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=134,g(6987,2422,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=135,g(6987,1858,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=137,g(6987,1207,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=139,g(6987,2514,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=140,g(6987,2599,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=141,g(6987,1660,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=142,g(6987,2620,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=143,g(6987,1683,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=144,g(6987,2578,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=145,g(6987,1637,2,4744,4356,136,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=146,g(6987,2319,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=147,g(6987,2102,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=149,g(6987,1231,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=150,g(6987,1147,2,4724,4356,125,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=151,g(6987,2729,3,4732,4448,127,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=152,g(6987,2194,3,4780,4792,153,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=154,g(6987,2985,4,4800,4560,155,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=156,g(6987,3006,3,4816,4600,157,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=158,g(6987,1292,2,4828,4356,159,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=160,g(6987,1387,2,4836,4356,161,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=162,g(6987,2997,3,4844,4448,163,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=164,g(6987,2913,2,4856,4356,165,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=166,g(6987,2933,3,4864,4600,167,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=168,g(6987,3308,3,4876,4600,169,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=170,g(6987,3306,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=171,g(6987,3325,3,4888,4600,172,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=173,g(6987,3323,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=174,g(6987,1118,2,4652,4344,79,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=175,g(6987,1110,2,4900,4356,176,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=177,g(6987,1243,5,4912,4932,178,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=179,g(6987,1736,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=180,g(6987,1714,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=181,g(6987,2148,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=182,g(6987,2461,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=183,g(6987,2632,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=184,g(6987,1696,2,4752,4630,138,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=185,g(6987,1259,2,4940,4356,186,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=187,g(6987,2432,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=188,g(6987,2112,3,4760,4772,148,0|r,0),l[(r=eo(8))+4>>2]=0,l[r>>2]=189,g(6987,2740,3,4760,4772,148,0|r,0)}function rf(r,e,a,i,n,f,t){var b=0,o=0,k=0,c=0,u=0,h=0,v=0,p=0,w=0,y=0,E=0,G=0,R=0,g=0,Z=0,W=0,V=0,B=0,T=0,I=0;re=k=re-80|0,l[k+76>>2]=e,B=k+55|0,R=k+56|0;r:{e:{a:{i:{n:for(;;){if(c=e,(2147483647^w)<(0|b))break i;w=b+w|0;f:{t:{b:{if(o=d[0|(b=c)])for(;;){o:{e=255&o;k:{if(!e){e=b;break k}if((0|e)!=37)break o;for(o=b;;){if(37!=d[o+1|0]){e=o;break k}if(b=b+1|0,u=d[o+2|0],o=e=o+2|0,(0|u)!=37)break}}if((0|(b=b-c|0))>(0|(V=2147483647^w)))break i;if(r&&rF(r,c,b),b)continue n;l[k+76>>2]=e,b=e+1|0,E=-1,!eO(o=s[e+1|0])|36!=d[e+2|0]||(E=o-48|0,g=1,b=e+3|0),l[k+76>>2]=b,p=0,e=(o=s[0|b])-32|0;c:{if(e>>>0>31){u=b;break c}if(u=b,!(75913&(e=1<>2]=u,p|=e,(e=(o=s[b+1|0])-32|0)>>>0>=32)break c;if(b=u,!(75913&(e=1<>2]=10,o=u+3|0,g=1,y=l[((s[u+1|0]<<3)+i|0)-384>>2];break s}if(g)break b;if(o=u+1|0,!r){l[k+76>>2]=o,g=0,y=0;break u}e=l[a>>2],l[a>>2]=e+4,g=0,y=l[e>>2]}if(l[k+76>>2]=o,(0|y)>=0)break u;y=0-y|0,p|=8192;break u}if((0|(y=ei(k+76|0)))<0)break i;o=l[k+76>>2]}b=0,v=-1;A:{if(46!=d[0|o]){e=o,G=0;break A}if(42==d[o+1|0]){e=s[o+2|0];l:{if(!(!eO(e)|36!=d[o+3|0])){l[((e<<2)+n|0)-192>>2]=10,e=o+4|0,v=l[((s[o+2|0]<<3)+i|0)-384>>2];break l}if(g)break b;if(e=o+2|0,v=0,!r)break l;o=l[a>>2],l[a>>2]=o+4,v=l[o>>2]}l[k+76>>2]=e,G=(-1^v)>>>31|0;break A}l[k+76>>2]=o+1,v=ei(k+76|0),e=l[k+76>>2],G=1}for(;;){if(h=b,u=28,Z=e,(b=s[0|e])-123>>>0<4294967238)break a;if(e=Z+1|0,!((b=d[(b+N(h,58)|0)+4895|0])-1>>>0<8))break}l[k+76>>2]=e;d:{h:{if((0|b)!=27){if(!b)break a;if((0|E)>=0){l[(E<<2)+n>>2]=b,o=l[(b=(E<<3)+i|0)+4>>2],l[k+64>>2]=l[b>>2],l[k+68>>2]=o;break h}if(!r)break f;rN(k- -64|0,b,a,t);break d}if((0|E)>=0)break a}if(b=0,!r)continue n}o=-65537&p,p=8192&p?o:p,E=0,W=1166,u=R;v:{p:{m:{N:{w:{y:{E:{G:{R:{g:{Z:{W:{V:{B:{T:{I:switch(b=s[0|Z],(b=h&&(15&b)==3?-33&b:b)-88|0){case 11:break v;case 9:case 13:case 14:case 15:break p;case 27:break E;case 12:case 17:break g;case 23:break Z;case 0:case 32:break W;case 24:break V;case 22:break B;case 29:break T;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break t;default:break I}X:switch(b-65|0){case 0:case 4:case 5:case 6:break p;case 2:break w;case 1:case 3:break t;default:break X}if((0|b)==83)break y;break t}o=l[k+64>>2],h=l[k+68>>2],b=1166;break R}b=0;O:switch(255&h){case 0:case 1:case 6:l[l[k+64>>2]>>2]=w;continue n;case 2:c=l[k+64>>2],l[c>>2]=w,l[c+4>>2]=w>>31;continue n;case 3:A[l[k+64>>2]>>1]=w;continue n;case 4:s[l[k+64>>2]]=w;continue n;case 7:break O;default:continue n}c=l[k+64>>2],l[c>>2]=w,l[c+4>>2]=w>>31;continue n}v=v>>>0<=8?8:v,p|=8,b=120}if(c=R,o=l[k+64>>2],h=l[k+68>>2],o|h)for(T=32&b;s[0|(c=c-1|0)]=T|d[(15&o)+5424|0],I=!h&o>>>0>15|(0|h)!=0,Z=h,h=h>>>4|0,o=(15&Z)<<28|o>>>4,I;);if(!(8&p)|!(l[k+64>>2]|l[k+68>>2]))break G;W=(b>>>4|0)+1166|0,E=2;break G}if(b=R,h=c=l[k+68>>2],o=l[k+64>>2],c|o)for(;s[0|(b=b-1|0)]=7&o|48,Z=!h&o>>>0>7|(0|h)!=0,h=(c=h)>>>3|0,o=(7&c)<<29|o>>>3,Z;);if(c=b,!(8&p))break G;v=(0|(b=R-c|0))<(0|v)?v:b+1|0;break G}if(o=l[k+64>>2],h=b=l[k+68>>2],(0|b)<0){h=c=0-(h+((0|o)!=0)|0)|0,o=0-o|0,l[k+64>>2]=o,l[k+68>>2]=c,E=1,b=1166;break R}if(2048&p){E=1,b=1167;break R}b=(E=1&p)?1168:1166}W=b,c=rK(o,h,R)}if((0|v)<0?G:0)break i;if(p=G?-65537&p:p,b=l[k+64>>2],o=l[k+68>>2],!((b|o)!=0|v)){c=R,v=0;break t}v=(0|(b=!(b|o)+(R-c|0)|0))<(0|v)?v:b;break t}p=0,u=(0|(h=G=v>>>0>=2147483647?2147483647:v))!=0;L:{_:{b=c=(b=l[k+64>>2])||4208;F:{C:{S:if(!(!(3&b)|!h))for(;;){if(!(p=d[0|b]))break C;if(u=(0|(h=h-1|0))!=0,!(3&(b=b+1|0)))break S;if(!h)break}if(!u)break _;P:{if(!(!d[0|b]|h>>>0<4))for(;;){if((-1^(u=l[b>>2]))&u-16843009&-2139062144)break P;if(b=b+4|0,!((h=h-4|0)>>>0>3))break}if(!h)break _}u=0;break F}u=1}for(;;){if(!u){p=d[0|b],u=1;continue}if(!p)break L;if(b=b+1|0,!(h=h-1|0))break _;u=0}}b=0}if(u=(b=b?b-c|0:G)+c|0,(0|v)>=0){p=o,v=b;break t}if(p=o,v=b,d[0|u])break i;break t}if(v){o=l[k+64>>2];break N}b=0,er(r,32,y,0,p);break m}l[k+12>>2]=0,l[k+8>>2]=l[k+64>>2],o=k+8|0,l[k+64>>2]=o,v=-1}b=0;Y:{for(;;){if(!(c=l[o>>2]))break Y;if(!((u=(0|(c=el(k+4|0,c)))<0)|c>>>0>v-b>>>0)){if(o=o+4|0,v>>>0>(b=b+c|0)>>>0)continue;break Y}break}if(u)break e}if(u=61,(0|b)<0)break a;if(er(r,32,y,b,p),!b){b=0;break m}for(u=0,o=l[k+64>>2];;){if(!(c=l[o>>2])||(u=(c=el(k+4|0,c))+u|0)>>>0>b>>>0)break m;if(rF(r,k+4|0,c),o=o+4|0,!(b>>>0>u>>>0))break}}er(r,32,y,b,8192^p),b=(0|b)<(0|y)?y:b;continue n}if((0|v)<0?G:0)break i;if(u=61,(0|(b=0|eY[0|f](r,m[k+64>>3],y,v,p,b)))>=0)continue n;break a}s[k+55|0]=l[k+64>>2],v=1,c=B,p=o;break t}o=d[b+1|0],b=b+1|0}if(r)break r;if(!g)break f;for(b=1;;){if(r=l[(b<<2)+n>>2]){if(rN((b<<3)+i|0,r,a,t),w=1,(0|(b=b+1|0))!=10)continue;break r}break}if(w=1,b>>>0>=10)break r;for(;;){if(l[(b<<2)+n>>2])break b;if((0|(b=b+1|0))==10)break}break r}u=28;break a}if((0|(v=(0|v)>(0|(h=u-c|0))?v:h))>(2147483647^E))break i;if(u=61,(0|V)<(0|(b=(0|(o=v+E|0))<(0|y)?y:o)))break a;er(r,32,b,o,p),rF(r,W,E),er(r,48,b,o,65536^p),er(r,48,v,h,0),rF(r,c,h),er(r,32,b,o,8192^p);continue}break}w=0;break r}u=61}l[1761]=u}w=-1}return re=k+80|0,w}function rt(r,e,a,i,n,f,t,b,o,k,c,u,A,h){var m=w(0),E=0,G=0,R=0,g=w(0),Z=0,W=0,V=0,B=w(0);r:((l[r+312>>2]!=(0|h)?4&d[r+4|0]:0)||(Z=0,l[r+316>>2]!=(0|i)))&&(l[r+540>>2]=-1082130432,l[r+544>>2]=-1082130432,l[r+532>>2]=0,l[r+536>>2]=0,l[r+524>>2]=-1082130432,l[r+528>>2]=-1082130432,l[r+320>>2]=0,Z=1);W=A+1|0;e:{a:{i:{n:{if(l[r+8>>2]){if(g=rP(r,2,t),B=rS(r,2,t),m=w(rP(r,0,t)+rS(r,0,t)),A=r+524|0,g=w(g+B),rA(n,e,f,a,l[r+532>>2],p[A>>2],l[r+536>>2],p[r+528>>2],p[r+540>>2],p[r+544>>2],g,m,c))break i;if(!(G=l[r+320>>2]))break n;for(E=r+324|0;;){if(rA(n,e,f,a,l[(A=E+N(R,24)|0)+8>>2],p[A>>2],l[A+12>>2],p[A+4>>2],p[A+16>>2],p[A+20>>2],g,m,c))break i;if((0|G)==(0|(R=R+1|0)))break}break n}if(!o){if(!(V=l[r+320>>2]))break n;for(G=r+324|0;;){m=p[(A=(E=N(R,24))+G|0)>>2];f:{t:{if(!(m!=m|e!=e)){if(w(y(w(m-e)))>2];b:{if(!(m!=m|a!=a)){if(w(y(w(m-a)))>2]!=(0|n))break f;if(l[E+12>>2]==(0|f))break i}if((0|V)==(0|(R=R+1|0)))break}break n}m=p[(A=r+524|0)>>2];o:{if(!(m!=m|e!=e)){if(w(y(w(m-e)))>2]==(0|n)&&l[r+536>>2]==(0|f)?A:0,A=(m=p[r+528>>2])!=m,G=a!=a;k:{if(A|G){A&=G;break k}A=w(y(w(m-a)))>2]=i;break a}if(!(!A|Z)){p[r+516>>2]=p[A+16>>2],p[r+520>>2]=p[A+20>>2],l[(i=(o?12:16)+u|0)>>2]=l[i>>2]+1,i=0;break e}if(ri(r,e,a,i,n,f,t,b,o,c,u,W,h,k),l[r+316>>2]=i,i=1,A)break e}(i=(A=l[r+320>>2])+1|0)>>>0>v[u+8>>2]&&(l[u+8>>2]=i),(0|A)==8&&(l[r+320>>2]=0,A=0),o?i=r+524|0:(l[r+320>>2]=A+1,i=(N(A,24)+r|0)+324|0),l[i+12>>2]=f,l[i+8>>2]=n,p[i+4>>2]=a,p[i>>2]=e,p[i+16>>2]=p[r+516>>2],p[i+20>>2]=p[r+520>>2],i=1}c:if(o){if(n=l[r+520>>2],l[r+244>>2]=l[r+516>>2],l[r+248>>2]=n,f=1|(n=d[r+4|0]),s[r+4|0]=f,!(4&n))break c;s[r+4|0]=251&f}return l[r+312>>2]=h,i}function rb(r){r|=0;var e=0,a=0,i=0,n=0,f=0,t=0,b=0,o=0,k=0,c=0,u=0;b=8;r:if(!(r>>>0>4294967239)){e:{for(;;){b=b>>>0<=8?8:b,f=e=l[1731],n=l[1730],r=r>>>0<=8?8:r+3&-4;a:{if(r>>>0<=127){t=(r>>>3|0)-1|0;break a}if(i=E(r),t=((r>>>29-i^4)-(i<<2)|0)+110|0,r>>>0<=4095)break a;t=(i=((r>>>30-i^2)-(i<<1)|0)+71|0)>>>0>=63?63:i}if(a=31&t,(63&t)>>>0>=32?(i=0,e=e>>>a|0):(i=e>>>a|0,e=((1<>>a),e|i){for(;;){n=i;i:{if(e|i){o=(a=i-1|0)+1|0,f=a,f=(0|(a=e-1|0))!=-1?o:f,a=63-(i=(0|(i=E(i^f)))==32?E(e^a)+32|0:i)|0,ra=0-(i>>>0>63)|0;break i}ra=0,a=64}a=31&(f=a),(63&f)>>>0>=32?(i=0,e=n>>>a|0):(i=n>>>a|0,e=((1<>>a),o=e,e=l[(a=(t=f+t|0)<<4)+5896>>2],f=a+5888|0;n:{if((0|e)!=(0|f)){if(n=rp(e,b,r))break r;n=l[e+4>>2],l[n+8>>2]=l[e+8>>2],l[l[e+8>>2]+4>>2]=n,l[e+8>>2]=f,n=a+5892|0,l[e+4>>2]=l[n>>2],l[n>>2]=e,l[l[e+4>>2]+8>>2]=e,t=t+1|0,e=(1&i)<<31|o>>>1,i=i>>>1|0;break n}k=l[1731],n=31&(e=f=63&t),e>>>0>=32?(e=0,a=-1>>>n|0):a=(e=-1>>>n|0)|(1<>>0>=32?(e=a<>>32-n|e<>>0>=32?(e=-1<>>32-e,u=-2&a,a=31&f,f>>>0>=32?(f=0,e=e>>>a|0):(f=e>>>a|0,e=((1<>>a),e|=c,ra=n|f,l[1730]=l[1730]&e,l[1731]=ra&k,e=1^o}if(!(e|i))break}f=l[1731],n=l[1730]}f:{if(n|f){i=l[(e=(a=63-((0|(i=E(f)))==32?E(n)+32|0:i)|0)<<4)+5896>>2];t:if(!(!f&n>>>0<1073741824)){if(t=99,(0|(e=e+5888|0))==(0|i))break t;for(;;){if(!t)break t;if(n=rp(i,b,r))break r;if(t=t-1|0,i=l[i+8>>2],(0|e)==(0|i))break}i=e}if(rd(r+48|0))break f;if(!i||(0|(e=(a<<4)+5888|0))==(0|i))break e;for(;;){if(n=rp(i,b,r))break r;if(i=l[i+8>>2],(0|e)==(0|i))break}break e}if(!rd(r+48|0))break e}if(n=0,b-1&b)break r;if(!(r>>>0<=4294967239))break}break r}n=0}return 0|n}function ro(r,e,a,i){var n,f,b,o,k=w(0),c=w(0),s=0,A=w(0);r:{e:{a:{i:{n:{f:{if(e>>>0<=1){c=p[r+212>>2],e=l[r+212>>2];t:if((0|e)!=2139156720){if((0|e)==2140081935)break f;s=4276;b:{if((0|e)!=2141891242){if(c==c)break b;s=4268}switch(k=p[s>>2],c=w(NaN),l[s+4>>2]-1|0){case 0:break f;case 1:break t;default:break n}}if(n=(-1073741825&e)+536870912|0,t[2]=n,k=u(),!(1073741824&e))break f}c=w(w(k*i)*w(.009999999776482582));break n}c=p[r+208>>2];o:{k:{e=l[r+208>>2];c:if((0|e)!=2139156720){if((0|e)==2140081935)break k;s=4276;u:{if((0|e)!=2141891242){if(c==c)break u;s=4268}switch(k=p[s>>2],c=w(NaN),l[s+4>>2]-1|0){case 0:break k;case 1:break c;default:break o}}if(f=(-1073741825&e)+536870912|0,t[2]=f,k=u(),!(1073741824&e))break k}c=w(w(k*i)*w(.009999999776482582));break o}c=k}k=w(0),A=p[r+216>>2],r=l[r+216>>2];s:if((0|r)!=2139156720){if((0|r)==2140081935)break a;e=4276;A:{if((0|r)!=2141891242){if(A==A)break A;e=4268}switch(k=p[e>>2],l[e+4>>2]-1|0){case 1:break s;case 0:break i;default:break e}}if(b=(-1073741825&r)+536870912|0,t[2]=b,k=u(),!(1073741824&r))break i}k=w(w(k*i)*w(.009999999776482582));break i}c=k}k=w(0),A=p[r+220>>2],r=l[r+220>>2];l:if((0|r)!=2139156720){if((0|r)==2140081935)break a;e=4276;d:{if((0|r)!=2141891242){if(A==A)break d;e=4268}switch(k=p[e>>2],l[e+4>>2]-1|0){case 1:break l;case 0:break i;default:break e}}if(o=(-1073741825&r)+536870912|0,t[2]=o,k=u(),!(1073741824&r))break i}k=w(w(k*i)*w(.009999999776482582))}if(!(k>=w(0)))break e}if(a>k)break r}if(!(c>=w(0)))return a;k=a>2]=0,l[r+12>>2]=0,A[r+4>>1]=1,l[r>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,l[r+24>>2]=0,l[r+36>>2]=2143289344,l[r+40>>2]=2141891242,l[r+28>>2]=2143289344,l[r+32>>2]=2143289344,i=ry(r+44|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+80|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+116|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,i=ry(r+152|0,0,36);l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=9;);for(a=0,l[r+196>>2]=0,l[(i=r+188|0)>>2]=0,l[i+4>>2]=0;l[i+(a<<2)>>2]=2143289344,(0|(a=a+1|0))!=3;);for(l[r+24>>2]=4224,l[r+224>>2]=2143289344,l[r+216>>2]=2143289344,l[r+220>>2]=2143289344,l[r+208>>2]=2143289344,l[r+212>>2]=2143289344,l[r+200>>2]=2141891242,l[r+204>>2]=2141891242,ry(r+228|0,0,288),l[r+244>>2]=2143289344,l[r+248>>2]=2143289344,ry(r+252|0,0,49),l[r+308>>2]=2143289344,i=r+516|0,a=r+324|0;l[a+16>>2]=-1082130432,l[a+20>>2]=-1082130432,l[a+8>>2]=0,l[a+12>>2]=0,l[a>>2]=-1082130432,l[a+4>>2]=-1082130432,(0|i)!=(0|(a=a+24|0)););return l[r+548>>2]=0,l[r+552>>2]=0,l[r+516>>2]=2143289344,l[r+520>>2]=2143289344,l[r+572>>2]=2143289344,l[r+576>>2]=0,l[r+568>>2]=e,l[r+540>>2]=-1082130432,l[r+544>>2]=-1082130432,l[r+532>>2]=0,l[r+536>>2]=0,l[r+524>>2]=-1082130432,l[r+528>>2]=-1082130432,l[r+556>>2]=0,l[r+560>>2]=0,l[r+564>>2]=0,l[r+580>>2]=2143289344,l[r+584>>2]=0,d[e+10|0]&&(l[r+24>>2]=4616,s[r+4|0]=128|d[r+4|0]),r}function rc(r){var e,a,i=0,n=0,f=w(0),b=w(0),o=w(0),k=0,c=0,s=0,A=0,d=0,h=0,v=0,m=0,N=0;for(l[(k=re-16|0)+8>>2]=0,l[k+12>>2]=1,d=r+200|0,h=r+572|0,v=r+208|0,m=r+216|0,r=0;;){N=r,c=(A=l[(k+8|0)+(r<<2)>>2])<<2,f=p[(r=m+c|0)>>2];r:{e:{a:{i:{n:{f:if(!(!((s=(0|(i=l[r>>2]))==2139156720)|(0|i)==2140081935|(0|i)==2141891242)&f!=f)){b=p[(r=c+v|0)>>2],n=l[r>>2];t:{b:{if((0|n)!=2139156720){if(o=w(NaN),r=3,(0|n)==2141891242)break t;if((0|n)!=2140081935)break b;o=w(0),r=1;break t}o=w(0),r=2;break t}if(r=0,b!=b)break t;e=(-1073741825&n)+536870912|0,t[2]=e,o=u(),r=1073741824&n?2:1}n=r;o:{k:{if(!s){if(b=w(NaN),r=3,(0|i)==2141891242)break o;if((0|i)!=2140081935)break k;b=w(0),r=1;break o}b=w(0),r=2;break o}if(r=0,f!=f)break o;a=(-1073741825&i)+536870912|0,t[2]=a,b=u(),r=1073741824&i?2:1}if((0|n)!=(0|r)|!(!r|b!=b&o!=o|w(y(w(b-o)))>2],(0|(i=l[i>>2]))==2139156720)break n;if((0|i)==2140081935)break e;if((0|i)==2141891242)break a;if(f!=f)break i;r=(-1073741825&i)+536870912|0,i=1073741824&i?2:1;break r}i=2;break r}r=2143289344,i=0;break r}r=2143289344,i=3;break r}i=1}if(l[(n=(A<<3)+h|0)+4>>2]=i,l[n>>2]=r,r=1,1&N)break}}function ru(r,e,a){var i=0,n=0,f=0;if(a>>>0>=512)return x(0|r,0|e,0|a),r;n=r+a|0;r:{if(!((r^e)&3)){e:{if(!(3&r)||!a){a=r;break e}for(a=r;;){if(s[0|a]=d[0|e],e=e+1|0,!(3&(a=a+1|0)))break e;if(!(a>>>0>>0))break}}i=-4&n;a:if(!(i>>>0<64)&&!((f=i+-64|0)>>>0
>>0))for(;l[a>>2]=l[e>>2],l[a+4>>2]=l[e+4>>2],l[a+8>>2]=l[e+8>>2],l[a+12>>2]=l[e+12>>2],l[a+16>>2]=l[e+16>>2],l[a+20>>2]=l[e+20>>2],l[a+24>>2]=l[e+24>>2],l[a+28>>2]=l[e+28>>2],l[a+32>>2]=l[e+32>>2],l[a+36>>2]=l[e+36>>2],l[a+40>>2]=l[e+40>>2],l[a+44>>2]=l[e+44>>2],l[a+48>>2]=l[e+48>>2],l[a+52>>2]=l[e+52>>2],l[a+56>>2]=l[e+56>>2],l[a+60>>2]=l[e+60>>2],e=e- -64|0,f>>>0>=(a=a- -64|0)>>>0;);if(a>>>0>=i>>>0)break r;for(;l[a>>2]=l[e>>2],e=e+4|0,i>>>0>(a=a+4|0)>>>0;);break r}if(n>>>0<4||(i=n-4|0)>>>0>>0){a=r;break r}for(a=r;s[0|a]=d[0|e],s[a+1|0]=d[e+1|0],s[a+2|0]=d[e+2|0],s[a+3|0]=d[e+3|0],e=e+4|0,i>>>0>=(a=a+4|0)>>>0;);}if(a>>>0>>0)for(;s[0|a]=d[0|e],e=e+1|0,(0|n)!=(0|(a=a+1|0)););return r}function rs(r,e,a,i,n){var f,b,o=w(0),k=0,c=w(0),s=w(0),A=0,d=0,h=w(0),v=w(0),m=0;if(!(d=(c=w(a-i))!=c)){a=w(0),o=p[(k=(e<<2)+r|0)+208>>2];r:{e:{k=l[k+208>>2];a:{i:if((0|k)!=2139156720){if((0|k)==2140081935)break e;A=4276;n:{if((0|k)!=2141891242){if(o==o)break n;A=4268}switch(a=p[A>>2],l[A+4>>2]-1|0){case 0:break a;case 1:break i;default:break r}}if(f=(-1073741825&k)+536870912|0,t[2]=f,a=u(),!(1073741824&k))break a}a=w(w(a*n)*w(.009999999776482582))}if(a==a)break e;break r}s=w(a-i)}a=w(0),o=p[(r=(e<<2)+r|0)+216>>2];f:{t:{e=l[r+216>>2];b:{o:if((0|e)!=2139156720){if((0|e)==2140081935)break t;r=4276;k:{if((0|e)!=2141891242){if(o==o)break k;r=4268}switch(a=p[r>>2],o=w(34028234663852886e22),l[r+4>>2]-1|0){case 0:break b;case 1:break o;default:break f}}if(b=(-1073741825&e)+536870912|0,t[2]=b,a=u(),!(1073741824&e))break b}a=w(w(a*n)*w(.009999999776482582))}if(a==a)break t;o=w(34028234663852886e22);break f}o=w(a-i)}if(h=c,v=es(c,o),!((r=(a=o!=o|d?h:v)!=a)|s!=s))return eu(a,s);c=r?s:a}return c}function rA(r,e,a,i,n,f,t,b,o,k,c,u,s){var A=w(0),l=w(0),d=0,h=0,v=w(0),m=w(0),N=w(0),E=0,G=0;if(o>2],l=b,A==w(0))break r;m=rH(+e,E=+A,0,0),N=rH(+i,E,0,0),v=rH(+f,E,0,0),l=rH(+b,E,0,0)}A=l,s=0;e:if((0|r)==(0|n)){if((G=v!=v)|(s=m!=m)){s&=G;break e}s=w(y(w(v-m)))=o))break n;break i}if(s=0,!(e=o))break i}if((n=e!=e)|(r=o!=o)){s=r&n;break i}s=w(y(w(e-o)))=k))break t;break f}if(h=0,!(e=k))break f}if((a=e!=e)|(r=k!=k)){h=r&a;break f}h=w(y(w(e-k)))>>20&2047))==2047)return(r*=1)/r;if(!(n=b<<1)&(0|(u=c<<1|b>>>31))==2145386496|u>>>0<2145386496)return!n&(0|u)==2145386496?0*r:r;r:{if(!k){if(k=0,f=b<<12,(0|(n=c<<12|b>>>20))>0|(0|n)>=0)for(;k=k-1|0,n=n<<1|f>>>31,f<<=1,(0|n)>0|(0|n)>=0;);f=31&(n=1-k|0),(63&n)>>>0>=32?(n=b<>>32-f|c<1023){for(;;){e:if(!((0|(b=n+-1048576|0))<0)&&!((n=b)|f))return 0*r;if(n=n<<1|f>>>31,f<<=1,!((0|(k=k-1|0))>1023))break}k=1023}a:if(!((0|(b=n+-1048576|0))<0)&&!((n=b)|f))return 0*r;if((0|n)==1048575|n>>>0<1048575)for(;k=k-1|0,b=n>>>0<524288,u=n<<1|f>>>31,f<<=1,n=u,b;);return A=-2147483648&c,u=n+-1048576|k<<20,s=f,c=n,s=f,f=31&(b=1-k|0),(63&b)>>>0>=32?(n=0,b=c>>>f|0):(n=c>>>f|0,b=((1<>>f),a=((f=(0|k)>0)?s:b)|0,t[0]=a,i=(f?u:n)|A,t[1]=i,+o[0]}function rd(r){var e=0,a=0,i=0,n=0,f=0;a=(i=l[1396])+(e=r+7&-8)|0;r:{e:if(!((a>>>0<=i>>>0?e:0)||a>>>0>eU()<<16>>>0&&!(0|D(0|a)))){l[1396]=a;break r}l[1761]=48,i=-1}if((0|i)!=-1){l[(a=(e=r+i|0)-16|0)+12>>2]=16,l[a>>2]=16,f=(r=l[1728])?l[r+8>>2]:0;a:{i:{if((0|f)==(0|i)){if(n=i-(-2&l[i-4>>2])|0,f=l[n-4>>2],l[r+8>>2]=e,e=-16,!(1&s[((r=n-(-2&f)|0)+l[r>>2]|0)-4|0]))break i;e=l[r+4>>2],l[e+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=e,a=a-r|0,l[r>>2]=a;break a}l[i+12>>2]=16,l[i>>2]=16,l[i+8>>2]=e,l[i+4>>2]=r,l[1728]=i,e=16}a=a-(r=e+i|0)|0,l[r>>2]=a}l[((-4&a)+r|0)-4>>2]=1|a,e=l[r>>2]-8|0;n:{if(e>>>0<=127){a=(e>>>3|0)-1|0;break n}if(n=E(e),a=((e>>>29-n^4)-(n<<2)|0)+110|0,e>>>0<=4095)break n;a=(a=((e>>>30-n^2)-(n<<1)|0)+71|0)>>>0>=63?63:a}e=a<<4,l[r+4>>2]=e+5888,e=e+5896|0,l[r+8>>2]=l[e>>2],l[e>>2]=r,l[l[r+8>>2]+4>>2]=r,e=l[1730],n=l[1731],r=31&a,(63&a)>>>0>=32?(a=1<>>32-r,l[1730]=f|e,l[1731]=a|n}return(0|i)!=-1}function rh(r,e,a){var i=0,n=0,f=0,t=0,b=0,o=0,k=0,c=0,u=0;r:{e:{a:{i:{n:{f:{t:{b:{o:{k:{if(e){if(!a)break k;break o}ra=0,r=(r>>>0)/(a>>>0)|0;break r}if(!r)break b;break t}if(!(a-1&a))break f;t=0-(f=(E(a)+33|0)-E(e)|0)|0;break i}ra=0,r=(e>>>0)/0|0;break r}if((i=32-E(e)|0)>>>0<31)break n;break a}if((0|a)==1)break e;a=31&(f=a?31-E(a-1^a)|0:32),(63&f)>>>0>=32?r=e>>>a|0:(i=e>>>a|0,r=((1<>>a),ra=i;break r}f=i+1|0,t=63-i|0}if(n=31&(i=63&f),i>>>0>=32?(i=0,b=e>>>n|0):(i=e>>>n|0,b=((1<>>n),t&=63,n=31&t,t>>>0>=32?(e=r<>>32-n|e<>>31)+((i=b<<1|e>>>31)>>>0>t>>>0)|0)>>31),b=i-k|0,i=o-(i>>>0>>0)|0,e=e<<1|r>>>31,r=c|r<<1,c=1&n,f=f-1|0;);ra=e<<1|r>>>31,r=c|r<<1;break r}r=0,e=0}ra=e}return r}function rv(r,e,a){var i,n,f=w(0),b=w(0);r:{e:{a:{if((-2&e)==2){if(e=l[r+188>>2],f=p[r+188>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f||(e=l[r+196>>2],f=p[r+196>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f))break a;break e}if(e=l[r+192>>2],f=p[r+192>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|f==f||(f=p[r+196>>2],(0|(e=l[r+196>>2]))==2139156720|(0|e)==2140081935|(0|e)==2141891242))break a;if(f!=f)break e}f=w(0);i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break n;default:break i}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}b=w(w(f*a)*w(.009999999776482582))}return b}f=w(0)}return f}function rp(r,e,a){var i=0,n=0,f=0,t=0;if(n=((i=r+4|0)+e|0)-1&0-e,e=l[r>>2],n+a>>>0<=(e+r|0)-4>>>0){f=l[r+4>>2],l[f+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=f,(0|i)!=(0|n)&&(n=n-i|0,f=r-(-2&l[r-4>>2])|0,i=n+l[f>>2]|0,l[f>>2]=i,l[(f+(-4&i)|0)-4>>2]=i,r=r+n|0,e=e-n|0,l[r>>2]=e);r:{if(a+24>>>0<=e>>>0){i=(r+a|0)+8|0,e=(e-a|0)-8|0,l[i>>2]=e,l[(i+(-4&e)|0)-4>>2]=1|e,n=l[i>>2]-8|0;e:{if(n>>>0<=127){e=(n>>>3|0)-1|0;break e}if(f=E(n),e=((n>>>29-f^4)-(f<<2)|0)+110|0,n>>>0<=4095)break e;e=(e=((n>>>30-f^2)-(f<<1)|0)+71|0)>>>0>=63?63:e}n=e<<4,l[i+4>>2]=n+5888,n=n+5896|0,l[i+8>>2]=l[n>>2],l[n>>2]=i,l[l[i+8>>2]+4>>2]=i,n=l[1730],f=l[1731],i=31&e,(63&e)>>>0>=32?(e=1<>>32-i,i=t),l[1730]=i|n,l[1731]=e|f,e=a+8|0,l[r>>2]=e,l[((-4&e)+r|0)-4>>2]=e;break r}l[(r+e|0)-4>>2]=e}r=r+4|0}else r=0;return r}function rm(r,e,a){var i=0,n=0;r:if((0|r)!=(0|e)){if(e-(n=r+a|0)>>>0<=0-(a<<1)>>>0)return ru(r,e,a);i=(r^e)&3;e:{a:{if(r>>>0>>0){if(i){i=r;break e}if(!(3&r)){i=r;break a}for(i=r;;){if(!a)break r;if(s[0|i]=d[0|e],e=e+1|0,a=a-1|0,!(3&(i=i+1|0)))break}break a}i:if(!i){if(3&n)for(;;){if(!a)break r;if(s[0|(i=(a=a-1|0)+r|0)]=d[e+a|0],!(3&i))break}if(a>>>0<=3)break i;for(;l[(a=a-4|0)+r>>2]=l[e+a>>2],a>>>0>3;);}if(!a)break r;for(;s[(a=a-1|0)+r|0]=d[e+a|0],a;);break r}if(a>>>0<=3)break e;for(;l[i>>2]=l[e>>2],e=e+4|0,i=i+4|0,(a=a-4|0)>>>0>3;);}if(!a)break r;for(;s[0|i]=d[0|e],i=i+1|0,e=e+1|0,a=a-1|0;);}return r}function rN(r,e,a,i){r:switch(e-9|0){case 0:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=l[e>>2];return;case 6:e=l[a>>2],l[a>>2]=e+4,e=A[e>>1],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 7:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=h[e>>1],l[r+4>>2]=0;return;case 8:e=l[a>>2],l[a>>2]=e+4,e=s[0|e],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 9:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=d[0|e],l[r+4>>2]=0;return;case 16:e=l[a>>2]+7&-8,l[a>>2]=e+8,m[r>>3]=m[e>>3];return;case 17:eY[0|i](r,a);default:return;case 1:case 4:case 14:e=l[a>>2],l[a>>2]=e+4,e=l[e>>2],l[r>>2]=e,l[r+4>>2]=e>>31;return;case 2:case 5:case 11:case 15:e=l[a>>2],l[a>>2]=e+4,l[r>>2]=l[e>>2],l[r+4>>2]=0;return;case 3:case 10:case 12:case 13:break r}e=l[a>>2]+7&-8,l[a>>2]=e+8,a=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=a}function rw(){rr(7004,3018),$(7005,2479,1,1,0),V(7006,2139,1,-128,127),V(7007,2132,1,-128,127),V(7008,2130,1,0,255),V(7009,1286,2,-32768,32767),V(7010,1277,2,0,65535),V(7011,1315,4,-2147483648,2147483647),V(7012,1306,4,0,-1),V(7013,2658,4,-2147483648,2147483647),V(7014,2649,4,0,-1),eV(7015,1776,-2147483648,2147483647),eV(7016,1775,0,-1),C(7017,1769,4),C(7018,2966,8),S(7019,2676),S(7020,3835),O(7021,4,2663),O(7022,2,2688),O(7023,4,2703),q(7024,2484),Z(7025,0,3766),Z(7026,0,3868),Z(7027,1,3796),Z(7028,2,3398),Z(7029,3,3429),Z(7030,4,3469),Z(7031,5,3498),Z(7032,4,3905),Z(7033,5,3935),Z(7026,0,3600),Z(7027,1,3567),Z(7028,2,3666),Z(7029,3,3632),Z(7030,4,3733),Z(7031,5,3699),Z(7034,6,3536),Z(7035,7,3974)}function ry(r,e,a){var i=0,n=0,f=0,t=0;r:if(a){if(s[0|r]=e,s[(i=r+a|0)-1|0]=e,a>>>0<3||(s[r+2|0]=e,s[r+1|0]=e,s[i-3|0]=e,s[i-2|0]=e,a>>>0<7)||(s[r+3|0]=e,s[i-4|0]=e,a>>>0<9)||(n=(i=0-r&3)+r|0,e=N(255&e,16843009),l[n>>2]=e,l[(a=(i=a-i&-4)+n|0)-4>>2]=e,i>>>0<9)||(l[n+8>>2]=e,l[n+4>>2]=e,l[a-8>>2]=e,l[a-12>>2]=e,i>>>0<25)||(l[n+24>>2]=e,l[n+20>>2]=e,l[n+16>>2]=e,l[n+12>>2]=e,l[a-16>>2]=e,l[a-20>>2]=e,l[a-24>>2]=e,l[a-28>>2]=e,(a=i-(t=4&n|24)|0)>>>0<32))break r;for(i=r9(e,0,1,1),f=ra,e=n+t|0;l[e+24>>2]=i,l[e+28>>2]=f,l[e+16>>2]=i,l[e+20>>2]=f,l[e+8>>2]=i,l[e+12>>2]=f,l[e>>2]=i,l[e+4>>2]=f,e=e+32|0,(a=a-32|0)>>>0>31;);}return r}function rE(r){var e=0,a=0,i=0,n=0,f=0;if(r|=0){a=n=l[(e=r-4|0)>>2],i=e,(0|(r=-2&(f=l[r-8>>2])))!=(0|f)&&(a=l[(i=e-r|0)+4>>2],l[a+8>>2]=l[i+8>>2],l[l[i+8>>2]+4>>2]=a,a=r+n|0),(0|(e=l[(r=e+n|0)>>2]))!=l[(r+e|0)-4>>2]&&(n=l[r+4>>2],l[n+8>>2]=l[r+8>>2],l[l[r+8>>2]+4>>2]=n,a=e+a|0),l[i>>2]=a,l[((-4&a)+i|0)-4>>2]=1|a,e=l[i>>2]-8|0;r:{if(e>>>0<=127){r=(e>>>3|0)-1|0;break r}if(a=E(e),r=((e>>>29-a^4)-(a<<2)|0)+110|0,e>>>0<=4095)break r;r=(r=((e>>>30-a^2)-(a<<1)|0)+71|0)>>>0>=63?63:r}e=r<<4,l[i+4>>2]=e+5888,e=e+5896|0,l[i+8>>2]=l[e>>2],l[e>>2]=i,l[l[i+8>>2]+4>>2]=i,e=l[1730],a=l[1731],i=31&r,(63&r)>>>0>=32?(r=1<>>32-i,l[1730]=n|e,l[1731]=r|a}}function rG(r,e,a,i,n){var f=0,t=0,b=0,o=0;re=f=re-208|0,l[f+204>>2]=a,ry(a=f+160|0,0,40),l[f+200>>2]=l[f+204>>2];r:{if((0|rf(0,e,f+200|0,f+80|0,a,i,n))<0){n=-1;break r}o=l[r+76>>2]>=0,t=l[r>>2],l[r+72>>2]<=0&&(l[r>>2]=-33&t);e:{a:{i:{if(!l[r+48>>2]){l[r+48>>2]=80,l[r+28>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,b=l[r+44>>2],l[r+44>>2]=f;break i}if(l[r+16>>2])break a}if(a=-1,ef(r))break e}a=rf(r,e,f+200|0,f+80|0,f+160|0,i,n)}if(b&&(eY[l[r+36>>2]](r,0,0),l[r+48>>2]=0,l[r+44>>2]=b,l[r+28>>2]=0,e=l[r+20>>2],l[r+16>>2]=0,l[r+20>>2]=0,a=e?a:-1),e=r,r=l[r>>2],l[e>>2]=r|32&t,n=32&r?-1:a,!o)break r}return re=f+208|0,n}function rR(r){var e=0,a=w(0),i=0,n=0,f=0,t=0,b=0,o=w(0),c=0;re=f=re-16|0,e=l[r+12>>2];r:{if(e){o=p[r+520>>2],a=p[r+516>>2];e:{if(32&d[r+4|0]){a=w(eY[0|e](r,a,o,0));break e}a=w(eY[0|e](r,a,o))}if(a==a)break r;l[f>>2]=3340,rB(r,f),eX(),k()}a:{i:{if(t=l[r+556>>2],e=l[r+560>>2],(0|t)!=(0|e)){for(c=(e=e-t>>2)>>>0<=1?1:e;;){if(n=l[(b<<2)+t>>2],!l[n+548>>2]){if((196608&(e=l[n+24>>2]))!=131072){if((e=e>>>13&7)||(e=l[r+24>>2]>>>10&7),2&d[n+4|0]|(8&d[r+24|0]?(0|e)==5:0))break i;i=i||n}if((0|c)!=(0|(b=b+1|0)))continue}break}if(i)break a}a=p[r+520>>2];break r}i=n}a=w(rR(i)+p[i+232>>2])}return re=f+16|0,a}function rg(r,e,a,i,n,f){var b,o=0,k=w(0),c=0,s=w(0);k=p[(o=(l[(e<<2)+4252>>2]<<2)+r|0)+216>>2];r:{e:{o=l[o+216>>2];a:if((0|o)!=2139156720){if((0|o)==2140081935)break e;c=4276;i:{if((0|o)!=2141891242){if(k==k)break i;c=4268}switch(s=p[c>>2],k=w(NaN),l[c+4>>2]-1|0){case 0:break e;case 1:break a;default:break r}}if(b=(-1073741825&o)+536870912|0,t[2]=b,s=u(),!(1073741824&o))break e}k=w(w(s*a)*w(.009999999776482582));break r}k=s}i=w(k+w(rP(r,e,i)+rS(r,e,i)));n:{f:{t:switch(l[n>>2]){case 1:case 2:a=p[f>>2],i=i!=i?a:a>2]=2}p[f>>2]=i}}function rZ(r,e,a){var i,n,f=w(0),b=w(0),o=0,k=w(0);r=r+116|0,o=l[(e<<2)+4220>>2];r:{if((-2&e)==2){e=rX(r,4,o,2140081935);break r}e=rY(r,o,2140081935)}e:{a:{i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break e;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break i;case 1:break n;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break i}f=w(w(f*a)*w(.009999999776482582))}if(f>=w(0))return f;if(b=f,f>2];r:{if((-2&e)==2){e=rX(r,5,o,2140081935);break r}e=rY(r,o,2140081935)}e:{a:{i:{n:if((0|e)!=2139156720){if((0|e)==2140081935)break e;r=4276;f:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break f;r=4268}switch(f=p[r>>2],b=w(NaN),l[r+4>>2]-1|0){case 0:break i;case 1:break n;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break i}f=w(w(f*a)*w(.009999999776482582))}if(f>=w(0))return f;if(b=f,f>2]=0,l[e+556>>2]=0,l[e+560>>2]=0,n=l[a+556>>2],i=l[a+560>>2],(0|n)!=(0|i)){if((0|(t=i-n|0))<0)break r;for(r=eo(t),l[e+556>>2]=r,l[e+564>>2]=r+t;l[r>>2]=l[n>>2],r=r+4|0,(0|i)!=(0|(n=n+4|0)););l[e+560>>2]=r}r=l[a+572>>2],l[e+568>>2]=l[a+568>>2],l[e+572>>2]=r,l[e+584>>2]=l[a+584>>2],r=l[a+580>>2],l[e+576>>2]=l[a+576>>2],l[e+580>>2]=r,l[e+552>>2]=0}return f}T(),k()}function rB(r,e){var a=0,i=0,n=0;re=n=re-16|0,l[n+12>>2]=e;r:{e:{if(!r){e=l[n+12>>2];break e}if(e=l[n+12>>2],!(a=l[r+568>>2]))break e;if(i=l[a+4>>2],d[a+9|0]){eY[0|i](a,r,5,0,4215,e);break r}eY[0|i](a,r,5,4215,e);break r}a:{if(!d[6936]){A[(a=eo(28))+20>>1]=0,l[a+16>>2]=1065353216,A[a+10>>1]=0,A[a+12>>1]=0,l[a>>2]=0,l[a+24>>2]=0,s[a+9|0]=0,i=1,l[a+4>>2]=1,s[a+22|0]=0,l[1733]=a,s[6936]=1,l[1732]=l[1732]+1;break a}if(a=l[1733],i=l[a+4>>2],!d[a+9|0])break a;eY[0|i](a,r,5,0,4215,e);break r}eY[0|i](a,r,5,4215,e)}re=n+16|0}function rT(r,e,a){var i,n,f=w(0),b=0,o=w(0);r=r+80|0,b=l[(e<<2)+4236>>2];r:{e:{if((-2&e)==2){e=rX(r,5,b,2140081935);break e}e=rY(r,b,2140081935)}a:{i:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;n:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break n;r=4268}switch(f=p[r>>2],o=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break i;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}o=w(w(f*a)*w(.009999999776482582))}return o}return f}function rI(r,e,a){var i,n,f=w(0),b=0,o=w(0);r=r+80|0,b=l[(e<<2)+4220>>2];r:{e:{if((-2&e)==2){e=rX(r,4,b,2140081935);break e}e=rY(r,b,2140081935)}a:{i:if((0|e)!=2139156720){if((0|e)==2140081935)break r;r=4276;n:{if((0|e)!=2141891242){if(i=e,t[2]=i,(f=u())==f)break n;r=4268}switch(f=p[r>>2],o=w(NaN),l[r+4>>2]-1|0){case 0:break r;case 1:break i;default:break a}}if(n=(-1073741825&e)+536870912|0,t[2]=n,f=u(),!(1073741824&e))break r}o=w(w(f*a)*w(.009999999776482582))}return o}return f}function rX(r,e,a,i){var n=w(0);n=p[(e=(e<<2)+r|0)>>2],e=l[e>>2];r:if(!((0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n)){if(n=p[(e=(a<<2)+r|0)>>2],(0|(e=l[e>>2]))==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n||(e=l[r+24>>2],n=p[r+24>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|n==n)||(n=p[r+32>>2],!((0|(r=l[r+32>>2]))==2139156720|(0|r)==2140081935|(0|r)==2141891242)&&(e=i,n!=n)))break r;e=r}return e}function rO(r,e,a,i,n){var f=0,t=0,b=w(0),o=0;f=2,t=l[r+24>>2]>>>2&3;r:{e:{a:{if(!(!l[r+552>>2]|(0|e)!=2)){e=0,f=3;i:switch(t-2|0){case 0:break r;case 1:break i;default:break a}f=2;break r}if(e=0,t>>>0>1)break e}e=f}f=t}a=ey(r,f,a),i=ey(r,e,i),b=rP(r,f,n),p[(t=r+228|0)+(l[(o=f<<2)+4220>>2]<<2)>>2]=a+b,b=rS(r,f,n),p[t+(l[o+4236>>2]<<2)>>2]=a+b,a=rP(r,e,n),p[t+(l[(f=e<<2)+4220>>2]<<2)>>2]=i+a,a=rS(r,e,n),p[t+(l[f+4236>>2]<<2)>>2]=i+a}function rL(r){var e=0,a=0,i=0,n=0;if(r|=0){if(e=l[r>>2],(a=l[e+552>>2])&&(rq(a,e),l[e+552>>2]=0),i=l[e+560>>2],a=l[e+556>>2],(0|i)!=(0|a))for(n=(i=i-a>>2)>>>0<=1?1:i,i=0;l[l[a+(i<<2)>>2]+552>>2]=0,(0|n)!=(0|(i=i+1|0)););l[e+560>>2]=a,r_(e+556|0),(a=l[e+556>>2])&&(l[e+560>>2]=a,rE(a)),rE(e),e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),rE(r)}}function r_(r){var e=0,a=0,i=0,n=0,f=0;re=n=re-32|0,e=l[r>>2],a=l[r+4>>2]-e>>2;r:if(!(a>>>0>=l[r+8>>2]-e>>2>>>0)){if(a=en(n+8|0,a,a,r+8|0),e=l[r>>2],i=l[r+4>>2]-e|0,i=rm(l[a+4>>2]-i|0,e,i),e=l[r>>2],l[r>>2]=i,l[a+4>>2]=e,i=l[r+4>>2],l[r+4>>2]=l[a+8>>2],l[a+8>>2]=i,f=l[r+8>>2],l[r+8>>2]=l[a+12>>2],l[a>>2]=e,l[a+12>>2]=f,(0|e)!=(0|i)&&(l[a+8>>2]=i+((e-i|0)+3&-4)),!e)break r;rE(e)}re=n+32|0}function rF(r,e,a){var i=0,n=0,f=0;if(!(32&d[0|r]))r:{i=e,r=l[(e=r)+16>>2];e:{if(!r){if(ef(e))break e;r=l[e+16>>2]}if(f=l[e+20>>2],r-f>>>0>>0){eY[l[e+36>>2]](e,i,a);break r}a:if(!(l[e+80>>2]<0)){for(r=a;;){if(n=r,!r)break a;if(10==d[i+(r=n-1|0)|0])break}if(eY[l[e+36>>2]](e,i,n)>>>0>>0)break e;i=i+n|0,a=a-n|0,f=l[e+20>>2]}ru(f,i,a),l[e+20>>2]=l[e+20>>2]+a}}}function rC(r,e,a){var i=0,n=0,f=0;re=i=re-16|0,n=r+24|0,eY[0|e](i+8|0,n),f=l[i+12>>2];r:if((l[l[i+8>>2]>>2]&7<>f!=(0|a))for(eY[0|e](i+8|0,n),n=e=l[i+8>>2],f=l[e>>2],e=l[i+12>>2],l[n>>2]=f&(7<>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}re=i+16|0}function rS(r,e,a){var i,n,f=w(0),b=0;r=r+44|0,b=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,b,2140081935);break r}r=rY(r,b,2140081935)}e:{if((0|r)!=2139156720){if((0|r)==2140081935|(0|r)==2141891242)break e;if(i=r,t[2]=i,(f=u())!=f)return w(NaN);if(n=(-1073741825&r)+536870912|0,t[2]=n,f=u(),!(1073741824&r))break e}f=w(w(f*a)*w(.009999999776482582))}return f}function rP(r,e,a){var i,n,f=w(0),b=0;r=r+44|0,b=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,b,2140081935);break r}r=rY(r,b,2140081935)}e:{if((0|r)!=2139156720){if((0|r)==2140081935|(0|r)==2141891242)break e;if(i=r,t[2]=i,(f=u())!=f)return w(NaN);if(n=(-1073741825&r)+536870912|0,t[2]=n,f=u(),!(1073741824&r))break e}f=w(w(f*a)*w(.009999999776482582))}return f}function rY(r,e,a){var i=w(0);i=p[(e=(e<<2)+r|0)>>2],e=l[e>>2];r:if(!((0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|i==i)){if(e=l[r+28>>2],i=p[r+28>>2],(0|e)==2139156720|(0|e)==2140081935|(0|e)==2141891242|i==i||(i=p[r+32>>2],!((0|(r=l[r+32>>2]))==2139156720|(0|r)==2140081935|(0|r)==2141891242)&&(e=a,i!=i)))break r;e=r}return e}function rU(r,e){var a,i,n=w(0),f=0;r=r+152|0,f=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,f,2140081935);break r}r=rY(r,f,2140081935)}n=w(0);e:if((0|r)!=2139156720){if(n=w(0),(0|r)==2140081935)break e;a:if((0|r)!=2141891242&&(a=r,t[2]=a,(n=u())==n)){i=(-1073741825&r)+536870912|0,t[2]=i,n=u();break e}n=w(NaN)}return eu(n,w(0))}function rM(r,e){var a,i,n=w(0),f=0;r=r+152|0,f=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,f,2140081935);break r}r=rY(r,f,2140081935)}n=w(0);e:if((0|r)!=2139156720){if(n=w(0),(0|r)==2140081935)break e;a:if((0|r)!=2141891242&&(a=r,t[2]=a,(n=u())==n)){i=(-1073741825&r)+536870912|0,t[2]=i,n=u();break e}n=w(NaN)}return eu(n,w(0))}function rH(r,e,a,i){var n=0,f=0,t=0;r*=e,t=(n=(n=rl(r))<0?n+1:n)!=n;r:{if(!(!(1e-4>y(n))|t)){r-=n;break r}e:{if(n!=n){r-=n;break e}if(r-=n,!(1e-4>y(n+-1)))break e;r+=1;break r}if(a){r+=1;break r}if(i)break r;f=0;a:if(!t){if(f=1,n>.5)break a;f=1e-4>y(n+-.5)?1:0}r+=f}return r!=r|e!=e?w(NaN):w(r/e)}function rQ(r){var e=w(0),a=0,i=w(0);a=0;r:if((196608&l[r+24>>2])!=131072){e:if(l[r+552>>2]){e=p[r+32>>2];a:if((e==e||(e=p[r+28>>2])>w(0))&&(a=1,e!=w(0)))break r;if((e=p[r+36>>2])==e)break e;if(s[r+4|0]<0){e=w(1);break e}if(e=w(0),!((i=p[r+28>>2])>2]=2143289344,l[r+4>>2]=3;return}l[r>>2]=0,l[r+4>>2]=1;return}l[r>>2]=0,l[r+4>>2]=2;return}if(t[2]=e,(a=u())!=a){l[r>>2]=2143289344,l[r+4>>2]=0;return}l[r+4>>2]=1073741824&e?2:1,l[r>>2]=(-1073741825&e)+536870912}function rj(r){var e=0,a=0,i=0;a=l[r+24>>2];r:if(8&a){if(e=1,(7168&a)==5120||(e=0,i=l[r+560>>2],a=l[r+556>>2],(0|i)==(0|a)))break r;for(i=(r=i-a>>2)>>>0<=1?1:r,r=0;;){if(e=(196608&(e=l[l[a+(r<<2)>>2]+24>>2]))!=131072&(57344&e)==40960)break r;if((0|i)==(0|(r=r+1|0)))break}}return e}function rD(r){var e,a=0,i=w(0);a=2143289344;r:if(!(w(y(r))==w(1/0)|r!=r||(a=2139156720,rw(-.00000000000000000010842021724855044)|r==w(0)))){c(r),e=-2147483648&t[2]|1602224127,t[2]=e,i=u(),c(r>w(18446742974197924e3)?i:rw(-.00000000000000000010842021724855044)|r==w(0)))){c(r),e=-2147483648&t[2]|1610612735,t[2]=e,i=u(),c(r>w(36893485948395848e3)?i:r>2]);break r}e:{if(d[6936]){e=l[1733];break e}A[(e=eo(28))+20>>1]=0,l[e+16>>2]=1065353216,A[e+10>>1]=0,A[e+12>>1]=0,l[e>>2]=0,l[e+24>>2]=0,s[e+9|0]=0,l[e+4>>2]=1,s[e+22|0]=0,l[1733]=e,s[6936]=1,l[1732]=l[1732]+1}e=ev(e)}return l[r+4>>2]=0,l[r+8>>2]=0,l[r>>2]=e,l[e>>2]=r,r}function rK(r,e,a){var i=0,n=0,f=0;r:{if(!e){i=r;break r}for(;r=r9(i=rh(r,e,10),n=ra,246,0)+r|0,s[0|(a=a-1|0)]=48|r,f=e>>>0>9,r=i,e=n,f;);}if(i)for(;a=a-1|0,r=(i>>>0)/10|0,s[0|a]=N(r,246)+i|48,e=i>>>0>9,i=r,e;);return a}function rq(r,e){var a=0,i=0;r:{e:if(a=l[r+556>>2],i=l[r+560>>2],(0|a)!=(0|i)){for(;;){if(l[a>>2]==(0|e))break e;if((0|i)==(0|(a=a+4|0)))break}break r}if((0|a)==(0|i))break r;return e=a+4|0,rm(a,e,i-e|0),l[r+560>>2]=i-4,1}return 0}function r$(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+184>>2]!=(0|a))for(l[((e<<2)+i|0)+184>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r0(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+192>>2]!=(0|a))for(l[((e<<2)+i|0)+192>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r2(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+176>>2]!=(0|a))for(l[((e<<2)+i|0)+176>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r1(r,e){var a=0,i=0,n=0;r:if(l[(a=r+24|0)+16>>2]!=(0|e))for(i=0|eY[9](a),n=e,l[i+16>>2]=n;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r4(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+56>>2]!=(0|a))for(l[((e<<2)+i|0)+56>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r3(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+92>>2]!=(0|a))for(l[((e<<2)+i|0)+92>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r8(r,e,a){var i=0;r:if(l[((i=r+24|0)+(e<<2)|0)+20>>2]!=(0|a))for(l[((e<<2)+i|0)+20>>2]=a;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}function r6(r,e){var a,i=0,n=w(0);r=r+80|0,i=l[(e<<2)+4236>>2];r:{if((-2&e)==2){r=rX(r,5,i,2143289344);break r}r=rY(r,i,2143289344)}return(0|r)==2139156720|(0|r)==2140081935|(0|r)==2141891242?r=1:(a=r,t[2]=a,r=(n=u())==n),r}function r5(r,e){var a,i=0,n=w(0);r=r+80|0,i=l[(e<<2)+4220>>2];r:{if((-2&e)==2){r=rX(r,4,i,2143289344);break r}r=rY(r,i,2143289344)}return(0|r)==2139156720|(0|r)==2140081935|(0|r)==2141891242?r=1:(a=r,t[2]=a,r=(n=u())==n),r}function r9(r,e,a,i){var n=0,f=0,t=0,b=0,o=0,k=0;return k=N(n=a>>>16|0,f=r>>>16|0),n=(65535&(f=((o=N(t=65535&a,b=65535&r))>>>16|0)+N(f,t)|0))+N(n,b)|0,ra=(N(e,a)+k|0)+N(r,i)+(f>>>16)+(n>>>16)|0,65535&o|n<<16}function r7(r,e){var a=0,i=0,n=0;re=i=re-16|0,n=-17&(a=d[r+4|0]),s[r+4|0]=n;r:{if(e){if(l[r+560>>2]!=l[r+556>>2])break r;a=8|n}else a&=231;l[r+8>>2]=e,s[r+4|0]=a,re=i+16|0;return}l[i>>2]=4059,rB(r,i),eX(),k()}function er(r,e,a,i,n){var f=0;if(re=f=re-256|0,!(73728&n|(0|a)<=(0|i))){if(ry(f,255&e,(a=(i=a-i|0)>>>0<256)?i:256),!a)for(;rF(r,f,256),(i=i-256|0)>>>0>255;);rF(r,f,i)}re=f+256|0}function ee(r,e,a){var i=0,n=w(0);r:((-2&a)!=2||(n=p[(i=e- -64|0)>>2],!((0|(i=l[i>>2]))==2139156720|(0|i)==2140081935|(0|i)==2141891242|n==n)))&&(i=l[((l[(a<<2)+4236>>2]<<2)+e|0)+44>>2]);rz(r,i)}function ea(r,e,a){var i=0,n=w(0);r:((-2&a)!=2||(i=l[e+60>>2],n=p[e+60>>2],!((0|i)==2139156720|(0|i)==2140081935|(0|i)==2141891242|n==n)))&&(i=l[((l[(a<<2)+4220>>2]<<2)+e|0)+44>>2]);rz(r,i)}function ei(r){var e=0,a=0,i=0;for(i=l[r>>2];;){if(eO(a=s[0|i])){i=i+1|0,l[r>>2]=i,e=e>>>0<=214748364?(0|(a=a-48|0))>(2147483647^(e=N(e,10)))?-1:a+e|0:-1;continue}break}return e}function en(r,e,a,i){var n=0;l[r+12>>2]=0,l[r+16>>2]=i;r:{if(e){if(e>>>0>=1073741824)break r;n=eo(e<<2)}return l[r>>2]=n,a=(a<<2)+n|0,l[r+8>>2]=a,l[r+12>>2]=(e<<2)+n,l[r+4>>2]=a,r}eP(),k()}function ef(r){var e=0;return(e=l[r+72>>2],l[r+72>>2]=e-1|e,8&(e=l[r>>2]))?(l[r>>2]=32|e,-1):(l[r+4>>2]=0,l[r+8>>2]=0,e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,l[r+16>>2]=e+l[r+48>>2],0)}function et(r,e,a,i){r|=0,e|=0,a|=0,i|=0;var n=0;n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](e,a,i)}function eb(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),0|eY[0|i](e,a)}function eo(r){var e=0;r=r||1;r:{for(;;){if(e=rb(r))break r;if(e=l[2022]){eY[0|e]();continue}break}T(),k()}return e}function ek(r,e,a){r|=0,e|=0,a|=0;var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)}function ec(r,e){r|=0,e|=0;var a=0;return a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),0|eY[0|a](e)}function eu(r,e){return(c(r),(2147483647&t[2])>>>0<=2139095040)?(c(e),(2147483647&t[2])>>>0>2139095040)?r:w(R(r,e)):e}function es(r,e){return(c(r),(2147483647&t[2])>>>0<=2139095040)?(c(e),(2147483647&t[2])>>>0>2139095040)?r:w(G(r,e)):e}function eA(r,e){r|=0,e|=0;var a=0;return re=a=re-16|0,l[a+8>>2]=e,r=0|eY[0|r](a+8|0),I(l[a+8>>2]),re=a+16|0,0|r}function el(r,e){if(!r)return 0;r:{if(!((-128&e)==57216|e>>>0<=127)){l[1761]=25,r=-1;break r}s[0|r]=e,r=1}return r}function ed(r,e){var a=0,i=0;l[(a=eo(4))>>2]=e,l[(i=eo(4))>>2]=e,X(6955,0|r,7018,4630,192,0|a,7018,4634,193,0|i)}function eh(r,e){var a=0,i=0;l[(a=eo(4))>>2]=e,l[(i=eo(4))>>2]=e,X(6985,0|r,7018,4630,190,0|a,7018,4634,191,0|i)}function ev(r){var e=0,a=0;return re=e=re-16|0,a=rk(eo(588),r),r||(l[e>>2]=2759,rB(0,e),eX(),k()),re=e+16|0,a}function ep(r,e){var a=0;r:{if(1&s[6964]){a=l[1740];break r}a=0|F(1,4400),s[6964]=1,l[1740]=a}Q(0|a,0|r,0|e,0)}function em(r,e){r|=0,e|=0;var a=0;a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),eY[0|a](e)}function eN(r){return l[(r|=0)>>2]=4508,d[r+4|0]&&ep(l[r+8>>2],1758),I(l[r+8>>2]),0|r}function ew(r){return l[(r|=0)>>2]=4388,d[r+4|0]&&ep(l[r+8>>2],1758),I(l[r+8>>2]),0|r}function ey(r,e,a){return r5(r,e)?rI(r,e,a):((a=rT(r,e,a))==a&&(a=w(-a)),a)}function eE(r){var e=0;(r|=0)&&((e=l[r>>2])&&rE(e),l[1732]=l[1732]-1,rE(r))}function eG(r,e,a){e|=0,a=+a,m[l[(r|=0)>>2]+e>>3]=a}function eR(r,e){return e|=0,+m[l[(r|=0)>>2]+e>>3]}function eg(r){(r|=0)&&eY[l[l[r>>2]+4>>2]](r)}function eZ(r){return r?(l[1761]=r,-1):0}function eW(r,e,a){return w(rP(r,e,a)+rS(r,e,a))}function eV(r,e,a,i){j(0|r,0|e,8,0,0|a,-1,0|i)}function eB(r,e){e|=0,eY[l[(r|=0)>>2]](e)}function eT(r){return 0|eY[0|(r|=0)]()}function eI(r,e){e|=0,eY[0|(r|=0)](e)}function eX(){eY[l[1470]](),eP(),k()}function eO(r){return r-48>>>0<10}function eL(r){(r|=0)&&rE(r)}function e_(r){return 0|(r|=0)}function eF(r){s[(r|=0)+4|0]=1}function eC(r){k()}function eS(){eP(),k()}function eP(){T(),k()}n(e=d,1024,\"T25seSBsZWFmIG5vZGVzIHdpdGggY3VzdG9tIG1lYXN1cmUgZnVuY3Rpb25zc2hvdWxkIG1hbnVhbGx5IG1hcmsgdGhlbXNlbHZlcyBhcyBkaXJ0eQBpc0RpcnR5AG1hcmtEaXJ0eQBkZXN0cm95AHNldERpc3BsYXkAZ2V0RGlzcGxheQBzZXRGbGV4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAc2V0RmxleEdyb3cAZ2V0RmxleEdyb3cAc2V0T3ZlcmZsb3cAZ2V0T3ZlcmZsb3cAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AHNldEFsaWduQ29udGVudABnZXRBbGlnbkNvbnRlbnQAZ2V0UGFyZW50AGltcGxlbWVudABzZXRNYXhIZWlnaHRQZXJjZW50AHNldEhlaWdodFBlcmNlbnQAc2V0TWluSGVpZ2h0UGVyY2VudABzZXRGbGV4QmFzaXNQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHVzZUxlZ2FjeVN0cmV0Y2hCZWhhdmlvdXIAc2V0VXNlTGVnYWN5U3RyZXRjaEJlaGF2aW91cgBzZXRQb2ludFNjYWxlRmFjdG9yAE1lYXN1cmVDYWxsYmFja1dyYXBwZXIARGlydGllZENhbGxiYWNrV3JhcHBlcgBDYW5ub3QgcmVzZXQgYSBub2RlIHN0aWxsIGF0dGFjaGVkIHRvIGEgb3duZXIAc2V0Qm9yZGVyAGdldEJvcmRlcgBnZXRDb21wdXRlZEJvcmRlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRNYXJnaW5BdXRvAHNldFdpZHRoQXV0bwBTY2FsZSBmYWN0b3Igc2hvdWxkIG5vdCBiZSBsZXNzIHRoYW4gemVybwBzZXRBc3BlY3RSYXRpbwBnZXRBc3BlY3RSYXRpbwBzZXRQb3NpdGlvbgBnZXRQb3NpdGlvbgBub3RpZnlPbkRlc3RydWN0aW9uAHNldEZsZXhEaXJlY3Rpb24AZ2V0RmxleERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAd2lkdGgAc2V0TWF4V2lkdGgAZ2V0TWF4V2lkdGgAc2V0V2lkdGgAZ2V0V2lkdGgAc2V0TWluV2lkdGgAZ2V0TWluV2lkdGgAZ2V0Q29tcHV0ZWRXaWR0aAB1bnNpZ25lZCBsb25nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBjcmVhdGVXaXRoQ29uZmlnAGluZgBzZXRBbGlnblNlbGYAZ2V0QWxpZ25TZWxmAFNpemUAdmFsdWUAVmFsdWUAY3JlYXRlAG1lYXN1cmUAc2V0UG9zaXRpb25UeXBlAGdldFBvc2l0aW9uVHlwZQBpc1JlZmVyZW5jZUJhc2VsaW5lAHNldElzUmVmZXJlbmNlQmFzZWxpbmUAY29weVN0eWxlAGRvdWJsZQBOb2RlAGV4dGVuZABpbnNlcnRDaGlsZABnZXRDaGlsZAByZW1vdmVDaGlsZAB2b2lkAGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodE1lYXN1cmVNb2RlIG11c3QgYmUgWUdNZWFzdXJlTW9kZVVuZGVmaW5lZABhdmFpbGFibGVXaWR0aCBpcyBpbmRlZmluaXRlIHNvIHdpZHRoTWVhc3VyZU1vZGUgbXVzdCBiZSBZR01lYXN1cmVNb2RlVW5kZWZpbmVkAHNldEV4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGlzRXhwZXJpbWVudGFsRmVhdHVyZUVuYWJsZWQAZGlydGllZABDYW5ub3QgcmVzZXQgYSBub2RlIHdoaWNoIHN0aWxsIGhhcyBjaGlsZHJlbiBhdHRhY2hlZAB1bnNldE1lYXN1cmVGdW5jAHVuc2V0RGlydGllZEZ1bmMARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGxvbmc+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGRvdWJsZT4AQ2hpbGQgYWxyZWFkeSBoYXMgYSBvd25lciwgaXQgbXVzdCBiZSByZW1vdmVkIGZpcnN0LgBDYW5ub3Qgc2V0IG1lYXN1cmUgZnVuY3Rpb246IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAENhbm5vdCBhZGQgY2hpbGQ6IE5vZGVzIHdpdGggbWVhc3VyZSBmdW5jdGlvbnMgY2Fubm90IGhhdmUgY2hpbGRyZW4uAChudWxsKQAlcwoAAAEAAAADAAAAAAAAAAIAAAADAAAAAQAAAAIAAAAAAAAAAQAAAAE=\"),n(e,4270,\"wH8AAAAAAADAfwMAAABpaQB2AHZp\"),n(e,4304,\"KxsAACkbAABpGwAAYxsAAGkbAABjGwAAaWlpZmlmaQBcGwAALBsAAHZpaQAtGwAAcBsAAGlpaQ==\"),n(e,4368,\"wwAAAMQAAADF\"),n(e,4388,\"wwAAAMYAAADHAAAAXBs=\"),n(e,4416,\"KxsAAGkbAABjGwAAaRsAAGMbAABwGwAAaxsAAHAbAABpaWlpAAAAAFwbAABBGwAAXBsAAEMbAABEGwAAcBs=\"),n(e,4488,\"yAAAAMkAAADK\"),n(e,4508,\"yAAAAMsAAADHAAAARxsAAFwbAABHGw==\"),n(e,4544,\"XBsAAEcbAABjGwAAXRsAAHZpaWlpAAAAXBsAAEcbAABpGwAAdmlpZgAAAABcGwAARxsAAF0bAAB2aWlpAAAAAF0bAABIGwAAYxsAAF0bAABHGwAAaQBkaWkAdmlpZAAATBsAAEwbAABHGwAAXBsAAEwbAABcGwAATBsAAEsbAABcGwAATBsAAGMbAAAAAAAAXBsAAEwbAABjGwAAahsAAHZpaWlkAAAAXBsAAEwbAABqGwAAYxsAAE0bAABKGwAATRsAAGMbAABKGwAATRsAAGobAABNGwAAahsAAE0bAABjGwAAZGlpaQAAAABpGwAATBsAAGMbAABmaWlpAAAAAFwbAABMGwAATBsAAGQbAABcGwAATBsAAEwbAABkGwAATRsAAEwbAABMGwAATBsAAEwbAABkGwAAXRsAAEwbAABcGwAATBsAAF0bAABcGwAATBsAACkbAABcGwAATBsAAEEbAABdGwAATRsAAAAAAABcGwAATBsAAGobAABqGwAAYxsAAHZpaWRkaQAASRsAAE0b\"),n(e,4960,\"GQAKABkZGQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAAZABEKGRkZAwoHAAEACQsYAAAJBgsAAAsABhkAAAAZGRk=\"),n(e,5041,\"DgAAAAAAAAAAGQAKDRkZGQANAAACAAkOAAAACQAOAAAO\"),n(e,5099,\"DA==\"),n(e,5111,\"EwAAAAATAAAAAAkMAAAAAAAMAAAM\"),n(e,5157,\"EA==\"),n(e,5169,\"DwAAAAQPAAAAAAkQAAAAAAAQAAAQ\"),n(e,5215,\"Eg==\"),n(e,5227,\"EQAAAAARAAAAAAkSAAAAAAASAAASAAAaAAAAGhoa\"),n(e,5282,\"GgAAABoaGgAAAAAAAAk=\"),n(e,5331,\"FA==\"),n(e,5343,\"FwAAAAAXAAAAAAkUAAAAAAAUAAAU\"),n(e,5389,\"Fg==\"),n(e,5401,\"FQAAAAAVAAAAAAkWAAAAAAAWAAAWAAAwMTIzNDU2Nzg5QUJDREVG\"),n(e,5476,\"0Q==\"),n(e,5516,\"//////////8=\"),n(e,5584,\"oB8BAAAAAAAF\"),n(e,5604,\"zA==\"),n(e,5628,\"zQAAAM4AAACEGw==\"),n(e,5652,\"Ag==\"),n(e,5668,\"//////////8=\"),n(e,5736,\"BQ==\"),n(e,5748,\"zw==\"),n(e,5772,\"zQAAANAAAACYGwAAAAQ=\"),n(e,5796,\"AQ==\"),n(e,5812,\"/////wo=\"),n(e,5880,\"0g==\");var eY=((a=[null,function(r,e,a,i,n){var f,t,b,o,k,c;return(i|=0,n|=0,(a|=0)?(0|a)!=5:0)?0|rG(f=5736,t=i,b=n,2,3):0|rG(o=5592,k=i,c=n,2,3)},function(r,e,a,i,n,f){r|=0,e=+e,a|=0,i|=0,n|=0,f|=0;var b,k,c=0,u=0,A=0,h=0,v=0,p=0,m=0,w=0,E=0,G=0,R=0,g=0,Z=0,W=0,V=0,B=0,T=0,I=0,X=0;re=m=re-560|0,l[m+44>>2]=0,b=+e,o[0]=b,c=0|t[1],t[0];r:{if((0|c)<0){Z=1,I=1176,k=+(e=-e),o[0]=k,c=0|t[1],t[0];break r}if(2048&n){Z=1,I=1179;break r}I=(Z=1&n)?1182:1177,X=!Z}e:{if((2146435072&c)==2146435072){er(r,32,a,c=Z+3|0,-65537&n),rF(r,I,Z),i=32&f,rF(r,e!=e?i?2450:3390:i?2819:3394,3),er(r,32,a,c,8192^n),w=(0|a)<(0|c)?c:a;break e}V=m+16|0;a:{i:{n:{if(e=function r(e,a){var i,n,f,b=0,k=0,c=0;if(i=+e,o[0]=i,k=0|t[1],c=0|t[0],(0|(b=k>>>20&2047))!=2047){if(!b)return 0==e?b=0:(e=r(18446744073709552e3*e,a),b=l[a>>2]+-64|0),l[a>>2]=b,e;l[a>>2]=b-1022,n=0|c,t[0]=n,f=-2146435073&k|1071644672,t[1]=f,e=+o[0]}return e}(e,m+44|0),0!=(e+=e)){if(c=l[m+44>>2],l[m+44>>2]=c-1,(0|(B=32|f))!=97)break n;break a}if((0|(B=32|f))==97)break a;v=l[m+44>>2],p=(0|i)<0?6:i;break i}v=c-29|0,l[m+44>>2]=v,e*=268435456,p=(0|i)<0?6:i}for(u=R=(m+48|0)+((0|v)>=0?288:0)|0;i=e<4294967296&e>=0?~~e>>>0:0,l[u>>2]=i,u=u+4|0,0!=(e=(e-+(i>>>0))*1e9););f:{if((0|v)<=0){i=v,c=u,A=R;break f}for(A=R,i=v;;){E=(0|i)>=29?29:i,c=u-4|0;t:if(!(A>>>0>c>>>0)){for(i=0;h=l[c>>2],T=i,i=31&E,(63&E)>>>0>=32?(w=h<>>32-i,i=h<>>0>T>>>0?h+1|0:h,1e9),ra,-1e9,0)+T|0,l[c>>2]=h,A>>>0<=(c=c-4|0)>>>0;);if(!i)break t;l[(A=A-4|0)>>2]=i}for(;c=u,A>>>0>>0&&!l[(u=c-4|0)>>2];);if(i=l[m+44>>2]-E|0,l[m+44>>2]=i,u=c,!((0|i)>0))break}}if((0|i)<0)for(W=((p+25>>>0)/9|0)+1|0,G=(0|B)==102;;){w=(0|(i=0-i|0))>=9?9:i;b:{if(c>>>0<=A>>>0){u=l[A>>2];break b}for(E=1e9>>>w|0,h=-1<>2],l[u>>2]=T+(i>>>w|0),i=N(E,i&h),(u=u+4|0)>>>0>>0;);if(u=l[A>>2],!i)break b;l[c>>2]=i,c=c+4|0}if(i=w+l[m+44>>2]|0,l[m+44>>2]=i,A=(!u<<2)+A|0,u=G?R:A,c=c-u>>2>(0|W)?u+(W<<2)|0:c,!((0|i)<0))break}i=0;o:if(!(c>>>0<=A>>>0)){if(i=N(R-A>>2,9),u=10,(h=l[A>>2])>>>0<10)break o;for(;i=i+1|0,u=N(u,10),h>>>0>=u>>>0;);}if((0|(u=(p-((0|B)!=102?i:0)|0)-((0|B)==103&(0|p)!=0)|0))<(N(c-R>>2,9)-9|0)){if(h=(0|(E=u+9216|0))/9|0,v=((((0|v)<0?4:292)+m|0)+(h<<2)|0)-4048|0,u=10,(0|(w=E+N(h,-9)|0))<=7)for(;u=N(u,10),(0|(w=w+1|0))!=8;);W=((E=l[v>>2])>>>0)/(u>>>0)|0,G=N(W,u),h=v+4|0;k:if(!((0|E)==(0|G)&(0|h)==(0|c))){E=E-G|0;c:(1&W||(e=9007199254740992,!(!(1&s[v-4|0])|((0|u)!=1e9|A>>>0>=v>>>0))))&&(e=9007199254740994);if(g=(0|c)==(0|h)?1:1.5,g=(h=u>>>1|0)>>>0>E>>>0?.5:(0|h)==(0|E)?g:1.5,45!=d[0|I]|X||(g=-g,e=-e),l[v>>2]=G,e+g==e)break k;if(i=u+G|0,l[v>>2]=i,i>>>0>=1e9)for(;l[v>>2]=0,(v=v-4|0)>>>0>>0&&(l[(A=A-4|0)>>2]=0),i=l[v>>2]+1|0,l[v>>2]=i,i>>>0>999999999;);if(i=N(R-A>>2,9),u=10,(h=l[A>>2])>>>0<10)break k;for(;i=i+1|0,u=N(u,10),h>>>0>=u>>>0;);}c=c>>>0>(u=v+4|0)>>>0?u:c}for(;h=c,!(E=c>>>0<=A>>>0)&&!l[(c=h-4|0)>>2];);u:{if((0|B)!=103){v=8&n;break u}if(p=((c=(0|(u=p||1))>(0|i)&(0|i)>-5)?-1^i:-1)+u|0,f=(c?-1:-2)+f|0,v=8&n)break u;c=-9;s:if(!E&&(v=l[h-4>>2])){if(w=10,c=0,(v>>>0)%10|0)break s;for(;u=c,c=c+1|0,w=N(w,10),!((v>>>0)%(w>>>0)|0););c=-1^u}if(u=N(h-R>>2,9),(-33&f)==70){v=0,p=(0|(c=(0|(c=(c+u|0)-9|0))>0?c:0))>(0|p)?p:c;break u}v=0,p=(0|(c=(0|(c=((i+u|0)+c|0)-9|0))>0?c:0))>(0|p)?p:c}if(w=-1,(((E=v|p)?2147483645:2147483646)|0)<(0|p))break e;G=(((0|E)!=0)+p|0)+1|0,u=-33&f;A:{if((0|u)==70){if((2147483647^G)<(0|i))break e;c=(0|i)>0?i:0;break A}if(c=rK(((c=i>>31)^i)-c|0,0,V),(V-c|0)<=1)for(;s[0|(c=c-1|0)]=48,(V-c|0)<2;);if(s[0|(W=c-2|0)]=f,s[c-1|0]=(0|i)<0?45:43,(0|(c=V-W|0))>(2147483647^G))break e}if((0|(i=c+G|0))>(2147483647^Z))break e;er(r,32,a,G=i+Z|0,n),rF(r,I,Z),er(r,48,a,G,65536^n);l:{d:{h:{if((0|u)==70){for(i=8|(f=m+16|0),v=9|f,A=u=A>>>0>R>>>0?R:A;;){c=rK(l[A>>2],0,v);v:{if((0|u)!=(0|A)){if(m+16>>>0>=c>>>0)break v;for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);break v}if((0|c)!=(0|v))break v;s[m+24|0]=48,c=i}if(rF(r,c,v-c|0),!(R>>>0>=(A=A+4|0)>>>0))break}if(E&&rF(r,4206,1),(0|p)<=0|A>>>0>=h>>>0)break h;for(;;){if((c=rK(l[A>>2],0,v))>>>0>m+16>>>0)for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);if(rF(r,c,(0|p)>=9?9:p),c=p-9|0,h>>>0<=(A=A+4|0)>>>0)break d;if(i=(0|p)>9,p=c,!i)break}break d}p:if(!((0|p)<0))for(R=A>>>0>>0?h:A+4|0,i=8|(f=m+16|0),h=9|f,u=A;;){c=rK(l[u>>2],0,h),(0|h)==(0|c)&&(s[m+24|0]=48,c=i);m:{if((0|u)!=(0|A)){if(m+16>>>0>=c>>>0)break m;for(;s[0|(c=c-1|0)]=48,m+16>>>0>>0;);break m}if(rF(r,c,1),c=c+1|0,!(v|p))break m;rF(r,4206,1)}if(f=h-c|0,rF(r,c,(0|f)>(0|p)?p:f),p=p-f|0,R>>>0<=(u=u+4|0)>>>0)break p;if(!((0|p)>=0))break}er(r,48,p+18|0,18,0),rF(r,W,V-W|0);break l}c=p}er(r,48,c+9|0,9,0)}er(r,32,a,G,8192^n),w=(0|a)<(0|G)?G:a;break e}v=(f<<26>>31&9)+I|0;N:if(!(i>>>0>11)){for(c=12-i|0,g=16;g*=16,c=c-1|0;);if(45==d[0|v]){e=-(g+(-e-g));break N}e=e+g-g}for(R=2|Z,A=32&f,c=(u=l[m+44>>2])>>31,c=rK((c^u)-c|0,0,V),(0|V)==(0|c)&&(s[m+15|0]=48,c=m+15|0),s[0|(p=c-2|0)]=f+15,s[c-1|0]=(0|u)<0?45:43,c=8&n,u=m+16|0;f=u,h=2147483648>y(e)?~~e:-2147483648,s[0|u]=A|d[h+5424|0],!(c|(0|i)>0)&0==(e=(e-+(0|h))*16)|((u=f+1|0)-(m+16|0)|0)!=1||(s[f+1|0]=46,u=f+2|0),0!=e;);if(w=-1,(2147483645-(f=(c=V-p|0)+R|0)|0)<(0|i))break e;w:{y:if(i&&!(((A=u-(m+16|0)|0)-2|0)>=(0|i))){i=i+2|0;break w}i=A=u-(m+16|0)|0}er(r,32,a,f=i+f|0,n),rF(r,v,R),er(r,48,a,f,65536^n),rF(r,m+16|0,A),er(r,48,i-A|0,0,0),rF(r,p,c),er(r,32,a,f,8192^n),w=(0|a)<(0|f)?f:a}return re=m+560|0,0|w},function(r,e){r|=0,e|=0;var a,i,n=0,f=0,b=0,k=0,c=0,u=0,s=0,A=0,d=0,h=0,v=0,p=0,N=0,w=0,y=0,E=0;n=e,e=l[e>>2]+7&-8,l[n>>2]=e+16,N=r,s=l[e>>2],f=l[e+4>>2],v=r=l[e+12>>2],re=c=re-32|0,r&=2147483647,u=r,b=r-1006698496|0,r=r-1140785152|0,e=n=l[e+8>>2];r:{if((0|b)==(0|r)&e>>>0>>0|r>>>0>b>>>0){if(n=v<<4|(r=n)>>>28,e=r<<4|f>>>28,r=n,(0|(f&=268435455))==134217728&(0|s)!=0|f>>>0>134217728){r=r+1073741824|0,r=(e=e+1|0)?r:r+1|0;break r}if(r=r+1073741824|0,s|(0|f)!=134217728)break r;r=(e=(f=1&e)+e|0)>>>0>>0?r+1|0:r;break r}if(!(!e&(0|u)==2147418112?!(f|s):u>>>0<2147418112)){n=v<<4|(r=n)>>>28,e=r<<4|f>>>28,r=524287&n|2146959360;break r}if(e=0,r=2146435072,u>>>0>1140785151||(r=0,(p=u>>>16|0)>>>0<15249))break r;e=s,r=f,u=b=65535&v|65536,h=n,k=n,A=p-15233|0;e:{if(64&A){n=e,e=31&(b=A+-64|0),(63&b)>>>0>=32?(r=n<>>32-e|r<>>0>=32?(n=d<>>32-k|b<>>0>=32?(n=0,e=r>>>k|0):(n=r>>>k|0,e=((1<>>k),k=w|e,b|=n,e=31&A,(63&A)>>>0>=32?(n=d<>>32-e|r<>2]=e,l[c+20>>2]=r,l[c+24>>2]=k,l[c+28>>2]=b,e=15361-p|0;a:{if(64&e){f=h,r=31&(e=e+-64|0),(63&e)>>>0>=32?(n=0,s=u>>>r|0):(n=u>>>r|0,s=((1<>>r),f=n,h=0,u=0;break a}if(!e)break a;b=h,n=31&(r=64-e|0),(63&r)>>>0>=32?(r=b<>>32-n|u<>>0>=32?(n=0,b=f>>>s|0):(n=f>>>s|0,b=((1<>>s),s=k|b,f=r|n,b=h,n=31&e,(63&e)>>>0>=32?(r=0,h=u>>>n|0):(r=u>>>n|0,h=((1<>>n),u=r}if(l[c>>2]=s,l[c+4>>2]=f,l[c+8>>2]=h,l[c+12>>2]=u,e=l[c+8>>2],r=l[c+12>>2]<<4|e>>>28,e<<=4,n=l[c>>2],e=(u=l[c+4>>2])>>>28|e,(0|(f=268435455&u))==134217728&(0|(n|=(l[c+16>>2]|l[c+24>>2]|(l[c+20>>2]|l[c+28>>2]))!=0))!=0|f>>>0>134217728){r=(e=e+1|0)?r:r+1|0;break r}if(n|(0|f)!=134217728)break r;r=(n=e)>>>0>(e=e+(1&e)|0)>>>0?r+1|0:r}re=c+32|0,a=0|e,t[0]=a,i=-2147483648&v|r,t[1]=i,y=N,E=+o[0],m[y>>3]=E},e_,function(r,e){e|=0,l[(r|=0)+4>>2]=7,l[r>>2]=e},function(r,e){e|=0,l[(r|=0)+4>>2]=10,l[r>>2]=e},function(r,e){e|=0,l[(r|=0)+4>>2]=13,l[r>>2]=e},e_,e_,e_,e_,e_,e_,function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0;re=t=re-16|0,e=l[l[e>>2]+4>>2],eY[l[l[e>>2]+8>>2]](t,e,a,i,n,f),p[r>>2]=m[t>>3],p[r+4>>2]=m[t+8>>3],re=t+16|0},function(r){r|=0,r=l[l[r>>2]+8>>2],eY[l[l[r>>2]+8>>2]](r)},rn,function(r){return 6952},eg,function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0,b=0;return re=t=re-16|0,b=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(b=l[b+l[e>>2]>>2]),eY[0|b](t,e,a,i,n,f),r=eo(16),e=l[t+12>>2],l[r+8>>2]=l[t+8>>2],l[r+12>>2]=e,e=l[t+4>>2],l[r>>2]=l[t>>2],l[r+4>>2]=e,re=t+16|0,0|r},function(r){return 6956},e_,e_,eg,eF,eB,eA,function(r){r|=0;var e=0;return s[(e=eo(12))+4|0]=0,l[e+8>>2]=l[r>>2],l[r>>2]=0,l[e>>2]=4368,0|e},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0;if(re=i=re-32|0,(n=l[e>>2])>>>0<2147483632){r:{e:{if(n>>>0>=11){t=eo(f=(15|n)+1|0),l[i+16>>2]=-2147483648|f,l[i+8>>2]=t,l[i+12>>2]=n,f=n+t|0;break e}if(s[i+19|0]=n,f=(t=i+8|0)+n|0,!n)break r}ru(t,e+4|0,n)}return s[0|f]=0,l[i>>2]=a,eY[0|r](i+24|0,i+8|0,i),U(l[i+24>>2]),r=l[i+24>>2],I(0|r),I(l[i>>2]),s[i+19|0]<0&&rE(l[i+8>>2]),re=i+32|0,0|r}T(),k()},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;i=r,n=0|Y((s[e+11|0]<0?l[e>>2]:e)|0,6956,l[a>>2]),l[i>>2]=n},function(r){return 6976},eg,em,function(r){return 6979},e_,e_,eg,eF,eB,eA,function(r){r|=0;var e=0;return s[(e=eo(12))+4|0]=0,l[e+8>>2]=l[r>>2],l[r>>2]=0,l[e>>2]=4488,0|e},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;i=r,n=0|Y((s[e+11|0]<0?l[e>>2]:e)|0,6979,l[a>>2]),l[i>>2]=n},function(r){return 6982},eE,eT,function(){var r=0,e=0;return e=eo(4),A[(r=eo(28))+20>>1]=0,l[r+16>>2]=1065353216,A[r+10>>1]=0,A[r+12>>1]=0,l[r>>2]=0,l[r+24>>2]=0,s[r+9|0]=0,l[r+4>>2]=1,s[r+22|0]=0,l[1732]=l[1732]+1,l[e>>2]=r,0|e},eI,eE,function(r,e,a){e|=0,a|=0,s[(l[(r|=0)>>2]+e|0)+20|0]=a},et,function(r,e){r|=0,e=w(e);var a=0,i=0,n=0;if(re=a=re-16|0,r=l[r>>2],!(e>=w(0))){l[a>>2]=2262,re=i=re-16|0,l[i+12>>2]=a;r:if(!r){if(d[6936]){r=l[1733];break r}A[(r=eo(28))+20>>1]=0,l[r+16>>2]=1065353216,A[r+10>>1]=0,A[r+12>>1]=0,l[r>>2]=0,l[r+24>>2]=0,s[r+9|0]=0,l[r+4>>2]=1,s[r+22|0]=0,l[1733]=r,s[6936]=1,l[1732]=l[1732]+1}n=l[r+4>>2];e:{if(d[r+9|0]){eY[0|n](r,0,5,0,4215,a);break e}eY[0|n](r,0,5,4215,a)}re=i+16|0,eX(),k()}p[r+16>>2]=e==w(0)?w(0):e,re=a+16|0},function(r,e,a){r|=0,e|=0,a=w(a);var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)},function(r,e){e|=0,s[l[(r|=0)>>2]+11|0]=e},ek,function(r,e){e|=0,s[l[(r|=0)>>2]+10|0]=e},function(r,e){return e|=0,d[(l[(r|=0)>>2]+e|0)+20|0]},eb,function(r){return d[l[(r|=0)>>2]+11|0]},ec,function(r){return d[l[(r|=0)>>2]+10|0]},function(){return 0|ry(eo(48),0,48)},eL,function(){var r=0;return l[(r=eo(16))>>2]=0,l[r+4>>2]=0,l[r+8>>2]=0,l[r+12>>2]=0,0|r},eL,function(){var r=0;return l[(r=eo(16))+8>>2]=0,l[r+12>>2]=0,l[r>>2]=0,0|r},eL,eR,eG,function(r,e){return e|=0,l[l[(r|=0)>>2]+e>>2]},function(r,e,a){e|=0,a|=0,l[l[(r|=0)>>2]+e>>2]=a},function(r){return 6987},rL,eT,function(){return 0|rJ(eo(12),0)},function(r,e){return e|=0,0|eY[0|(r|=0)](e)},function(r){return r|=0,0|rJ(eo(12),r)},eI,rL,function(r){r|=0;var e=0,a=0,i=0,n=0;re=i=re-624|0,e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e);r:{if(r=l[r>>2],l[r+560>>2]==l[r+556>>2]){if(l[r+552>>2])break r;r_(r+556|0),n=s[r+4|0],e=rk(i+32|0,l[r+568>>2]),a=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=a,a=l[e+20>>2],l[r+16>>2]=l[e+16>>2],l[r+20>>2]=a,a=l[e+12>>2],l[r+8>>2]=l[e+8>>2],l[r+12>>2]=a,ru(r+24|0,e+24|0,204),ru(r+228|0,e+228|0,328),(a=l[r+556>>2])&&(l[r+560>>2]=a,rE(a)),l[r+556>>2]=l[e+556>>2],l[r+560>>2]=l[e+560>>2],l[r+564>>2]=l[e+564>>2],l[r+584>>2]=l[e+584>>2],a=l[e+580>>2],l[r+576>>2]=l[e+576>>2],l[r+580>>2]=a,a=l[e+572>>2],l[r+568>>2]=l[e+568>>2],l[r+572>>2]=a,(0|n)<0&&(s[r+4|0]=128|d[r+4|0],l[r+24>>2]=-909&l[r+24>>2]|520),re=i+624|0;return}l[i+16>>2]=3252,rB(r,i+16|0),eX(),k()}l[i>>2]=2046,rB(r,i),eX(),k()},em,function(r,e){r|=0,e|=0;var a,i,n=0,f=w(0),b=0,o=0,k=w(0),c=0,A=0,h=0,v=w(0);r:{A=l[e>>2],e=l[r>>2];e:if(!((l[A+24>>2]^l[e+24>>2])&8388607)){v=p[A+40>>2],b=l[A+40>>2],f=p[e+40>>2];a:{i:{if((0|(n=l[e+40>>2]))!=2139156720){if(k=w(NaN),r=3,(0|n)==2141891242)break a;if((0|n)!=2140081935)break i;k=w(0),r=1;break a}r=2;break a}if(r=0,f!=f)break a;a=(-1073741825&n)+536870912|0,t[2]=a,k=u(),r=1073741824&n?2:1}n:{f:{if((0|b)!=2139156720){if(f=w(NaN),n=3,(0|b)==2141891242)break n;if((0|b)!=2140081935)break f;f=w(0),n=1;break n}f=w(0),n=2;break n}if(n=0,v!=v)break n;i=(-1073741825&b)+536870912|0,t[2]=i,f=u(),n=1073741824&b?2:1}if((0|n)!=(0|r)|!(!r|k!=k&f!=f|w(y(w(k-f)))>2]!=l[o>>2]))break e;r=0;t:{for(;;){if(b=r,(0|(r=r+1|0))==9)break t;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+80|0,o=A+80|0,l[n>>2]!=l[o>>2])break e;r=0;b:{for(;;){if(b=r,(0|(r=r+1|0))==9)break b;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+116|0,o=A+116|0,l[n>>2]!=l[o>>2])break e;r=0;o:{for(;;){if(b=r,(0|(r=r+1|0))==9)break o;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+152|0,o=A+152|0,l[n>>2]!=l[o>>2])break e;r=0;k:{for(;;){if(b=r,(0|(r=r+1|0))==9)break k;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<8)break e}if(n=e+188|0,o=A+188|0,l[n>>2]!=l[o>>2])break e;r=0;c:{for(;;){if(b=r,(0|(r=r+1|0))==3)break c;if(l[(c=r<<2)+n>>2]!=l[o+c>>2])break}if(b>>>0<2)break e}for(c=A+200|0,h=e+200|0,r=0,b=1;;){u:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o))break e;for(c=A+208|0,h=e+208|0,r=0,b=1;;){s:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o))break e;for(c=A+216|0,h=e+216|0,r=0,b=1;;){A:if(r<<=2,n=l[r+c>>2],o=l[r+h>>2],b&&(b=0,r=1,(0|n)==(0|o)))continue;break}if((0|n)!=(0|o)||(r=(k=p[A+28>>2])!=k,f=p[e+28>>2],(0|r)==(f==f|0)|!(r|f!=f)&f!=k)||(f=p[e+32>>2],k=p[A+32>>2],(f==f|0)==(k!=k|0)|f==f&f!=k)||(r=(k=p[A+36>>2])!=k,f=p[e+36>>2],(0|r)==(f==f|0)|!r&f!=k))break e;if(r=0,(f=p[e+224>>2])!=f&&(r=1,(k=p[A+224>>2])!=k)||(k=f,f=p[A+224>>2],k==f|f!=f&r))break r}for(ru(e+24|0,A+24|0,204);;){if(4&(r=d[e+4|0]))break r;if(s[e+4|0]=4|r,(r=l[e+20>>2])&&eY[0|r](e),l[e+308>>2]=2143289344,!(e=l[e+552>>2]))break}}},ek,function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>16&3)!=(0|e))for(l[r+24>>2]=-196609&a|e<<16&196608;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},ek,function(r,e,a){e|=0,a=+a,r4(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a,i){r|=0,e|=0,a|=0,i=+i;var n=0;n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](e,a,i)},function(r,e,a){e|=0,a=+a,r4(l[(r|=0)>>2],e,rD(w(a)))},function(r,e){e|=0,rC(l[(r|=0)>>2],5,e)},function(r,e){e|=0,rC(l[(r|=0)>>2],6,e)},function(r,e){e|=0,rC(l[(r|=0)>>2],7,e)},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>2&3)!=(0|e))for(l[r+24>>2]=-13&a|e<<2&12;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>18&3)!=(0|e))for(l[r+24>>2]=-786433&a|e<<18&786432;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>4&7)!=(0|e))for(l[r+24>>2]=-113&a|e<<4&112;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){e|=0,a=+a,r8(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a){e|=0,a=+a,r8(l[(r|=0)>>2],e,rD(w(a)))},function(r,e){e|=0,r8(l[(r|=0)>>2],e,2141891242)},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>20&3)!=(0|e))for(l[r+24>>2]=-3145729&a|e<<20&3145728;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e|=0;var a=0;r:if(r=l[r>>2],((a=l[r+24>>2])>>>22&1)!=(0|e))for(l[r+24>>2]=-4194305&a|e<<22&4194304;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+28>>2],!(i==n|i!=i&n!=n))for(p[r+28>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){r|=0,e|=0,a=+a;var i=0;i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](e,a)},function(r,e){e=+e,r1(l[(r|=0)>>2],rx(w(e)))},function(r,e){e=+e,r1(l[(r|=0)>>2],rD(w(e)))},function(r){r1(l[(r|=0)>>2],2141891242)},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+32>>2],!(i==n|i!=i&n!=n))for(p[r+32>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+36>>2],!(i==n|i!=i&n!=n))for(p[r+36>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e){e=+e,r2(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r2(l[(r|=0)>>2],0,rD(w(e)))},function(r){r2(l[(r|=0)>>2],0,2141891242)},function(r,e){e=+e,r2(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r2(l[(r|=0)>>2],1,rD(w(e)))},function(r){r2(l[(r|=0)>>2],1,2141891242)},function(r,e){e=+e,r$(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],0,rD(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r$(l[(r|=0)>>2],1,rD(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],0,rx(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],0,rD(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],1,rx(w(e)))},function(r,e){e=+e,r0(l[(r|=0)>>2],1,rD(w(e)))},function(r,e){r|=0,e=+e;var a=0,i=w(0),n=w(0);r:if(i=w(e),n=p[(r=l[r>>2])+224>>2],!(i==n|i!=i&n!=n))for(p[r+224>>2]=i;;){if(4&(a=d[r+4|0]))break r;if(s[r+4|0]=4|a,(a=l[r+20>>2])&&eY[0|a](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){r|=0,e|=0,a=+a;var i=0,n=0;r:if(e=(r=l[r>>2])+(e<<2)|0,(0|(n=l[e+152>>2]))!=(0|(i=rx(w(a)))))for(l[e+152>>2]=i;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r,e,a){e|=0,a=+a,r3(l[(r|=0)>>2],e,rx(w(a)))},function(r,e,a){e|=0,a=+a,r3(l[(r|=0)>>2],e,rD(w(a)))},function(r,e,a){r|=0,e|=0,a=+a;var i=0,n=0;r:if(e=(r=l[r>>2])+(e<<2)|0,(0|(n=l[e+188>>2]))!=(0|(i=rx(w(a)))))for(l[e+188>>2]=i;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},function(r){return 3&h[l[(r|=0)>>2]+26>>1]},ec,function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+80>>2];r:{e:{if((0|(e=l[e+80>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0;return re=i=re-16|0,n=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(n=l[n+l[e>>2]>>2]),eY[0|n](i,e,a),r=eo(16),e=l[i+12>>2],l[r+8>>2]=l[i+8>>2],l[r+12>>2]=e,e=l[i+4>>2],l[r>>2]=l[i>>2],l[r+4>>2]=e,re=i+16|0,0|r},function(r){return l[l[(r|=0)>>2]+24>>2]>>>7&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>10&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>13&7},function(r){return l[l[(r|=0)>>2]+24>>2]>>>2&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>18&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>4&7},function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+44>>2];r:{e:{if((0|(e=l[e+44>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e){r|=0,e|=0;var a,i=0,n=w(0),f=w(0);n=w(NaN),f=p[(e=l[e>>2])+40>>2],e=l[e+40>>2],i=3;r:if((0|e)!=2141891242){if((0|e)==2140081935){n=w(0),i=1;break r}if((0|e)==2139156720){n=w(0),i=2;break r}if(i=0,f!=f)break r;a=(-1073741825&e)+536870912|0,t[2]=a,n=u(),i=1073741824&e?2:1}l[r>>2]=i,m[r+8>>3]=n},function(r,e){r|=0,e|=0;var a=0,i=0;return re=a=re-16|0,i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](a,e),r=eo(16),e=l[a+12>>2],l[r+8>>2]=l[a+8>>2],l[r+12>>2]=e,e=l[a+4>>2],l[r>>2]=l[a>>2],l[r+4>>2]=e,re=a+16|0,0|r},function(r){r|=0;var e=w(0);return+((e=p[l[r>>2]+32>>2])==e?e:w(0))},function(r,e){r|=0,e|=0;var a=0;return a=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(a=l[a+l[e>>2]>>2]),+eY[0|a](e)},function(r){r|=0;var e=w(0);return(e=p[(r=l[r>>2])+36>>2])!=e&&(e=d[l[r+568>>2]+10|0]?w(1):w(0)),+e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+200>>2];r:{e:{if((0|(e=l[e+200>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+204>>2];r:{e:{if((0|(e=l[e+204>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+208>>2];r:{e:{if((0|(e=l[e+208>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+212>>2];r:{e:{if((0|(e=l[e+212>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+216>>2];r:{e:{if((0|(e=l[e+216>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r,e){r|=0,e|=0;var a,i=0,n=0,f=w(0);f=p[(e=l[e>>2])+220>>2];r:{e:{if((0|(e=l[e+220>>2]))!=2139156720){if(n=NaN,i=3,(0|e)==2141891242)break r;if((0|e)!=2140081935)break e;n=0,i=1;break r}i=2;break r}if(i=0,f!=f)break r;n=+(a=(-1073741825&e)+536870912|0,t[2]=a,u()),i=1073741824&e?2:1}e=i,m[r+8>>3]=n,l[r>>2]=e},function(r){r|=0;var e=w(0);return+((e=p[l[r>>2]+224>>2])!=e?w(NaN):e)},function(r,e){r|=0,e|=0;var a,i=0,n=w(0);n=p[(r=l[r>>2]+(e<<2)|0)+152>>2];r:{e:if(!((0|(r=l[r+152>>2]))==2139156720|(0|r)==2140081935)){if(i=NaN,(0|r)==2141891242|n!=n)break r;if((0|r)==2139156720)break e;return+(a=(-1073741825&r)+536870912|0,t[2]=a,u())}i=0}return+i},function(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),+eY[0|i](e,a)},function(r){return l[l[(r|=0)>>2]+24>>2]>>>20&3},function(r){return l[l[(r|=0)>>2]+24>>2]>>>22&1},function(r,e,a){r|=0,e|=0,a|=0;var i,n=0,f=0,b=w(0);n=2,b=p[(e=l[e>>2]+(a<<2)|0)+116>>2];r:{e:{if((0|(e=l[e+116>>2]))!=2139156720){if(f=NaN,(0|e)==2141891242){n=3;break r}if((0|e)!=2140081935)break e;f=0,n=1}break r}if(b!=b){n=0;break r}n=1073741824&e?2:1,f=+(i=(-1073741825&e)+536870912|0,t[2]=i,u())}m[r+8>>3]=f,l[r>>2]=n},function(r,e){r|=0,e|=0;var a,i=w(0),n=w(0);n=p[(r=l[r>>2]+(e<<2)|0)+188>>2];r:{e:if(!((0|(r=l[r+188>>2]))==2139156720|(0|r)==2140081935)){if(i=w(NaN),(0|r)==2141891242|n!=n)break r;if((0|r)==2139156720)break e;return w((a=(-1073741825&r)+536870912|0,t[2]=a,u()))}i=w(0)}return w(i)},function(r,e,a){r|=0,e|=0,a|=0;var i=0;return i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),w(w(eY[0|i](e,a)))},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0,o=0,c=0,u=0,A=0,h=0;re=b=re-80|0,r=l[r>>2];r:{e:{if(o=l[e>>2],!l[o+552>>2]){if(l[r+8>>2])break e;t=(e=l[r+556>>2])+(a<<2)|0,i=l[r+560>>2],f=l[(n=r+564|0)>>2];a:{if(i>>>0>>0){if((0|i)==(0|t)){l[t>>2]=o,l[r+560>>2]=t+4;break a}if(a=i,e=i-4|0,i>>>0>e>>>0)for(;l[a>>2]=l[e>>2],a=a+4|0,i>>>0>(e=e+4|0)>>>0;);l[r+560>>2]=a,(0|(e=t+4|0))!=(0|i)&&(e=i-e|0,rm(i-(-4&e)|0,t,e)),l[t>>2]=o;break a}if((i=(i-e>>2)+1|0)>>>0>=1073741824)break r;f=(e=f-e|0)>>>1|0,a=l[(n=en(b+32|0,e>>>0>=2147483644?1073741823:i>>>0>>0?f:i,a,n))+8>>2];i:if((0|a)==l[n+12>>2]){if(e=l[n+4>>2],i=l[n>>2],e>>>0>i>>>0){a=rm(c=(i=-(((e-i>>2)+1|0)/2)<<2)+e|0,f=e,e=a-e|0)+e|0,l[n+8>>2]=a,l[n+4>>2]=i+l[n+4>>2];break i}f=en(b+56|0,e=(0|a)==(0|i)?1:a-i>>1,e>>>2|0,l[n+16>>2]),i=l[f+8>>2],e=l[n+4>>2],a=l[n+8>>2];n:{if((0|e)==(0|a)){a=i,i=e;break n}for(a=(a-e|0)+i|0;l[i>>2]=l[e>>2],e=e+4|0,(0|(i=i+4|0))!=(0|a););e=l[n+8>>2],i=l[n+4>>2]}if(c=l[n>>2],l[n>>2]=l[f>>2],l[f>>2]=c,l[n+4>>2]=l[f+4>>2],l[f+4>>2]=i,l[n+8>>2]=a,l[f+8>>2]=e,u=l[n+12>>2],l[n+12>>2]=l[f+12>>2],l[f+12>>2]=u,(0|e)!=(0|i)&&(l[f+8>>2]=((i-e|0)+3&-4)+e),!c)break i;rE(c),a=l[n+8>>2]}if(l[a>>2]=o,l[n+8>>2]=l[n+8>>2]+4,e=l[r+556>>2],a=t-e|0,A=n,h=rm(l[n+4>>2]-a|0,e,a),l[A+4>>2]=h,i=l[r+560>>2]-t|0,t=rm(l[n+8>>2],t,i),e=l[r+556>>2],l[r+556>>2]=l[n+4>>2],l[n+4>>2]=e,a=l[r+560>>2],l[r+560>>2]=i+t,l[n+8>>2]=a,i=l[r+564>>2],l[r+564>>2]=l[n+12>>2],l[n>>2]=e,l[n+12>>2]=i,(0|e)!=(0|a)&&(l[n+8>>2]=a+((e-a|0)+3&-4)),!e)break a;rE(e)}for(l[o+552>>2]=r;!(4&(e=d[r+4|0]))&&(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,r=l[r+552>>2]););re=b+80|0;return}l[b+16>>2]=4006,rB(r,b+16|0),eX(),k()}l[b>>2]=4139,rB(r,b),eX(),k()}T(),k()},et,function(r,e){r|=0,e|=0;var a=0,i=0,n=0,f=0;re=n=re-320|0,r=l[r>>2];r:if(l[r+560>>2]!=l[r+556>>2]){if(i=l[e>>2],e=l[i+552>>2],!rq(r,i))break r;if((0|r)==(0|e)){for(l[(e=a=ry(n,0,288))+16>>2]=2143289344,l[e+20>>2]=2143289344,ry(e+24|0,0,49),l[e+80>>2]=2143289344,f=e+288|0,e=e+96|0;l[e+16>>2]=-1082130432,l[e+20>>2]=-1082130432,l[e+8>>2]=0,l[e+12>>2]=0,l[e>>2]=-1082130432,l[e+4>>2]=-1082130432,(0|f)!=(0|(e=e+24|0)););l[a+312>>2]=-1082130432,l[a+316>>2]=-1082130432,l[a+304>>2]=0,l[a+308>>2]=0,l[a+296>>2]=-1082130432,l[a+300>>2]=-1082130432,l[a+288>>2]=2143289344,l[a+292>>2]=2143289344,ru(i+228|0,a,320),l[i+552>>2]=0}for(;;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}}re=n+320|0},ek,function(r){return r|=0,r=l[r>>2],l[r+560>>2]-l[r+556>>2]>>2},ec,function(r){return(r|=0,r=l[l[r>>2]+552>>2])?l[r>>2]:0},ec,function(r,e){r|=0,e|=0;var a=0,i=0;a=l[r>>2],r=l[a+556>>2];r:!(l[a+560>>2]-r>>2>>>0<=e>>>0)&&(r=l[r+(e<<2)>>2])&&(i=l[r>>2]);return 0|i},eb,function(r){return(2&d[l[(r|=0)>>2]+4|0])>>>1|0},ec,function(r,e){r|=0,e|=0;var a=0;r:if(((2&(a=d[(r=l[r>>2])+4|0]))>>>1|0)!=(0|e))for(s[r+4|0]=253&a|(e?2:0);;){if(4&(e=d[r+4|0]))break r;if(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,!(r=l[r+552>>2]))break}},ek,function(r,e){r|=0,e|=0;var a=0;a=l[r+4>>2],l[r+4>>2]=e,a&&eY[l[l[a>>2]+4>>2]](a),r7(l[r>>2],14)},ek,function(r){r|=0;var e=0;e=l[r+4>>2],l[r+4>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),r7(l[r>>2],0)},function(r,e){r|=0,e|=0;var a=0;a=l[r+8>>2],l[r+8>>2]=e,a&&eY[l[l[a>>2]+4>>2]](a),l[l[r>>2]+20>>2]=15},ek,function(r){r|=0;var e=0;e=l[r+8>>2],l[r+8>>2]=0,e&&eY[l[l[e>>2]+4>>2]](e),l[l[r>>2]+20>>2]=0},function(r){r|=0;var e=0,a=0;if(re=a=re-16|0,r=l[r>>2],l[r+8>>2]){for(;!(4&(e=d[r+4|0]))&&(s[r+4|0]=4|e,(e=l[r+20>>2])&&eY[0|e](r),l[r+308>>2]=2143289344,r=l[r+552>>2]););re=a+16|0;return}l[a>>2]=1024,rB(r,a),eX(),k()},function(r){return(4&d[l[(r|=0)>>2]+4|0])>>>2|0},ec,function(r,e,a,i){r|=0,e=+e,a=+a,i|=0;var n,f,b,o,k=w(0),c=w(0),s=0,A=w(0),h=0,v=w(0),m=0,N=w(0),E=0;re=E=re+-64|0,s=l[r>>2],ry(E+8|0,0,56),l[1735]=l[1735]+1,rc(s),A=w(e),c=p[s+572>>2];r:{e:{a:switch(0|(r=l[s+576>>2])){case 0:case 3:break e;default:break a}k=p[s+572>>2];i:{if(!((0|r)!=1|k!=k)){if(!((k=c)>2];t:{b:{r=l[s+216>>2];o:{k:if((0|r)!=2139156720){if((0|r)==2140081935)break t;m=4276;c:{if((0|r)!=2141891242){if(c==c)break c;m=4268}switch(k=p[m>>2],l[m+4>>2]-1|0){case 0:break o;case 1:break k;default:break b}}if(n=(-1073741825&r)+536870912|0,t[2]=n,k=u(),!(1073741824&r))break o}k=w(w(k*A)*w(.009999999776482582))}if(k!=k)break b;k=w(0);u:if((0|r)!=2139156720){if((0|r)==2140081935)break t;h=4276;s:{if((0|r)!=2141891242){if(c==c)break s;h=4268}switch(k=p[h>>2],N=w(NaN),m=2,l[h+4>>2]-1|0){case 1:break u;case 0:break t;default:break r}}if(f=(-1073741825&r)+536870912|0,t[2]=f,k=u(),!(1073741824&r))break t}N=w(w(k*A)*w(.009999999776482582)),m=2;break r}m=A==A,N=A;break r}m=2,N=k}v=w(a),c=p[s+580>>2];A:{l:{d:switch(0|(r=l[s+584>>2])){case 0:case 3:break l;default:break d}k=p[s+580>>2];h:{if(!((0|r)!=1|k!=k)){if(!((k=c)>2];m:{N:{r=l[s+220>>2];w:{y:if((0|r)!=2139156720){if((0|r)==2140081935)break m;h=4276;E:{if((0|r)!=2141891242){if(c==c)break E;h=4268}switch(k=p[h>>2],l[h+4>>2]-1|0){case 0:break w;case 1:break y;default:break N}}if(b=(-1073741825&r)+536870912|0,t[2]=b,k=u(),!(1073741824&r))break w}k=w(w(k*v)*w(.009999999776482582))}if(k!=k)break N;k=w(0);G:if((0|r)!=2139156720){if((0|r)==2140081935)break m;h=4276;R:{if((0|r)!=2141891242){if(c==c)break R;h=4268}switch(k=p[h>>2],c=w(NaN),r=2,l[h+4>>2]-1|0){case 0:break m;case 1:break G;default:break A}}if(o=(-1073741825&r)+536870912|0,t[2]=o,k=u(),!(1073741824&r))break m}c=w(w(k*v)*w(.009999999776482582)),r=2;break A}r=v==v,c=v;break A}r=2,c=k}rt(s,N,c,i,m,r,A,v,1,0,l[s+568>>2],E+8|0,0,l[1735])&&(rO(s,3&d[s+300|0],A,v,A),function r(e,a,i,n){var f=0,t=0,b=0,o=0,k=0,c=0,u=0,s=0,A=0,h=0,v=0,m=w(0),N=w(0),E=w(0),G=0,R=w(0);r:if(0!=a){if(m=p[e+248>>2],N=p[e+244>>2],E=p[e+232>>2],s=+p[e+228>>2],f=(b=8&d[e+4|0])>>>3|0,G=e,R=rH(s,a,0,f),p[G+228>>2]=R,A=+E,G=e,R=rH(A,a,0,f),p[G+232>>2]=R,f=(k=rl((h=+N)*a))!=k,t=(c=rl((v=+m)*a))!=c,i=s+i,o=f|(o=1e-4>y(k))?!o|f:!(1e-4>y(k+-1)),f=(0|b)!=0,G=e,R=w(rH(i+h,a,o&f,!o&f)-rH(i,a,0,f)),p[G+244>>2]=R,n=A+n,t=t|(b=1e-4>y(c))?!b|t:!(1e-4>y(c+-1)),G=e,R=w(rH(n+v,a,f&t,!t&f)-rH(n,a,0,f)),p[G+248>>2]=R,f=l[e+560>>2],t=l[e+556>>2],(0|f)==(0|t))break r;for(t=(f=f-t>>2)>>>0<=1?1:f;f=l[e+556>>2],f=l[e+560>>2]-f>>2>>>0>u>>>0?l[f+(u<<2)>>2]:0,r(f,a,i,n),(0|t)!=(0|(u=u+1|0)););}}(s,+p[l[s+568>>2]+16>>2],0,0)),re=E- -64|0},function(r,e,a,i,n){r|=0,e|=0,a=+a,i=+i,n|=0;var f=0;f=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(f=l[f+l[e>>2]>>2]),eY[0|f](e,a,i,n)},function(r){return+p[l[(r|=0)>>2]+228>>2]},function(r){return+p[l[(r|=0)>>2]+236>>2]},function(r){return+p[l[(r|=0)>>2]+232>>2]},function(r){return+p[l[(r|=0)>>2]+240>>2]},function(r){return+p[l[(r|=0)>>2]+244>>2]},function(r){return+p[l[(r|=0)>>2]+248>>2]},function(r,e){r|=0,e|=0,e=l[e>>2],m[r>>3]=p[e+228>>2],m[r+8>>3]=p[e+236>>2],m[r+16>>3]=p[e+232>>2],m[r+24>>3]=p[e+240>>2],m[r+32>>3]=p[e+244>>2],m[r+40>>3]=p[e+248>>2]},function(r,e){r|=0,e|=0;var a=0,i=0;return re=a=re-48|0,i=l[r>>2],e=((r=l[r+4>>2])>>1)+e|0,1&r&&(i=l[i+l[e>>2]>>2]),eY[0|i](a,e),r=ru(eo(48),a,48),re=a+48|0,0|r},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+260|0,(3&d[r+300|0])==2)break r;e=r+252|0;break r;case 1:if(e=r+252|0,(3&d[r+300|0])==2)break r;e=r+260|0;break r;default:break e}e=(r+(e<<2)|0)+252|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+276|0,(3&d[r+300|0])==2)break r;e=r+268|0;break r;case 1:if(e=r+268|0,(3&d[r+300|0])==2)break r;e=r+276|0;break r;default:break e}e=(r+(e<<2)|0)+268|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},function(r,e){r|=0,e|=0;var a=0;if(re=a=re-16|0,r=l[r>>2],(0|e)<6){re=a+16|0;r:{e:switch(e-4|0){case 0:if(e=r+292|0,(3&d[r+300|0])==2)break r;e=r+284|0;break r;case 1:if(e=r+284|0,(3&d[r+300|0])==2)break r;e=r+292|0;break r;default:break e}e=(r+(e<<2)|0)+284|0}return+p[e>>2]}l[a>>2]=1871,rB(r,a),eX(),k()},eR,eG,eR,eG,rw,ew,function(r){rE(ew(r|=0))},function(r,e,a,i,n,f){r|=0,e|=0,a=w(a),i|=0,n=w(n),f|=0;var t=0,b=0,o=0;re=t=re-48|0,o=l[e+8>>2];r:{if(1&s[6972]){e=l[1742];break r}e=0|F(5,4416),s[6972]=1,l[1742]=e}l[t+40>>2]=f,p[t+32>>2]=n,l[t+24>>2]=i,p[t+16>>2]=a,b=+H(0|e,0|o,2873,t+12|0,t+16|0);e:{if(b<4294967296&b>=0){e=~~b>>>0;break e}e=0}i=l[t+12>>2],f=l[e+4>>2],l[r>>2]=l[e>>2],l[r+4>>2]=f,f=l[e+12>>2],l[r+8>>2]=l[e+8>>2],l[r+12>>2]=f,M(0|i),re=t+48|0},eC,eS,eN,function(r){rE(eN(r|=0))},function(r){ep(l[(r|=0)+8>>2],3244)},eC,function(r){return 0|K(l[(r|=0)+60>>2])},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0,o=0,k=0;re=i=re-32|0,n=l[r+28>>2],l[i+16>>2]=n,f=l[r+20>>2],l[i+28>>2]=a,l[i+24>>2]=e,e=f-n|0,l[i+20>>2]=e,f=e+a|0,o=2,e=i+16|0;r:{for(;;){e:{a:{i:{if(!eZ(0|J(l[r+60>>2],0|e,0|o,i+12|0))){if((0|(t=l[i+12>>2]))==(0|f))break i;if((0|t)>=0)break a;break e}if((0|f)!=-1)break e}e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,l[r+16>>2]=e+l[r+48>>2],r=a;break r}n=((k=(b=l[e+4>>2])>>>0>>0)<<3)+e|0,b=t-(k?b:0)|0,l[n>>2]=b+l[n>>2],l[(e=(k?12:4)+e|0)>>2]=l[e>>2]-b,f=f-t|0,o=o-k|0,e=n;continue}break}if(l[r+28>>2]=0,l[r+16>>2]=0,l[r+20>>2]=0,l[r>>2]=32|l[r>>2],r=0,(0|o)==2)break r;r=a-l[e+4>>2]|0}return re=i+32|0,0|r},function(r,e,a,i){r|=0,e|=0,a|=0,i|=0;var n=0;return re=n=re-16|0,r=eZ(0|z(l[r+60>>2],0|e,0|a,255&i,n+8|0)),re=n+16|0,ra=r?-1:l[n+12>>2],(r?-1:l[n+8>>2])|0},function(r){return 0},function(r,e,a,i){return ra=0,0},function(r,e,a){r|=0,e|=0,a|=0;var i=0,n=0,f=0,t=0,b=0;return n=l[r+84>>2],f=l[n>>2],i=l[n+4>>2],b=l[r+28>>2],t=l[r+20>>2]-b|0,(t=i>>>0>>0?i:t)&&(ru(f,b,t),f=t+l[n>>2]|0,l[n>>2]=f,i=l[n+4>>2]-t|0,l[n+4>>2]=i),(i=a>>>0>i>>>0?i:a)&&(ru(f,e,i),f=i+l[n>>2]|0,l[n>>2]=f,l[n+4>>2]=l[n+4>>2]-i),s[0|f]=0,e=l[r+44>>2],l[r+28>>2]=e,l[r+20>>2]=e,0|a},eS]).set=function(r,e){this[r]=e},a.get=function(r){return this[r]},a);function eU(){return b.byteLength/65536|0}return{E:function(){for(var r=0,e=0,a=0;a=(e=r<<4)+5888|0,l[e+5892>>2]=a,l[e+5896>>2]=a,(0|(r=r+1|0))!=64;);rd(48),l[1736]=16,l[1737]=0,rn(),l[1737]=l[1748],l[1748]=6944,l[1749]=194,l[1750]=0,rw(),l[1750]=l[1748],l[1748]=6996},F:function(r){r|=0;var e=0,a=0,i=0,n=0,f=0;re=a=re-96|0,l[a>>2]=r,re=i=re-16|0,l[i+12>>2]=a,re=r=re-144|0,r=ru(r,5440,144),e=f=a+16|0,l[r+44>>2]=e,l[r+20>>2]=e,n=(n=-2-e|0)>>>0>=2147483647?2147483647:n,l[r+48>>2]=n,e=e+n|0,l[r+28>>2]=e,l[r+16>>2]=e,rG(r,2201,a,0,0),n&&(s[(e=l[r+20>>2])-((0|e)==l[r+16>>2])|0]=0),re=r+144|0,re=i+16|0,r=f;r:{if(3&r)for(;;){if(!d[0|r])break r;if(!(3&(r=r+1|0)))break}for(;e=r,r=r+4|0,!((-1^(i=l[e>>2]))&i-16843009&-2139062144););for(;e=(r=e)+1|0,d[0|r];);}return r=(e=rb(r=(r-f|0)+1|0))?ru(e,f,r):0,re=a+96|0,0|r},G:function(){var r=0;if(r=l[1748])for(;eY[l[r>>2]](),r=l[r+4>>2];);},H:rb,I:eY,J:rE,K:function(r,e,a,i,n){return e|=0,a|=0,i|=0,n|=0,0|eY[0|(r|=0)](e,a,i,n)}}}(r)}(r)}Object.assign(u,n),n=null,u.wasmBinary&&(l=u.wasmBinary),u.noExitRuntime;var c=Error;l=[];var u,s,A,l,d,h=!1;function v(r,e,a){a=e+a;for(var i=\"\";!(e>=a);){var n=r[e++];if(!n)break;if(128&n){var f=63&r[e++];if(192==(224&n))i+=String.fromCharCode((31&n)<<6|f);else{var t=63&r[e++];65536>(n=224==(240&n)?(15&n)<<12|f<<6|t:(7&n)<<18|f<<12|t<<6|63&r[e++])?i+=String.fromCharCode(n):(n-=65536,i+=String.fromCharCode(55296|n>>10,56320|1023&n))}}else i+=String.fromCharCode(n)}return i}function p(){var r=d.buffer;u.HEAP8=N=new Int8Array(r),u.HEAP16=y=new Int16Array(r),u.HEAP32=G=new Int32Array(r),u.HEAPU8=w=new Uint8Array(r),u.HEAPU16=E=new Uint16Array(r),u.HEAPU32=R=new Uint32Array(r),u.HEAPF32=g=new Float32Array(r),u.HEAPF64=Z=new Float64Array(r)}var m=u.INITIAL_MEMORY||16777216;65536<=m||O(\"INITIAL_MEMORY should be larger than STACK_SIZE, was \"+m+\"! (STACK_SIZE=65536)\"),d=u.wasmMemory?u.wasmMemory:new function(){this.buffer=new ArrayBuffer(m/65536*65536)},p(),m=d.buffer.byteLength;var N,w,y,E,G,R,g,Z,W,V=[],B=[],T=[],I=0,X=null;function O(r){throw u.onAbort&&u.onAbort(r),b(r=\"Aborted(\"+r+\")\"),h=!0,A(r=new c(r+\". Build with -sASSERTIONS for more info.\")),r}function L(r){return r.startsWith(\"data:application/octet-stream;base64,\")}if(!L(a=\"yoga-asm.wasm\")){var _=a;a=u.locateFile?u.locateFile(_,f):f+_}function F(r){for(;0=e?\"_\"+r:r}function S(r,e){return r=C(r),function(){return e.apply(this,arguments)}}var P=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Y=[];function U(r){var e=Error,a=S(r,function(e){this.name=r,this.message=e,void 0!==(e=Error(e).stack)&&(this.stack=this.toString()+\"\\n\"+e.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});return a.prototype=Object.create(e.prototype),a.prototype.constructor=a,a.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message},a}var M=void 0;function H(r){throw new M(r)}var Q=r=>(r||H(\"Cannot use deleted val. handle = \"+r),P[r].value),z=r=>{switch(r){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var e=Y.length?Y.pop():P.length;return P[e]={fa:1,value:r},e}},j=void 0,D=void 0;function x(r){for(var e=\"\";w[r];)e+=D[w[r++]];return e}var J=[];function K(){for(;J.length;){var r=J.pop();r.L.Z=!1,r.delete()}}var q=void 0,$={};function rr(r,e){for(void 0===e&&H(\"ptr should not be undefined\");r.P;)e=r.aa(e),r=r.P;return e}var re={};function ra(r){var e=x(r=rq(r));return r0(r),e}function ri(r,e){var a=re[r];return void 0===a&&H(e+\" has unknown type \"+ra(r)),a}function rn(){}var rf=!1;function rt(r){--r.count.value,0===r.count.value&&(r.S?r.T.V(r.S):r.O.M.V(r.N))}var rb={},ro=void 0;function rk(r){throw new ro(r)}function rc(r,e){return e.O&&e.N||rk(\"makeClassHandle requires ptr and ptrType\"),!!e.T!=!!e.S&&rk(\"Both smartPtrType and smartPtr must be specified\"),e.count={value:1},ru(Object.create(r,{L:{value:e}}))}function ru(r){return\"undefined\"==typeof FinalizationRegistry?(ru=r=>r,r):(rf=new FinalizationRegistry(r=>{rt(r.L)}),ru=r=>{var e=r.L;return e.S&&rf.register(r,{L:e},r),r},rn=r=>{rf.unregister(r)},ru(r))}var rs={};function rA(r){for(;r.length;){var e=r.pop();r.pop()(e)}}function rl(r){return this.fromWireType(G[r>>2])}var rd={},rh={};function rv(r,e,a){function i(e){(e=a(e)).length!==r.length&&rk(\"Mismatched type converter count\");for(var i=0;i{re.hasOwnProperty(r)?n[e]=re[r]:(f.push(r),rd.hasOwnProperty(r)||(rd[r]=[]),rd[r].push(()=>{n[e]=re[r],++t===f.length&&i(n)}))}),0===f.length&&i(n)}function rp(r){switch(r){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw TypeError(\"Unknown type size: \"+r)}}function rm(r,e,a={}){if(!(\"argPackAdvance\"in e))throw TypeError(\"registerType registeredInstance requires argPackAdvance\");var i=e.name;if(r||H('type \"'+i+'\" must have a positive integer typeid pointer'),re.hasOwnProperty(r)){if(a.ta)return;H(\"Cannot register type '\"+i+\"' twice\")}re[r]=e,delete rh[r],rd.hasOwnProperty(r)&&(e=rd[r],delete rd[r],e.forEach(r=>r()))}function rN(r){H(r.L.O.M.name+\" instance already deleted\")}function rw(){}function ry(r,e,a){if(void 0===r[e].R){var i=r[e];r[e]=function(){return r[e].R.hasOwnProperty(arguments.length)||H(\"Function '\"+a+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+r[e].R+\")!\"),r[e].R[arguments.length].apply(this,arguments)},r[e].R=[],r[e].R[i.Y]=i}}function rE(r,e,a,i,n,f,t,b){this.name=r,this.constructor=e,this.W=a,this.V=i,this.P=n,this.oa=f,this.aa=t,this.ma=b,this.ia=[]}function rG(r,e,a){for(;e!==a;)e.aa||H(\"Expected null or instance of \"+a.name+\", got an instance of \"+e.name),r=e.aa(r),e=e.P;return r}function rR(r,e){return null===e?(this.da&&H(\"null is not a valid \"+this.name),0):(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),rG(e.L.N,e.L.O.M,this.M))}function rg(r,e){if(null===e){if(this.da&&H(\"null is not a valid \"+this.name),this.ca){var a=this.ea();return null!==r&&r.push(this.V,a),a}return 0}if(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),!this.ba&&e.L.O.ba&&H(\"Cannot convert argument of type \"+(e.L.T?e.L.T.name:e.L.O.name)+\" to parameter type \"+this.name),a=rG(e.L.N,e.L.O.M,this.M),this.ca)switch(void 0===e.L.S&&H(\"Passing raw pointer to smart pointer is illegal\"),this.Aa){case 0:e.L.T===this?a=e.L.S:H(\"Cannot convert argument of type \"+(e.L.T?e.L.T.name:e.L.O.name)+\" to parameter type \"+this.name);break;case 1:a=e.L.S;break;case 2:if(e.L.T===this)a=e.L.S;else{var i=e.clone();a=this.wa(a,z(function(){i.delete()})),null!==r&&r.push(this.V,a)}break;default:H(\"Unsupporting sharing policy\")}return a}function rZ(r,e){return null===e?(this.da&&H(\"null is not a valid \"+this.name),0):(e.L||H('Cannot pass \"'+rL(e)+'\" as a '+this.name),e.L.N||H(\"Cannot pass deleted object as a pointer of type \"+this.name),e.L.O.ba&&H(\"Cannot convert argument of type \"+e.L.O.name+\" to parameter type \"+this.name),rG(e.L.N,e.L.O.M,this.M))}function rW(r,e,a,i){this.name=r,this.M=e,this.da=a,this.ba=i,this.ca=!1,this.V=this.wa=this.ea=this.ja=this.Aa=this.va=void 0,void 0!==e.P?this.toWireType=rg:(this.toWireType=i?rR:rZ,this.U=null)}function rV(r,e){var a,i,n=(r=x(r)).includes(\"j\")?(a=r,i=[],function(){if(i.length=0,Object.assign(i,arguments),a.includes(\"j\")){var r=u[\"dynCall_\"+a];r=i&&i.length?r.apply(null,[e].concat(i)):r.call(null,e)}else r=W.get(e).apply(null,i);return r}):W.get(e);return\"function\"!=typeof n&&H(\"unknown function pointer with signature \"+r+\": \"+e),n}var rB=void 0;function rT(r,e){var a=[],i={};throw e.forEach(function r(e){i[e]||re[e]||(rh[e]?rh[e].forEach(r):(a.push(e),i[e]=!0))}),new rB(r+\": \"+a.map(ra).join([\", \"]))}function rI(r,e,a,i,n){var f=e.length;2>f&&H(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var t=null!==e[1]&&null!==a,b=!1;for(a=1;a>2]);return a}function rO(r){4=e/2);++i){var n=y[r+2*i>>1];if(0==n)break;a+=String.fromCharCode(n)}return a}function rF(r,e,a){if(void 0===a&&(a=2147483647),2>a)return 0;a-=2;var i=e;a=a<2*r.length?a/2:r.length;for(var n=0;n>1]=r.charCodeAt(n),e+=2;return y[e>>1]=0,e-i}function rC(r){return 2*r.length}function rS(r,e){for(var a=0,i=\"\";!(a>=e/4);){var n=G[r+4*a>>2];if(0==n)break;++a,65536<=n?(n-=65536,i+=String.fromCharCode(55296|n>>10,56320|1023&n)):i+=String.fromCharCode(n)}return i}function rP(r,e,a){if(void 0===a&&(a=2147483647),4>a)return 0;var i=e;a=i+a-4;for(var n=0;n=f&&(f=65536+((1023&f)<<10)|1023&r.charCodeAt(++n)),G[e>>2]=f,(e+=4)+4>a)break}return G[e>>2]=0,e-i}function rY(r){for(var e=0,a=0;a=i&&++a,e+=4}return e}var rU={};function rM(r){var e=rU[r];return void 0===e?x(r):e}var rH=[],rQ=[],rz=[null,[],[]];M=u.BindingError=U(\"BindingError\"),u.count_emval_handles=function(){for(var r=0,e=5;erD;++rD)rj[rD]=String.fromCharCode(rD);D=rj,u.getInheritedInstanceCount=function(){return Object.keys($).length},u.getLiveInheritedInstances=function(){var r,e=[];for(r in $)$.hasOwnProperty(r)&&e.push($[r]);return e},u.flushPendingDeletes=K,u.setDelayFunction=function(r){q=r,J.length&&q&&q(K)},ro=u.InternalError=U(\"InternalError\"),rw.prototype.isAliasOf=function(r){if(!(this instanceof rw&&r instanceof rw))return!1;var e=this.L.O.M,a=this.L.N,i=r.L.O.M;for(r=r.L.N;e.P;)a=e.aa(a),e=e.P;for(;i.P;)r=i.aa(r),i=i.P;return e===i&&a===r},rw.prototype.clone=function(){if(this.L.N||rN(this),this.L.$)return this.L.count.value+=1,this;var r=ru,e=Object,a=e.create,i=Object.getPrototypeOf(this),n=this.L;return r=r(a.call(e,i,{L:{value:{count:n.count,Z:n.Z,$:n.$,N:n.N,O:n.O,S:n.S,T:n.T}}})),r.L.count.value+=1,r.L.Z=!1,r},rw.prototype.delete=function(){this.L.N||rN(this),this.L.Z&&!this.L.$&&H(\"Object already scheduled for deletion\"),rn(this),rt(this.L),this.L.$||(this.L.S=void 0,this.L.N=void 0)},rw.prototype.isDeleted=function(){return!this.L.N},rw.prototype.deleteLater=function(){return this.L.N||rN(this),this.L.Z&&!this.L.$&&H(\"Object already scheduled for deletion\"),J.push(this),1===J.length&&q&&q(K),this.L.Z=!0,this},rW.prototype.pa=function(r){return this.ja&&(r=this.ja(r)),r},rW.prototype.ga=function(r){this.V&&this.V(r)},rW.prototype.argPackAdvance=8,rW.prototype.readValueFromPointer=rl,rW.prototype.deleteObject=function(r){null!==r&&r.delete()},rW.prototype.fromWireType=function(r){function e(){return this.ca?rc(this.M.W,{O:this.va,N:i,T:this,S:r}):rc(this.M.W,{O:this,N:r})}var a,i=this.pa(r);if(!i)return this.ga(r),null;var n=$[rr(this.M,i)];if(void 0!==n)return 0===n.L.count.value?(n.L.N=i,n.L.S=r,n.clone()):(n=n.clone(),this.ga(r),n);if(!(n=rb[n=this.M.oa(i)]))return e.call(this);n=this.ba?n.ka:n.pointerType;var f=function r(e,a,i){return a===i?e:void 0===i.P?null:null===(e=r(e,a,i.P))?null:i.ma(e)}(i,this.M,n.M);return null===f?e.call(this):this.ca?rc(n.M.W,{O:n,N:f,T:this,S:r}):rc(n.M.W,{O:n,N:f})},rB=u.UnboundTypeError=U(\"UnboundTypeError\");var rx=\"function\"==typeof atob?atob:function(r){var e=\"\",a=0;r=r.replace(/[^A-Za-z0-9\\+\\/=]/g,\"\");do{var i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),f=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++)),t=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(r.charAt(a++));i=i<<2|n>>4,n=(15&n)<<4|f>>2;var b=(3&f)<<6|t;e+=String.fromCharCode(i),64!==f&&(e+=String.fromCharCode(n)),64!==t&&(e+=String.fromCharCode(b))}while(ar.sa).concat(n.map(r=>r.ya)),r=>{var f={};return n.forEach((e,a)=>{var i=r[a],t=e.qa,b=e.ra,o=r[a+n.length],k=e.xa,c=e.za;f[e.na]={read:r=>i.fromWireType(t(b,r)),write:(r,e)=>{var a=[];k(c,r,o.toWireType(a,e)),rA(a)}}}),[{name:e.name,fromWireType:function(r){var e,a={};for(e in f)a[e]=f[e].read(r);return i(r),a},toWireType:function(r,e){for(var n in f)if(!(n in e))throw TypeError('Missing field: \"'+n+'\"');var t=a();for(n in f)f[n].write(t,e[n]);return null!==r&&r.push(i,t),t},argPackAdvance:8,readValueFromPointer:rl,U:i}]})},w:function(){},C:function(r,e,a,i,n){var f=rp(a);rm(r,{name:e=x(e),fromWireType:function(r){return!!r},toWireType:function(r,e){return e?i:n},argPackAdvance:8,readValueFromPointer:function(r){if(1===a)var i=N;else if(2===a)i=y;else if(4===a)i=G;else throw TypeError(\"Unknown boolean type size: \"+e);return this.fromWireType(i[r>>f])},U:null})},f:function(r,e,a,i,n,f,t,b,o,k,c,s,A){c=x(c),f=rV(n,f),b&&(b=rV(t,b)),k&&(k=rV(o,k)),A=rV(s,A);var l,d=C(c);l=function(){rT(\"Cannot construct \"+c+\" due to unbound types\",[i])},u.hasOwnProperty(d)?(H(\"Cannot register public name '\"+d+\"' twice\"),ry(u,d,d),u.hasOwnProperty(void 0)&&H(\"Cannot register multiple overloads of a function with the same number of arguments (undefined)!\"),u[d].R[void 0]=l):u[d]=l,rv([r,e,a],i?[i]:[],function(e){if(e=e[0],i)var a,n=e.M,t=n.W;else t=rw.prototype;e=S(d,function(){if(Object.getPrototypeOf(this)!==o)throw new M(\"Use 'new' to construct \"+c);if(void 0===s.X)throw new M(c+\" has no accessible constructor\");var r=s.X[arguments.length];if(void 0===r)throw new M(\"Tried to invoke ctor of \"+c+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+Object.keys(s.X).toString()+\") parameters instead!\");return r.apply(this,arguments)});var o=Object.create(t,{constructor:{value:e}});e.prototype=o;var s=new rE(c,e,o,A,n,f,b,k);n=new rW(c,s,!0,!1),t=new rW(c+\"*\",s,!1,!1);var l=new rW(c+\" const*\",s,!1,!0);return rb[r]={pointerType:t,ka:l},a=e,u.hasOwnProperty(d)||rk(\"Replacing nonexistant public symbol\"),u[d]=a,u[d].Y=void 0,[n,t,l]})},d:function(r,e,a,i,n,f,t){var b=rX(a,i);e=x(e),f=rV(n,f),rv([],[r],function(r){function i(){rT(\"Cannot call \"+n+\" due to unbound types\",b)}var n=(r=r[0]).name+\".\"+e;e.startsWith(\"@@\")&&(e=Symbol[e.substring(2)]);var o=r.M.constructor;return void 0===o[e]?(i.Y=a-1,o[e]=i):(ry(o,e,n),o[e].R[a-1]=i),rv([],b,function(r){return r=rI(n,[r[0],null].concat(r.slice(1)),null,f,t),void 0===o[e].R?(r.Y=a-1,o[e]=r):o[e].R[a-1]=r,[]}),[]})},p:function(r,e,a,i,n,f){0{rT(\"Cannot construct \"+r.name+\" due to unbound types\",t)},rv([],t,function(i){return i.splice(1,0,null),r.M.X[e-1]=rI(a,i,null,n,f),[]}),[]})},b:function(r,e,a,i,n,f,t,b){var o=rX(a,i);e=x(e),f=rV(n,f),rv([],[r],function(r){function i(){rT(\"Cannot call \"+n+\" due to unbound types\",o)}var n=(r=r[0]).name+\".\"+e;e.startsWith(\"@@\")&&(e=Symbol[e.substring(2)]),b&&r.M.ia.push(e);var k=r.M.W,c=k[e];return void 0===c||void 0===c.R&&c.className!==r.name&&c.Y===a-2?(i.Y=a-2,i.className=r.name,k[e]=i):(ry(k,e,n),k[e].R[a-2]=i),rv([],o,function(i){return i=rI(n,i,r,f,t),void 0===k[e].R?(i.Y=a-2,k[e]=i):k[e].R[a-2]=i,[]}),[]})},B:function(r,e){rm(r,{name:e=x(e),fromWireType:function(r){var e=Q(r);return rO(r),e},toWireType:function(r,e){return z(e)},argPackAdvance:8,readValueFromPointer:rl,U:null})},n:function(r,e,a){a=rp(a),rm(r,{name:e=x(e),fromWireType:function(r){return r},toWireType:function(r,e){return e},argPackAdvance:8,readValueFromPointer:function(r,e){switch(e){case 2:return function(r){return this.fromWireType(g[r>>2])};case 3:return function(r){return this.fromWireType(Z[r>>3])};default:throw TypeError(\"Unknown float type: \"+r)}}(e,a),U:null})},e:function(r,e,a,i,n){e=x(e),-1===n&&(n=4294967295),n=rp(a);var f=r=>r;if(0===i){var t=32-8*a;f=r=>r<>>t}a=e.includes(\"unsigned\")?function(r,e){return e>>>0}:function(r,e){return e},rm(r,{name:e,fromWireType:f,toWireType:a,argPackAdvance:8,readValueFromPointer:function(r,e,a){switch(e){case 0:return a?function(r){return N[r]}:function(r){return w[r]};case 1:return a?function(r){return y[r>>1]}:function(r){return E[r>>1]};case 2:return a?function(r){return G[r>>2]}:function(r){return R[r>>2]};default:throw TypeError(\"Unknown integer type: \"+r)}}(e,n,0!==i),U:null})},c:function(r,e,a){function i(r){r>>=2;var e=R;return new n(e.buffer,e[r+1],e[r])}var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][e];rm(r,{name:a=x(a),fromWireType:i,argPackAdvance:8,readValueFromPointer:i},{ta:!0})},o:function(r,e){var a=\"std::string\"===(e=x(e));rm(r,{name:e,fromWireType:function(r){var e=R[r>>2],i=r+4;if(a)for(var n=i,f=0;f<=e;++f){var t=i+f;if(f==e||0==w[t]){if(n=n?v(w,n,t-n):\"\",void 0===b)var b=n;else b+=\"\\x00\"+n;n=t+1}}else{for(f=0,b=Array(e);f=t?f++:2047>=t?f+=2:55296<=t&&57343>=t?(f+=4,++i):f+=3}i=f}else i=e.length;if(t=(f=r$(4+i+1))+4,R[f>>2]=i,a&&n){if(n=t,t=i+1,i=w,0=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++b)),127>=o){if(n>=t)break;i[n++]=o}else{if(2047>=o){if(n+1>=t)break;i[n++]=192|o>>6}else{if(65535>=o){if(n+2>=t)break;i[n++]=224|o>>12}else{if(n+3>=t)break;i[n++]=240|o>>18,i[n++]=128|o>>12&63}i[n++]=128|o>>6&63}i[n++]=128|63&o}}i[n]=0}}else if(n)for(n=0;nE,b=1;else 4===e&&(i=rS,n=rP,f=rY,t=()=>R,b=2);rm(r,{name:a,fromWireType:function(r){for(var a,n=R[r>>2],f=t(),o=r+4,k=0;k<=n;++k){var c=r+4+k*e;(k==n||0==f[c>>b])&&(o=i(o,c-o),void 0===a?a=o:a+=\"\\x00\"+o,o=c+e)}return r0(r),a},toWireType:function(r,i){\"string\"!=typeof i&&H(\"Cannot pass non-string to C++ string type \"+a);var t=f(i),o=r$(4+t+e);return R[o>>2]=t>>b,n(i,o+4,t+e),null!==r&&r.push(r0,o),o},argPackAdvance:8,readValueFromPointer:rl,U:function(r){r0(r)}})},l:function(r,e,a,i,n,f){rs[r]={name:x(e),ea:rV(a,i),V:rV(n,f),ha:[]}},i:function(r,e,a,i,n,f,t,b,o,k){rs[r].ha.push({na:x(e),sa:a,qa:rV(i,n),ra:f,ya:t,xa:rV(b,o),za:k})},D:function(r,e){rm(r,{ua:!0,name:e=x(e),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},t:function(r,e,a,i,n){r=rH[r],e=Q(e),a=rM(a);var f=[];return R[i>>2]=z(f),r(e,a,f,n)},u:function(r,e,a,i){r=rH[r],r(e=Q(e),a=rM(a),null,i)},h:rO,m:function(r,e){var a,i,n=function(r,e){for(var a=Array(r),i=0;i>2],\"parameter \"+i);return a}(r,e),f=n[0],t=rQ[e=f.name+\"_$\"+n.slice(1).map(function(r){return r.name}).join(\"_\")+\"$\"];if(void 0!==t)return t;var b=Array(r-1);return a=(e,a,i,t)=>{for(var o=0,k=0;k>>=0))return!1;for(var a=1;4>=a;a*=2){var i=e*(1+.2/a);i=Math.min(i,r+100663296);var n=Math,f=n.min;i=Math.max(r,i),i+=(65536-i%65536)%65536;r:{var t=d.buffer;try{d.grow(f.call(n,2147483648,i)-t.byteLength+65535>>>16),p();var b=1;break r}catch(r){}b=void 0}if(b)return!0}return!1},A:function(){return 52},v:function(){return 70},z:function(r,e,a,i){for(var n=0,f=0;f>2],k=R[e+4>>2];e+=8;for(var c=0;c>2]=n,0},a:d},rK=function(){function r(r){u.asm=r.exports,W=u.asm.I,B.unshift(u.asm.E),I--,u.monitorRunDependencies&&u.monitorRunDependencies(I),0==I&&X&&(r=X,X=null,r())}var e={a:rJ};if(I++,u.monitorRunDependencies&&u.monitorRunDependencies(I),u.instantiateWasm)try{return u.instantiateWasm(e,r)}catch(r){b(\"Module.instantiateWasm callback failed with error: \"+r),A(r)}return e=function(r){var e=a;try{try{if(e==a&&l)new Uint8Array(l);else{if(L(e)){try{var i=rx(e.slice(37)),n=new Uint8Array(i.length);for(e=0;e\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * @typedef {import('reading-time').Options['wordBound']} WordBoundFunction\n */\n\n/**\n * @param {number} number\n * @param {number[][]} arrayOfRanges\n */\nfunction codeIsInRanges(number, arrayOfRanges) {\n return arrayOfRanges.some(([lowerBound, upperBound]) =>\n (lowerBound <= number) && (number <= upperBound)\n )\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isCJK(c) {\n if ('string' !== typeof c) {\n return false\n }\n const charCode = c.charCodeAt(0)\n // Help wanted!\n // This should be good for most cases, but if you find it unsatisfactory\n // (e.g. some other language where each character should be standalone words),\n // contributions welcome!\n return codeIsInRanges(\n charCode,\n [\n // Hiragana (Katakana not included on purpose,\n // context: https://github.com/ngryman/reading-time/pull/35#issuecomment-853364526)\n // If you think Katakana should be included and have solid reasons, improvement is welcomed\n [0x3040, 0x309f],\n // CJK Unified ideographs\n [0x4e00, 0x9fff],\n // Hangul\n [0xac00, 0xd7a3],\n // CJK extensions\n [0x20000, 0x2ebe0]\n ]\n )\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isAnsiWordBound(c) {\n return ' \\n\\r\\t'.includes(c)\n}\n\n/**\n * @type {WordBoundFunction}\n */\nfunction isPunctuation(c) {\n if ('string' !== typeof c) {\n return false\n }\n const charCode = c.charCodeAt(0)\n return codeIsInRanges(\n charCode,\n [\n [0x21, 0x2f],\n [0x3a, 0x40],\n [0x5b, 0x60],\n [0x7b, 0x7e],\n // CJK Symbols and Punctuation\n [0x3000, 0x303f],\n // Full-width ASCII punctuation variants\n [0xff00, 0xffef]\n ]\n )\n}\n\n/**\n * @type {import('reading-time').default}\n */\nfunction readingTime(text, options = {}) {\n let words = 0, start = 0, end = text.length - 1\n\n // use provided value if available\n const wordsPerMinute = options.wordsPerMinute || 200\n\n // use provided function if available\n const isWordBound = options.wordBound || isAnsiWordBound\n\n // fetch bounds\n while (isWordBound(text[start])) start++\n while (isWordBound(text[end])) end--\n\n // Add a trailing word bound to make handling edges more convenient\n const normalizedText = `${text}\\n`\n\n // calculate the number of words\n for (let i = start; i <= end; i++) {\n // A CJK character is a always word;\n // A non-word bound followed by a word bound / CJK is the end of a word.\n if (\n isCJK(normalizedText[i]) ||\n (!isWordBound(normalizedText[i]) &&\n (isWordBound(normalizedText[i + 1]) || isCJK(normalizedText[i + 1]))\n )\n ) {\n words++\n }\n // In case of CJK followed by punctuations, those characters have to be eaten as well\n if (isCJK(normalizedText[i])) {\n while (\n i <= end &&\n (isPunctuation(normalizedText[i + 1]) || isWordBound(normalizedText[i + 1]))\n ) {\n i++\n }\n }\n }\n\n // reading time stats\n const minutes = words / wordsPerMinute\n // Math.round used to resolve floating point funkyness\n // http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html\n const time = Math.round(minutes * 60 * 1000)\n const displayed = Math.ceil(minutes.toFixed(2))\n\n return {\n text: displayed + ' min read',\n minutes: minutes,\n time: time,\n words: words\n }\n}\n\n/**\n * Export\n */\nmodule.exports = readingTime\n","/*!\n * reading-time\n * Copyright (c) Nicolas Gryman \n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n */\nconst readingTime = require('./reading-time')\nconst Transform = require('stream').Transform\nconst util = require('util')\n\n/**\n * @typedef {import('reading-time').Options} Options\n * @typedef {import('reading-time').Options['wordBound']} WordBoundFunction\n * @typedef {import('reading-time').readingTimeStream} ReadingTimeStream\n * @typedef {import('stream').TransformCallback} TransformCallback\n */\n\n/**\n * @param {Options} options\n * @returns {ReadingTimeStream}\n */\nfunction ReadingTimeStream(options) {\n // allow use without new\n if (!(this instanceof ReadingTimeStream)) {\n return new ReadingTimeStream(options)\n }\n\n Transform.call(this, { objectMode: true })\n\n this.options = options || {}\n this.stats = {\n minutes: 0,\n time: 0,\n words: 0\n }\n}\nutil.inherits(ReadingTimeStream, Transform)\n\n/**\n * @param {Buffer} chunk\n * @param {BufferEncoding} encoding\n * @param {TransformCallback} callback\n */\nReadingTimeStream.prototype._transform = function(chunk, encoding, callback) {\n const stats = readingTime(chunk.toString(encoding), this.options)\n\n this.stats.minutes += stats.minutes\n this.stats.time += stats.time\n this.stats.words += stats.words\n\n callback()\n}\n\n/**\n * @param {TransformCallback} callback\n */\nReadingTimeStream.prototype._flush = function(callback) {\n this.stats.text = Math.ceil(this.stats.minutes.toFixed(2)) + ' min read'\n\n this.push(this.stats)\n callback()\n}\n\n/**\n * Export\n */\nmodule.exports = ReadingTimeStream\n","module.exports.default = module.exports = require('./lib/reading-time')\nmodule.exports.readingTimeStream = require('./lib/stream')\n","// The following break classes are handled by the pair table\nexport const OP = 0; // Opening punctuation\nexport const CL = 1; // Closing punctuation\nexport const CP = 2; // Closing parenthesis\nexport const QU = 3; // Ambiguous quotation\nexport const GL = 4; // Glue\nexport const NS = 5; // Non-starters\nexport const EX = 6; // Exclamation/Interrogation\nexport const SY = 7; // Symbols allowing break after\nexport const IS = 8; // Infix separator\nexport const PR = 9; // Prefix\nexport const PO = 10; // Postfix\nexport const NU = 11; // Numeric\nexport const AL = 12; // Alphabetic\nexport const HL = 13; // Hebrew Letter\nexport const ID = 14; // Ideographic\nexport const IN = 15; // Inseparable characters\nexport const HY = 16; // Hyphen\nexport const BA = 17; // Break after\nexport const BB = 18; // Break before\nexport const B2 = 19; // Break on either side (but not pair)\nexport const ZW = 20; // Zero-width space\nexport const CM = 21; // Combining marks\nexport const WJ = 22; // Word joiner\nexport const H2 = 23; // Hangul LV\nexport const H3 = 24; // Hangul LVT\nexport const JL = 25; // Hangul L Jamo\nexport const JV = 26; // Hangul V Jamo\nexport const JT = 27; // Hangul T Jamo\nexport const RI = 28; // Regional Indicator\nexport const EB = 29; // Emoji Base\nexport const EM = 30; // Emoji Modifier\nexport const ZWJ = 31; // Zero Width Joiner\nexport const CB = 32; // Contingent break\n\n// The following break classes are not handled by the pair table\nexport const AI = 33; // Ambiguous (Alphabetic or Ideograph)\nexport const BK = 34; // Break (mandatory)\nexport const CJ = 35; // Conditional Japanese Starter\nexport const CR = 36; // Carriage return\nexport const LF = 37; // Line feed\nexport const NL = 38; // Next line\nexport const SA = 39; // South-East Asian\nexport const SG = 40; // Surrogates\nexport const SP = 41; // Space\nexport const XX = 42; // Unknown\n","export const DI_BRK = 0; // Direct break opportunity\nexport const IN_BRK = 1; // Indirect break opportunity\nexport const CI_BRK = 2; // Indirect break opportunity for combining marks\nexport const CP_BRK = 3; // Prohibited break for combining marks\nexport const PR_BRK = 4; // Prohibited break\n\n// Based on example pair table from https://www.unicode.org/reports/tr14/tr14-37.html#Table2\n// - ZWJ special processing for LB8a of Revision 41\n// - CB manually added as per Rule LB20\n// - CL, CP, NS, SY, IS, PR, PO, HY, BA, B2 and RI manually adjusted as per LB22 of Revision 45\nexport const pairTable = [\n //OP , CL , CP , QU , GL , NS , EX , SY , IS , PR , PO , NU , AL , HL , ID , IN , HY , BA , BB , B2 , ZW , CM , WJ , H2 , H3 , JL , JV , JT , RI , EB , EM , ZWJ , CB\n [PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, CP_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK], // OP\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CP\n [PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // QU\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // GL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NS\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EX\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // SY\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IS\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // PR\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // PO\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // NU\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // AL\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ID\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // IN\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // HY\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, DI_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // BA\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK], // BB\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // B2\n [DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK], // ZW\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // CM\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK], // WJ\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H2\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // H3\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JL\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JV\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // JT\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // RI\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, DI_BRK], // EB\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, IN_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // EM\n [IN_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, PR_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, IN_BRK, IN_BRK, IN_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK], // ZWJ\n [DI_BRK, PR_BRK, PR_BRK, IN_BRK, IN_BRK, DI_BRK, PR_BRK, PR_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, PR_BRK, CI_BRK, PR_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, DI_BRK, IN_BRK, DI_BRK] // CB\n];","import UnicodeTrie from 'unicode-trie';\nimport fs from 'fs';\nimport base64 from 'base64-js';\nimport { BK, CR, LF, NL, SG, WJ, SP, ZWJ, BA, HY, NS, AI, AL, CJ, HL, RI, SA, XX } from './classes';\nimport { DI_BRK, IN_BRK, CI_BRK, CP_BRK, PR_BRK, pairTable } from './pairs';\n\nconst data = base64.toByteArray(fs.readFileSync(__dirname + '/classes.trie', 'base64'));\nconst classTrie = new UnicodeTrie(data);\n\nconst mapClass = function (c) {\n switch (c) {\n case AI:\n return AL;\n\n case SA:\n case SG:\n case XX:\n return AL;\n\n case CJ:\n return NS;\n\n default:\n return c;\n }\n};\n\nconst mapFirst = function (c) {\n switch (c) {\n case LF:\n case NL:\n return BK;\n\n case SP:\n return WJ;\n\n default:\n return c;\n }\n};\n\nclass Break {\n constructor(position, required = false) {\n this.position = position;\n this.required = required;\n }\n}\n\nclass LineBreaker {\n constructor(string) {\n this.string = string;\n this.pos = 0;\n this.lastPos = 0;\n this.curClass = null;\n this.nextClass = null;\n this.LB8a = false;\n this.LB21a = false;\n this.LB30a = 0;\n }\n\n nextCodePoint() {\n const code = this.string.charCodeAt(this.pos++);\n const next = this.string.charCodeAt(this.pos);\n\n // If a surrogate pair\n if ((0xd800 <= code && code <= 0xdbff) && (0xdc00 <= next && next <= 0xdfff)) {\n this.pos++;\n return ((code - 0xd800) * 0x400) + (next - 0xdc00) + 0x10000;\n }\n\n return code;\n }\n\n nextCharClass() {\n return mapClass(classTrie.get(this.nextCodePoint()));\n }\n\n getSimpleBreak() {\n // handle classes not handled by the pair table\n switch (this.nextClass) {\n case SP:\n return false;\n\n case BK:\n case LF:\n case NL:\n this.curClass = BK;\n return false;\n\n case CR:\n this.curClass = CR;\n return false;\n }\n\n return null;\n }\n\n getPairTableBreak(lastClass) {\n // if not handled already, use the pair table\n let shouldBreak = false;\n switch (pairTable[this.curClass][this.nextClass]) {\n case DI_BRK: // Direct break\n shouldBreak = true;\n break;\n\n case IN_BRK: // possible indirect break\n shouldBreak = lastClass === SP;\n break;\n\n case CI_BRK:\n shouldBreak = lastClass === SP;\n if (!shouldBreak) {\n shouldBreak = false;\n return shouldBreak;\n }\n break;\n\n case CP_BRK: // prohibited for combining marks\n if (lastClass !== SP) {\n return shouldBreak;\n }\n break;\n\n case PR_BRK:\n break;\n }\n\n if (this.LB8a) {\n shouldBreak = false;\n }\n\n // Rule LB21a\n if (this.LB21a && (this.curClass === HY || this.curClass === BA)) {\n shouldBreak = false;\n this.LB21a = false;\n } else {\n this.LB21a = (this.curClass === HL);\n }\n\n // Rule LB30a\n if (this.curClass === RI) {\n this.LB30a++;\n if (this.LB30a == 2 && (this.nextClass === RI)) {\n shouldBreak = true;\n this.LB30a = 0;\n }\n } else {\n this.LB30a = 0;\n }\n\n this.curClass = this.nextClass;\n\n return shouldBreak;\n }\n\n nextBreak() {\n // get the first char if we're at the beginning of the string\n if (this.curClass == null) {\n let firstClass = this.nextCharClass();\n this.curClass = mapFirst(firstClass);\n this.nextClass = firstClass;\n this.LB8a = (firstClass === ZWJ);\n this.LB30a = 0;\n }\n\n while (this.pos < this.string.length) {\n this.lastPos = this.pos;\n const lastClass = this.nextClass;\n this.nextClass = this.nextCharClass();\n\n // explicit newline\n if ((this.curClass === BK) || ((this.curClass === CR) && (this.nextClass !== LF))) {\n this.curClass = mapFirst(mapClass(this.nextClass));\n return new Break(this.lastPos, true);\n }\n\n let shouldBreak = this.getSimpleBreak();\n\n if (shouldBreak === null) {\n shouldBreak = this.getPairTableBreak(lastClass);\n }\n\n // Rule LB8a\n this.LB8a = (this.nextClass === ZWJ);\n\n if (shouldBreak) {\n return new Break(this.lastPos);\n }\n }\n\n if (this.lastPos < this.string.length) {\n this.lastPos = this.string.length;\n return new Break(this.string.length);\n }\n\n return null;\n }\n}\n\nmodule.exports = LineBreaker;\n","/**\n * This module expands the CSS properties to get rid of shorthands, as well as\n * cleaning up some properties.\n */\n\nimport { getPropertyName, getStylesForProperty } from 'css-to-react-native'\nimport { parseElementStyle } from 'css-background-parser'\nimport { parse as parseBoxShadow } from 'css-box-shadow'\nimport cssColorParse from 'parse-css-color'\n\nimport CssDimension from '../vendor/parse-css-dimension/index.js'\nimport parseTransformOrigin, {\n ParsedTransformOrigin,\n} from '../transform-origin.js'\nimport { isString, lengthToNumber, v, splitEffects } from '../utils.js'\nimport { MaskProperty, parseMask } from '../parser/mask.js'\nimport { FontWeight, FontStyle } from '../font.js'\n\n// https://react-cn.github.io/react/tips/style-props-value-px.html\nconst optOutPx = new Set([\n 'flex',\n 'flexGrow',\n 'flexShrink',\n 'flexBasis',\n 'fontWeight',\n 'lineHeight',\n 'opacity',\n 'scale',\n 'scaleX',\n 'scaleY',\n])\nconst keepNumber = new Set(['lineHeight'])\n\nfunction handleFallbackColor(\n prop: string,\n parsed: Record,\n rawInput: string,\n currentColor: string\n) {\n if (\n prop === 'textDecoration' &&\n !rawInput.includes(parsed.textDecorationColor)\n ) {\n parsed.textDecorationColor = currentColor\n }\n return parsed\n}\n\nfunction purify(name: string, value?: string | number) {\n const num = Number(value)\n if (isNaN(num)) return value\n if (!optOutPx.has(name)) return num + 'px'\n if (keepNumber.has(name)) return num\n return String(value)\n}\n\nfunction handleSpecialCase(\n name: string,\n value: string | number,\n currentColor: string\n) {\n if (name === 'lineHeight') {\n return { lineHeight: purify(name, value) }\n }\n\n if (name === 'fontFamily') {\n return {\n fontFamily: (value as string).split(',').map((_v) => {\n return _v\n .trim()\n .replace(/(^['\"])|(['\"]$)/g, '')\n .toLocaleLowerCase()\n }),\n }\n }\n\n if (name === 'borderRadius') {\n if (typeof value !== 'string' || !value.includes('/')) {\n // Regular border radius\n return\n }\n // Support the `border-radius: 10px / 20px` syntax.\n const [horizontal, vertical] = value.split('/')\n const vh = getStylesForProperty(name, horizontal, true)\n const vv = getStylesForProperty(name, vertical, true)\n for (const k in vh) {\n vv[k] = purify(name, vh[k]) + ' ' + purify(name, vv[k])\n }\n return vv\n }\n\n if (/^border(Top|Right|Bottom|Left)?$/.test(name)) {\n const resolved = getStylesForProperty('border', value, true)\n\n // Border width should be default to 3px (medium) instead of 1px:\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#border-width\n // Although on Chrome it will be displayed as 1.5px but let's stick to the\n // spec.\n if (resolved.borderWidth === 1 && !String(value).includes('1px')) {\n resolved.borderWidth = 3\n }\n\n // A trick to fix `border: 1px solid` to not use `black` but the inherited\n // `color` value. This is necessary because css-to-react-native automatically\n // fallbacks to default color values.\n if (resolved.borderColor === 'black' && !String(value).includes('black')) {\n resolved.borderColor = currentColor\n }\n\n const purified = {\n Width: purify(name + 'Width', resolved.borderWidth),\n Style: v(\n resolved.borderStyle,\n {\n solid: 'solid',\n dashed: 'dashed',\n },\n 'solid',\n name + 'Style'\n ),\n Color: resolved.borderColor,\n }\n\n const full = {}\n for (const k of name === 'border'\n ? ['Top', 'Right', 'Bottom', 'Left']\n : [name.slice(6)]) {\n for (const p in purified) {\n full['border' + k + p] = purified[p]\n }\n }\n return full\n }\n\n if (name === 'boxShadow') {\n if (!value) {\n throw new Error('Invalid `boxShadow` value: \"' + value + '\".')\n }\n return {\n [name]: typeof value === 'string' ? parseBoxShadow(value) : value,\n }\n }\n\n if (name === 'transform') {\n if (typeof value !== 'string') throw new Error('Invalid `transform` value.')\n // To support percentages in transform (which is not supported in RN), we\n // replace them with random symbols and then replace them back after parsing.\n const symbols = {}\n const replaced = value.replace(/(-?[\\d.]+%)/g, (_, _v) => {\n const symbol = ~~(Math.random() * 1e9)\n symbols[symbol] = _v\n return symbol + 'px'\n })\n const parsed = getStylesForProperty('transform', replaced, true)\n for (const t of parsed.transform) {\n for (const k in t) {\n if (symbols[t[k]]) {\n t[k] = symbols[t[k]]\n }\n }\n }\n return parsed\n }\n\n if (name === 'background') {\n value = value.toString().trim()\n if (\n /^(linear-gradient|radial-gradient|url|repeating-linear-gradient)\\(/.test(\n value\n )\n ) {\n return getStylesForProperty('backgroundImage', value, true)\n }\n return getStylesForProperty('background', value, true)\n }\n\n if (name === 'textShadow') {\n // Handle multiple text shadows if provided.\n value = value.toString().trim()\n const result = {}\n\n const shadows = splitEffects(value)\n\n for (const shadow of shadows) {\n const styles = getStylesForProperty('textShadow', shadow, true)\n for (const k in styles) {\n if (!result[k]) {\n result[k] = [styles[k]]\n } else {\n result[k].push(styles[k])\n }\n }\n }\n\n return result\n }\n\n if (name === 'WebkitTextStroke') {\n value = value.toString().trim()\n const values = value.split(' ')\n if (values.length !== 2) {\n throw new Error('Invalid `WebkitTextStroke` value.')\n }\n\n return {\n WebkitTextStrokeWidth: purify(name, values[0]),\n WebkitTextStrokeColor: purify(name, values[1]),\n }\n }\n\n return\n}\n\nfunction getErrorHint(name: string) {\n if (name === 'transform') {\n return ' Only absolute lengths such as `10px` are supported.'\n }\n return ''\n}\n\nconst RGB_SLASH = /rgb\\((\\d+)\\s+(\\d+)\\s+(\\d+)\\s*\\/\\s*([\\.\\d]+)\\)/\nfunction normalizeColor(value: string | object) {\n if (typeof value === 'string') {\n if (RGB_SLASH.test(value.trim())) {\n // rgb(255 122 127 / .2) -> rgba(255, 122, 127, .2)\n return value.trim().replace(RGB_SLASH, (_, r, g, b, a) => {\n return `rgba(${r}, ${g}, ${b}, ${a})`\n })\n }\n }\n\n // Recursively normalize colors in arrays and objects.\n if (typeof value === 'object' && value !== null) {\n for (const k in value) {\n value[k] = normalizeColor(value[k])\n }\n return value\n }\n\n return value\n}\n\ntype MainStyle = {\n color: string\n fontSize: number\n transformOrigin: ParsedTransformOrigin\n maskImage: MaskProperty[]\n opacity: number\n textTransform: string\n whiteSpace: string\n wordBreak: string\n textAlign: string\n lineHeight: number | string\n letterSpacing: number\n\n fontFamily: string | string[]\n fontWeight: FontWeight\n fontStyle: FontStyle\n\n borderTopWidth: number\n borderLeftWidth: number\n borderRightWidth: number\n borderBottomWidth: number\n\n paddingTop: number\n paddingLeft: number\n paddingRight: number\n paddingBottom: number\n\n flexGrow: number\n flexShrink: number\n\n gap: number\n rowGap: number\n columnGap: number\n\n textShadowOffset: {\n width: number\n height: number\n }[]\n textShadowColor: string[]\n textShadowRadius: number[]\n WebkitTextStrokeWidth: number\n WebkitTextStrokeColor: string\n}\n\ntype OtherStyle = Exclude, keyof MainStyle>\n\nexport type SerializedStyle = Partial\n\nexport default function expand(\n style: Record | undefined,\n inheritedStyle: SerializedStyle\n): SerializedStyle {\n const serializedStyle: SerializedStyle = {}\n\n if (style) {\n const currentColor = getCurrentColor(\n style.color as string,\n inheritedStyle.color\n )\n\n serializedStyle.color = currentColor\n\n for (const prop in style) {\n // Internal properties.\n if (prop.startsWith('_')) {\n serializedStyle[prop] = style[prop]\n continue\n }\n\n if (prop === 'color') {\n continue\n }\n\n const name = getPropertyName(prop)\n const value = preprocess(style[prop], currentColor)\n\n try {\n const resolvedStyle =\n handleSpecialCase(name, value, currentColor) ||\n handleFallbackColor(\n name,\n getStylesForProperty(name, purify(name, value), true),\n value as string,\n currentColor\n )\n\n Object.assign(serializedStyle, resolvedStyle)\n } catch (err) {\n throw new Error(\n err.message +\n // Attach the extra information of the rule itself if it's not included in\n // the error message.\n (err.message.includes(value)\n ? '\\n ' + getErrorHint(name)\n : `\\n in CSS rule \\`${name}: ${value}\\`.${getErrorHint(name)}`)\n )\n }\n }\n }\n\n // Parse background images.\n if (serializedStyle.backgroundImage) {\n const { backgrounds } = parseElementStyle(serializedStyle)\n serializedStyle.backgroundImage = backgrounds\n }\n\n if (serializedStyle.maskImage || serializedStyle['WebkitMaskImage']) {\n serializedStyle.maskImage = parseMask(serializedStyle)\n }\n\n // Calculate the base font size.\n const baseFontSize = calcBaseFontSize(\n serializedStyle.fontSize,\n inheritedStyle.fontSize\n )\n if (typeof serializedStyle.fontSize !== 'undefined') {\n serializedStyle.fontSize = baseFontSize\n }\n\n if (serializedStyle.transformOrigin) {\n serializedStyle.transformOrigin = parseTransformOrigin(\n serializedStyle.transformOrigin as any,\n baseFontSize\n )\n }\n\n for (const prop in serializedStyle) {\n let value = serializedStyle[prop]\n\n // Line height needs to be relative.\n if (prop === 'lineHeight') {\n if (typeof value === 'string' && value !== 'normal') {\n value = serializedStyle[prop] =\n lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle,\n true\n ) / baseFontSize\n }\n } else {\n // Convert em and rem values to px (number).\n if (typeof value === 'string') {\n const len = lengthToNumber(\n value,\n baseFontSize,\n baseFontSize,\n inheritedStyle\n )\n if (typeof len !== 'undefined') serializedStyle[prop] = len\n value = serializedStyle[prop]\n }\n\n if (typeof value === 'string' || typeof value === 'object') {\n const color = normalizeColor(value)\n if (color) {\n serializedStyle[prop] = color as any\n }\n value = serializedStyle[prop]\n }\n }\n\n // Inherit the opacity.\n if (prop === 'opacity' && typeof value === 'number') {\n serializedStyle.opacity = value * inheritedStyle.opacity\n }\n\n if (prop === 'transform') {\n const transforms = value as any as { [type: string]: number | string }[]\n\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n const _v = transform[type]\n\n // Convert em, rem, vw, vh values to px (number), but keep % values.\n const len =\n typeof _v === 'string'\n ? lengthToNumber(_v, baseFontSize, baseFontSize, inheritedStyle) ??\n _v\n : _v\n transform[type] = len\n }\n }\n\n if (prop === 'textShadowRadius') {\n const textShadowRadius = value as unknown as Array\n\n serializedStyle.textShadowRadius = textShadowRadius.map((_v) =>\n lengthToNumber(_v, baseFontSize, 0, inheritedStyle, false)\n )\n }\n\n if (prop === 'textShadowOffset') {\n const textShadowOffset = value as unknown as Array<{\n width: number | string\n height: number | string\n }>\n\n serializedStyle.textShadowOffset = textShadowOffset.map(\n ({ height, width }) => ({\n height: lengthToNumber(\n height,\n baseFontSize,\n 0,\n inheritedStyle,\n false\n ),\n width: lengthToNumber(width, baseFontSize, 0, inheritedStyle, false),\n })\n )\n }\n }\n\n return serializedStyle\n}\n\nfunction calcBaseFontSize(\n size: number | string,\n inheritedSize: number\n): number {\n if (typeof size === 'number') return size\n\n try {\n const parsed = new CssDimension(size)\n switch (parsed.unit) {\n case 'em':\n return parsed.value * inheritedSize\n case 'rem':\n return parsed.value * 16\n }\n } catch (err) {\n return inheritedSize\n }\n}\n\n/**\n * @see https://github.com/RazrFalcon/resvg/issues/579\n */\nfunction refineHSL(color: string) {\n if (color.startsWith('hsl')) {\n const t = cssColorParse(color)\n const [h, s, l] = t.values\n\n return `hsl(${[h, `${s}%`, `${l}%`]\n .concat(t.alpha === 1 ? [] : [t.alpha])\n .join(',')})`\n }\n\n return color\n}\n\nfunction getCurrentColor(\n color: string | undefined,\n inheritedColor: string\n): string {\n if (color && color.toLowerCase() !== 'currentcolor') {\n return refineHSL(color)\n }\n\n return refineHSL(inheritedColor)\n}\n\nfunction convertCurrentColorToActualValue(\n value: string,\n currentColor: string\n): string {\n return value.replace(/currentcolor/gi, currentColor)\n}\n\nfunction preprocess(\n value: string | number,\n currentColor: string\n): string | number {\n if (isString(value)) {\n value = convertCurrentColorToActualValue(value, currentColor)\n }\n\n return value\n}\n","import colorName from 'color-name';\nimport hex2Rgb from 'hex-rgb';\n\nconst pattern = /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/;\nvar hexRe = new RegExp(pattern, 'i');\n\nconst float = '-?\\\\d*(?:\\\\.\\\\d+)';\n\nconst number = `(${float}?)`;\nconst percentage = `(${float}?%)`;\nconst numberOrPercentage = `(${float}?%?)`;\n\nconst pattern$1 = `^\n hsla?\\\\(\n \\\\s*(-?\\\\d*(?:\\\\.\\\\d+)?(?:deg|rad|turn)?)\\\\s*,\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar hsl3Re = new RegExp(pattern$1);\n\nconst pattern$2 = `^\n hsla?\\\\(\n \\\\s*(-?\\\\d*(?:\\\\.\\\\d+)?(?:deg|rad|turn)?)\\\\s*\n \\\\s+${percentage}\n \\\\s+${percentage}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar hsl4Re = new RegExp(pattern$2);\n\nconst pattern$3 = `^\n rgba?\\\\(\n \\\\s*${number}\\\\s*,\n \\\\s*${number}\\\\s*,\n \\\\s*${number}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar rgb3NumberRe = new RegExp(pattern$3);\n\nconst pattern$4 = `^\n rgba?\\\\(\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*,\n \\\\s*${percentage}\\\\s*\n (?:,\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n $\n`.replace(/\\n|\\s/g, '');\n\nvar rgb3PercentageRe = new RegExp(pattern$4);\n\nconst pattern$5 = `^\n rgba?\\\\(\n \\\\s*${number}\n \\\\s+${number}\n \\\\s+${number}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n$\n`.replace(/\\n|\\s/g, '');\n\nvar rgb4NumberRe = new RegExp(pattern$5);\n\nconst pattern$6 = `^\n rgba?\\\\(\n \\\\s*${percentage}\n \\\\s+${percentage}\n \\\\s+${percentage}\n \\\\s*(?:\\\\s*\\\\/\\\\s*${numberOrPercentage}\\\\s*)?\n \\\\)\n$\n`.replace(/\\n|\\s/g, '');\n\nvar rgb4PercentageRe = new RegExp(pattern$6);\n\nconst pattern$7 = /^transparent$/;\nvar transparentRe = new RegExp(pattern$7, 'i');\n\nconst clamp = (num, min, max) => Math.min(Math.max(min, num), max);\n\n/* 500 => 255, -10 => 0, 128 => 128 */\nconst parseRGB = (num) => {\n let n = num;\n if (typeof n !== 'number') n = n.endsWith('%') ? (parseFloat(n) * 255) / 100 : parseFloat(n);\n return clamp(Math.round(n), 0, 255);\n};\n\n/* 200 => 100, -100 => 0, 50 => 50 */\nconst parsePercentage = (percentage) => clamp(parseFloat(percentage), 0, 100);\n\n/* '50%' => 5.0, 200 => 1, -10 => 0 */\nfunction parseAlpha(alpha) {\n let a = alpha;\n if (typeof a !== 'number') a = a.endsWith('%') ? parseFloat(a) / 100 : parseFloat(a);\n return clamp(a, 0, 1);\n}\n\nfunction getHEX(hex) {\n const [r, g, b, a] = hex2Rgb(hex, { format: 'array' });\n return getRGB([null, ...[r, g, b, a]]);\n}\n\nfunction getHSL([, h, s, l, a = 1]) {\n let hh = h;\n if (hh.endsWith('turn')) {\n hh = (parseFloat(hh) * 360) / 1;\n } else if (hh.endsWith('rad')) {\n hh = Math.round((parseFloat(hh) * 180) / Math.PI);\n } else {\n hh = parseFloat(hh);\n }\n return {\n type: 'hsl',\n values: [hh, parsePercentage(s), parsePercentage(l)],\n alpha: parseAlpha(a === null ? 1 : a)\n };\n}\n\nfunction getRGB([, r, g, b, a = 1]) {\n return {\n type: 'rgb',\n values: [r, g, b].map(parseRGB),\n alpha: parseAlpha(a === null ? 1 : a)\n };\n}\n\n/**\n * parse-css-color\n * @version v0.2.1\n * @link http://github.com/noeldelgado/parse-css-color/\n * @license MIT\n */\n\nconst parseCSSColor = (str) => {\n if (typeof str !== 'string') return null;\n\n const hex = hexRe.exec(str);\n if (hex) return getHEX(hex[0]);\n\n const hsl = hsl4Re.exec(str) || hsl3Re.exec(str);\n if (hsl) return getHSL(hsl);\n\n const rgb =\n rgb4NumberRe.exec(str) ||\n rgb4PercentageRe.exec(str) ||\n rgb3NumberRe.exec(str) ||\n rgb3PercentageRe.exec(str);\n if (rgb) return getRGB(rgb);\n\n if (transparentRe.exec(str)) return getRGB([null, 0, 0, 0, 0]);\n\n const cn = colorName[str.toLowerCase()];\n if (cn) return getRGB([null, cn[0], cn[1], cn[2], 1]);\n\n return null;\n};\n\nexport default parseCSSColor;\n","import valueParser from 'postcss-value-parser'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\n\n/**\n * If key for each direction is missing, assume default (50%)\n */\nexport interface ParsedTransformOrigin {\n /** Relative horizontal transform origin in % */\n xRelative?: number\n /** Relative vertical transform origin in % */\n yRelative?: number\n /** Absolute horizontal transform origin in pixels */\n xAbsolute?: number\n /** Absolute horizontal transform origin in pixels */\n yAbsolute?: number\n}\n\ninterface ParsedUnit {\n /** Relative unit in % */\n relative?: number\n /** Absolute unit in pixels */\n absolute?: number\n}\n\nfunction parseUnit(word: string, baseFontSize: number): ParsedUnit {\n try {\n const parsed = new CssDimension(word)\n switch (parsed.unit) {\n case 'px':\n return { absolute: parsed.value }\n case 'em':\n return { absolute: parsed.value * baseFontSize }\n case 'rem':\n return { absolute: parsed.value * 16 }\n case '%':\n return { relative: parsed.value }\n default:\n return {}\n }\n } catch (e) {\n return {}\n }\n}\n\nfunction handleWord(\n word: string,\n baseFontSize: number,\n unitIsHorizontal: boolean\n) {\n switch (word) {\n case 'top':\n return { yRelative: 0 }\n case 'left':\n return { xRelative: 0 }\n case 'right':\n return { xRelative: 100 }\n case 'bottom':\n return { yRelative: 100 }\n case 'center':\n return {}\n default: {\n const parsedUnit = parseUnit(word, baseFontSize)\n return parsedUnit.absolute\n ? {\n [unitIsHorizontal ? 'xAbsolute' : 'yAbsolute']: parsedUnit.absolute,\n }\n : parsedUnit.relative\n ? {\n [unitIsHorizontal ? 'xRelative' : 'yRelative']: parsedUnit.relative,\n }\n : {}\n }\n }\n}\n\nexport default function parseTransformOrigin(\n value: string | number,\n baseFontSize: number\n): ParsedTransformOrigin {\n // If it's a single value and a number, then it's horizontal\n if (typeof value === 'number') {\n return { xAbsolute: value }\n }\n let words: string[]\n try {\n words = valueParser(value)\n .nodes.filter((node) => node.type === 'word')\n .map((node) => node.value)\n } catch (e) {\n return {}\n }\n\n if (words.length === 1) {\n // If it's a single value and a number, then it's horizontal, so\n // pass `true` to `unitIsHorizontal`\n return handleWord(words[0], baseFontSize, true)\n } else if (words.length === 2) {\n // Make words to be [horizontal, vertical]\n if (\n words[0] === 'top' ||\n words[0] === 'bottom' ||\n words[1] === 'left' ||\n words[1] === 'right'\n ) {\n words.reverse()\n }\n\n return {\n ...handleWord(words[0], baseFontSize, true),\n ...handleWord(words[1], baseFontSize, false),\n }\n } else {\n return {}\n }\n}\n","import { getPropertyName } from 'css-to-react-native'\nimport { splitEffects } from '../utils.js'\n\nfunction getMaskProperty(style: Record, name: string) {\n const key = getPropertyName(`mask-${name}`)\n return (style[key] || style[`WebkitM${key.substring(1)}`]) as string\n}\n\nexport interface MaskProperty {\n image: string\n position: string\n size: string\n repeat: string\n origin: string\n clip: string\n}\n\nexport function parseMask(\n style: Record\n): MaskProperty[] {\n const maskImage = (style.maskImage || style.WebkitMaskImage) as string\n\n const common = {\n position: getMaskProperty(style, 'position') || '0% 0%',\n size: getMaskProperty(style, 'size') || '100% 100%',\n repeat: getMaskProperty(style, 'repeat') || 'repeat',\n origin: getMaskProperty(style, 'origin') || 'border-box',\n clip: getMaskProperty(style, 'origin') || 'border-box',\n }\n\n let maskImages = splitEffects(maskImage).filter((v) => v && v !== 'none')\n\n return maskImages.reverse().map((m) => ({\n image: m,\n ...common,\n }))\n}\n","import escapeHTML from 'escape-html'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\nimport transform from './transform.js'\nimport { buildXMLString } from '../utils.js'\n\nexport function container(\n {\n left,\n top,\n width,\n height,\n isInheritingTransform,\n }: {\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n },\n style: Record\n) {\n let matrix = ''\n let opacity = 1\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n return { matrix, opacity }\n}\n\nexport default function buildText(\n {\n id,\n content,\n filter,\n left,\n top,\n width,\n height,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape,\n decorationShape,\n }: {\n content: string\n filter: string\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string\n opacity: number\n image: string | null\n clipPathId?: string\n debug?: boolean\n shape?: boolean\n decorationShape?: string\n },\n style: Record\n) {\n let extra = ''\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top - height,\n width,\n height,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n // This grapheme should be rendered as an image.\n if (image) {\n const shapeProps = {\n href: image,\n x: left,\n y: top,\n width,\n height,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n }\n return [\n (filter ? `${filter}` : '') +\n buildXMLString('image', {\n ...shapeProps,\n opacity: opacity !== 1 ? opacity : undefined,\n }) +\n (decorationShape || '') +\n (filter ? '' : '') +\n extra,\n // SVG doesn't support `` as the shape.\n '',\n ]\n }\n\n // Do not embed the font, use with the raw content instead.\n const shapeProps = {\n x: left,\n y: top,\n width,\n height,\n 'font-weight': style.fontWeight,\n 'font-style': style.fontStyle,\n 'font-size': style.fontSize,\n 'font-family': style.fontFamily,\n 'letter-spacing': style.letterSpacing || undefined,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n style: style.filter ? `filter:${style.filter}` : undefined,\n 'stroke-width': style.WebkitTextStrokeWidth\n ? `${style.WebkitTextStrokeWidth}px`\n : undefined,\n stroke: style.WebkitTextStrokeWidth\n ? style.WebkitTextStrokeColor\n : undefined,\n 'stroke-linejoin': style.WebkitTextStrokeWidth ? 'round' : undefined,\n 'paint-order': style.WebkitTextStrokeWidth ? 'stroke' : undefined,\n }\n return [\n (filter ? `${filter}` : '') +\n buildXMLString(\n 'text',\n {\n ...shapeProps,\n fill: style.color,\n opacity: opacity !== 1 ? opacity : undefined,\n },\n escapeHTML(content)\n ) +\n (decorationShape || '') +\n (filter ? '' : '') +\n extra,\n shape ? buildXMLString('text', shapeProps, escapeHTML(content)) : '',\n ]\n}\n","import { ColorStop } from \"./type.js\"\n\nexport function split(\n input: string,\n separator: string | RegExp = ','\n): string[] {\n const result = []\n let l = 0\n let parenCount = 0\n separator = new RegExp(separator)\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '(') {\n parenCount++\n } else if (input[i] === ')') {\n parenCount--\n }\n\n if (parenCount === 0 && separator.test(input[i])) {\n result.push(input.slice(l, i).trim())\n l = i + 1\n }\n }\n\n result.push(input.slice(l).trim())\n\n return result\n}\n\nexport function resolveStops(v: string[]): ColorStop[] {\n const stops: ColorStop[] = []\n\n for (let i = 0, n = v.length; i < n;) {\n const [color, offset] = split(v[i], /\\s+/)\n\n if (isHint(v[i + 1])) {\n stops.push({\n color,\n offset: resolveLength(offset),\n hint: resolveLength(v[i + 1])\n })\n i += 2\n } else {\n stops.push({\n color,\n offset: resolveLength(offset)\n })\n i++\n }\n }\n\n return stops\n}\n\nconst REGEX = /^(-?\\d+\\.?\\d*)(%|vw|vh|px|em|rem|deg|rad|grad|turn)$/\n\nfunction isHint(v: string) {\n return REGEX.test(v)\n}\n\nexport function resolveLength(v?: string) {\n if (!v) return undefined\n\n const [, value, unit] = v.trim().match(REGEX) || []\n\n return { value, unit }\n}","import { split, resolveStops,resolveLength } from \"./utils.js\"\nimport { ColorStop } from './type.js'\n\ntype LinearOrientation = {\n type: 'directional'\n value: string\n} | {\n type: 'angular'\n value: { unit: string; value: string }\n}\n\nexport interface LinearResult {\n orientation: LinearOrientation\n repeating: boolean\n stops: ColorStop[]\n}\n\nexport function parseLinearGradient(input: string): LinearResult {\n if (!/^(repeating-)?linear-gradient/.test(input)) throw new SyntaxError(`could not find syntax for this item: ${input}`)\n\n let [, repeating, props] = input.match(/(repeating-)?linear-gradient\\((.+)\\)/)\n const result: LinearResult = {\n orientation: { type: 'directional', value: 'bottom' },\n repeating: Boolean(repeating),\n stops: []\n }\n\n const properties: string[] = split(props)\n const orientation = resolveLinearOrientation(properties[0])\n if (orientation) {\n result.orientation = orientation\n properties.shift()\n }\n\n return { ...result, stops: resolveStops(properties) }\n}\n\nfunction resolveLinearOrientation(angle: string): LinearOrientation {\n if (angle.startsWith('to ')) {\n return {\n type: 'directional',\n value: angle.replace('to ', '')\n }\n }\n\n if (['turn', 'deg', 'grad', 'rad'].some(unit => angle.endsWith(unit))) {\n return {\n type: 'angular',\n value: resolveLength(angle)\n }\n }\n\n return null\n}","import { resolveStops, split, resolveLength } from './utils.js'\nimport { ColorStop } from './type.js'\n\nexport type RgExtentKeyword = 'closest-corner' | 'closest-side' | 'farthest-corner' | 'farthest-side'\n\nexport type RadialPropertyValue = {\n type: 'keyword'\n value: string\n} | {\n type: 'length'\n value: { unit: string; value: string }\n}\n\nexport interface RadialResult {\n shape: 'circle' | 'ellipse'\n repeating: boolean\n size: RadialPropertyValue[]\n position: {\n x: RadialPropertyValue\n y: RadialPropertyValue\n }\n stops: ColorStop[]\n}\n\nconst rgExtentKeyword = new Set([\n 'closest-corner',\n 'closest-side',\n 'farthest-corner',\n 'farthest-side'\n])\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\n\nconst positionKeyword = new Set([\n 'center',\n 'left',\n 'top',\n 'right',\n 'bottom'\n])\n\n//eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isRgExtentKeyword(v: any): v is RgExtentKeyword {\n return rgExtentKeyword.has(v)\n}\n\n//eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isPositionKeyWord(v: any): v is PositionKeyWord {\n return positionKeyword.has(v)\n}\n\nfunction extendPosition(v: string[]) {\n const res = Array(2).fill('')\n for (let i = 0; i < 2; i++) {\n if (!v[i]) res[i] = 'center'\n else res[i] = v[i]\n }\n\n return res\n}\n\nexport function parseRadialGradient(input: string): RadialResult {\n if (!/(repeating-)?radial-gradient/.test(input)) throw new SyntaxError(`could not find syntax for this item: ${input}`)\n \n const [, repeating, props] = input.match(/(repeating-)?radial-gradient\\((.+)\\)/)\n const result: RadialResult = {\n shape: 'ellipse',\n repeating: Boolean(repeating),\n size: [{\n type: 'keyword',\n value: 'farthest-corner'\n }],\n position: {\n x: { type: 'keyword', value: 'center' },\n y: { type: 'keyword', value: 'center' }\n },\n stops: []\n }\n\n const properties = split(props)\n // handle like radial-gradient(rgba(0,0,0,0), #ee7621)\n if (isColor(properties[0])) {\n return { ...result, stops: resolveStops(properties) }\n }\n\n const prefix = properties[0].split('at').map(v => v.trim())\n\n const shape = ((prefix[0] || '').match(/(circle|ellipse)/) || [])[1]\n const size: string[] = (prefix[0] || '').match(/(-?\\d+\\.?\\d*(vw|vh|px|em|rem|%|rad|grad|turn|deg)?|closest-corner|closest-side|farthest-corner|farthest-side)/g) || []\n const position = extendPosition((prefix[1] || '').split(' '))\n\n if (!shape) {\n if (size.length === 1 && !isRgExtentKeyword(size[0])) {\n result.shape = 'circle'\n } else {\n result.shape = 'ellipse'\n }\n } else {\n result.shape = shape as RadialResult['shape']\n }\n\n if (size.length === 0) {\n size.push('farthest-corner')\n }\n\n result.size = size.map(v => {\n if (isRgExtentKeyword(v)) {\n return { type: 'keyword', value: v }\n } else {\n return { type: 'length', value: resolveLength(v) }\n }\n })\n\n result.position.x = isPositionKeyWord(position[0])\n ? { type: 'keyword', value: position[0] }\n : { type: 'length', value: resolveLength(position[0]) }\n\n result.position.y = isPositionKeyWord(position[1])\n ? { type: 'keyword', value: position[1] }\n : { type: 'length', value: resolveLength(position[1]) }\n\n if (shape || size.length > 0 || prefix[1]) properties.shift()\n\n return {\n ...result,\n stops: resolveStops(properties)\n }\n}\n\nfunction isColor(v: string) {\n if (/(circle|ellipse|at)/.test(v)) return false\n return /^(rgba?|hwb|hsl|lab|lch|oklab|color|#|[a-zA-Z]+)/.test(v)\n}","import { lengthToNumber } from '../utils.js'\nimport { default as buildBorderRadius } from '../builder/border-radius.js'\nimport { getStylesForProperty } from 'css-to-react-native'\n\nconst regexMap = {\n circle: /circle\\((.+)\\)/,\n ellipse: /ellipse\\((.+)\\)/,\n path: /path\\((.+)\\)/,\n polygon: /polygon\\((.+)\\)/,\n inset: /inset\\((.+)\\)/,\n}\n\nexport function createShapeParser(\n {\n width,\n height,\n }: {\n width: number\n height: number\n },\n style: Record,\n inheritedStyle: Record\n) {\n function parseCircle(str: string) {\n const res = str.match(regexMap['circle'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'circle',\n r: lengthToNumber(\n radius,\n inheritedStyle.fontSize as number,\n Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / Math.sqrt(2),\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parseEllipse(str: string) {\n const res = str.match(regexMap['ellipse'])\n\n if (!res) return null\n\n const [, value] = res\n const [radius, pos = ''] = value.split('at').map((v) => v.trim())\n const [rx, ry] = radius.split(' ')\n const { x, y } = resolvePosition(pos, width, height)\n\n return {\n type: 'ellipse',\n rx: lengthToNumber(\n rx || '50%',\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n ry: lengthToNumber(\n ry || '50%',\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n cx: lengthToNumber(\n x,\n inheritedStyle.fontSize as number,\n width,\n inheritedStyle,\n true\n ),\n cy: lengthToNumber(\n y,\n inheritedStyle.fontSize as number,\n height,\n inheritedStyle,\n true\n ),\n }\n }\n function parsePath(str: string) {\n const res = str.match(regexMap['path'])\n\n if (!res) return null\n\n const [fillRule, d] = resolveFillRule(res[1])\n\n return {\n type: 'path',\n d,\n 'fill-rule': fillRule,\n }\n }\n function parsePolygon(str: string) {\n const res = str.match(regexMap['polygon'])\n\n if (!res) return null\n\n const [fillRule, points] = resolveFillRule(res[1])\n\n return {\n type: 'polygon',\n 'fill-rule': fillRule,\n points: points\n .split(',')\n .map((v) =>\n v\n .split(' ')\n .map((k, i) =>\n lengthToNumber(\n k,\n inheritedStyle.fontSize as number,\n i === 0 ? width : height,\n inheritedStyle,\n true\n )\n )\n .join(' ')\n )\n .join(','),\n }\n }\n function parseInset(str: string) {\n const res = str.match(regexMap['inset'])\n\n if (!res) return null\n\n const [inset, radius] = (\n res[1].includes('round') ? res[1] : `${res[1].trim()} round 0`\n ).split('round')\n const radiusMap = getStylesForProperty('borderRadius', radius, true)\n const r = Object.values(radiusMap)\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const offsets = Object.values(getStylesForProperty('margin', inset, true))\n .map((s) => String(s))\n .map(\n (s, i) =>\n lengthToNumber(\n s,\n inheritedStyle.fontSize as number,\n i === 0 || i === 2 ? height : width,\n inheritedStyle,\n true\n ) || 0\n )\n const x = offsets[3]\n const y = offsets[0]\n const w = width - (offsets[1] + offsets[3])\n const h = height - (offsets[0] + offsets[2])\n\n if (r.some((v) => v > 0)) {\n const d = buildBorderRadius(\n { left: x, top: y, width: w, height: h },\n { ...style, ...radiusMap }\n )\n\n return { type: 'path', d }\n }\n\n return {\n type: 'rect',\n x,\n y,\n width: w,\n height: h,\n }\n }\n\n return {\n parseCircle,\n parseEllipse,\n parsePath,\n parsePolygon,\n parseInset,\n }\n}\n\nfunction resolveFillRule(str: string) {\n const [, fillRule = 'nonzero', d] =\n str.replace(/('|\")/g, '').match(/^(nonzero|evenodd)?,?(.+)/) || []\n\n return [fillRule, d]\n}\n\nfunction resolvePosition(position: string, xDelta: number, yDelta: number) {\n const pos = position.split(' ')\n const res: { x: number | string; y: number | string } = {\n x: pos[0] || '50%',\n y: pos[1] || '50%',\n }\n\n pos.forEach((v) => {\n if (v === 'top') {\n res.y = 0\n } else if (v === 'bottom') {\n res.y = yDelta\n } else if (v === 'left') {\n res.x = 0\n } else if (v === 'right') {\n res.x = xDelta\n } else if (v === 'center') {\n res.x = xDelta / 2\n res.y = yDelta / 2\n } else {\n // do nothing\n }\n })\n\n return res\n}\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n ], { type: 'text/javascript' }))));\n w.onmessage = function (e) {\n var d = e.data, ed = d.$e$;\n if (ed) {\n var err = new Error(ed[0]);\n err['code'] = ed[1];\n err.stack = ed[2];\n cb(err, null);\n }\n else\n cb(null, d);\n };\n w.postMessage(msg, transfer);\n return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i) {\n if (cd[i])\n ++l[cd[i] - 1];\n }\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i) {\n if (cd[i]) {\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n }\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) | 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v.BYTES_PER_ELEMENT == 2 ? u16 : v.BYTES_PER_ELEMENT == 4 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n UnexpectedEOF: 0,\n InvalidBlockType: 1,\n InvalidLengthLiteral: 2,\n InvalidDistance: 3,\n StreamFinished: 4,\n NoStreamHandler: 5,\n InvalidHeader: 6,\n NoCallback: 7,\n InvalidUTF8: 8,\n ExtraFieldTooLong: 9,\n InvalidDate: 10,\n FilenameTooLong: 11,\n StreamFinishing: 12,\n InvalidZipData: 13,\n UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n 'unexpected EOF',\n 'invalid block type',\n 'invalid length/literal',\n 'invalid distance',\n 'stream finished',\n 'no stream handler',\n ,\n 'no callback',\n 'invalid UTF-8 data',\n 'extra field too long',\n 'date not in range 1980-2099',\n 'filename too long',\n 'stream finishing',\n 'invalid zip data'\n // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n if (!sl || (st && st.f && !st.l))\n return buf || new u8(0);\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n err(0);\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8, st.f = final;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n err(1);\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var lpos = pos;\n for (;; lpos = pos) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (!c)\n err(2);\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lpos = pos, lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n err(3);\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts) {\n if (noSt)\n err(0);\n break;\n }\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) | 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [et, 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e >= s) {\n // write final block\n w[pos >> 3] = lst;\n }\n pos = wfblk(w, pos + 1, dat.subarray(i, e));\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n // deopt when i > s - 3 - at end, deopt acceptable\n var hv = hsh(i);\n // index mod 32768 previous index mod\n var imod = i & 32767, pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst && pos & 7)\n pos = wfblk(w, pos + 1, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n var t = new Int32Array(256);\n for (var i = 0; i < 256; ++i) {\n var c = i, k = 9;\n while (--k)\n c = ((c & 1) && -306674912) ^ (c >>> 1);\n t[i] = c;\n }\n return t;\n})();\n// CRC32\nvar crc = function () {\n var c = -1;\n return {\n p: function (d) {\n // closures have awful performance\n var cr = c;\n for (var i = 0; i < d.length; ++i)\n cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n c = cr;\n },\n d: function () { return ~c; }\n };\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length | 0;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 2655, l);\n for (; i < e; ++i)\n m += n += d[i];\n n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n }\n a = n, b = m;\n },\n d: function () {\n a %= 65521, b %= 65521;\n return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n }\n };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n var o = {};\n for (var k in a)\n o[k] = a[k];\n for (var k in b)\n o[k] = b[k];\n return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n var dt = fn();\n var st = fn.toString();\n var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\\s+/g, '').split(',');\n for (var i = 0; i < dt.length; ++i) {\n var v = dt[i], k = ks[i];\n if (typeof v == 'function') {\n fnStr += ';' + k + '=';\n var st_1 = v.toString();\n if (v.prototype) {\n // for global objects\n if (st_1.indexOf('[native code]') != -1) {\n var spInd = st_1.indexOf(' ', 8) + 1;\n fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n }\n else {\n fnStr += st_1;\n for (var t in v.prototype)\n fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n }\n }\n else\n fnStr += st_1;\n }\n else\n td[k] = v;\n }\n return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n var tl = [];\n for (var k in v) {\n if (v[k].buffer) {\n tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n }\n }\n return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n var _a;\n if (!ch[id]) {\n var fnStr = '', td_1 = {}, m = fns.length - 1;\n for (var i = 0; i < m; ++i)\n _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n ch[id] = wcln(fns[m], fnStr, td_1);\n }\n var td = mrg({}, ch[id][1]);\n return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n var w = wrkr(fns, init, id, function (err, dat) {\n w.terminate();\n cb(err, dat);\n });\n w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n var t;\n var w = wrkr(fns, init, id, function (err, dat) {\n if (err)\n w.terminate(), strm.ondata.call(strm, err);\n else {\n if (dat[1])\n w.terminate();\n strm.ondata.call(strm, err, dat[0], dat[1]);\n }\n });\n w.postMessage(opts);\n strm.push = function (d, f) {\n if (!strm.ondata)\n err(5);\n if (t)\n strm.ondata(err(4, 0, 1), null, !!f);\n w.postMessage([d, t = f], [d.buffer]);\n };\n strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n var fn = o.filename;\n c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n if (o.mtime != 0)\n wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n if (fn) {\n c[3] = 8;\n for (var i = 0; i <= fn.length; ++i)\n c[i + 10] = fn.charCodeAt(i);\n }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n err(6, 'invalid gzip data');\n var flg = d[3];\n var st = 10;\n if (flg & 4)\n st += d[10] | (d[11] << 8) + 2;\n for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n ;\n return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n var l = d.length;\n return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n err(6, 'invalid zlib data');\n if (d[1] & 32)\n err(6, 'invalid zlib data: preset dictionaries not supported');\n};\nfunction AsyncCmpStrm(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n function Deflate(opts, cb) {\n if (!cb && typeof opts == 'function')\n cb = opts, opts = {};\n this.ondata = cb;\n this.o = opts || {};\n }\n Deflate.prototype.p = function (c, f) {\n this.ondata(dopt(c, this.o, 0, 0, !f), f);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Deflate.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.d = final;\n this.p(chunk, final || false);\n };\n return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n function AsyncDeflate(opts, cb) {\n astrmify([\n bDflt,\n function () { return [astrm, Deflate]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Deflate(ev.data);\n onmessage = astrm(strm);\n }, 6);\n }\n return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n /**\n * Creates an inflation stream\n * @param cb The callback to call whenever data is inflated\n */\n function Inflate(cb) {\n this.s = {};\n this.p = new u8(0);\n this.ondata = cb;\n }\n Inflate.prototype.e = function (c) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n var l = this.p.length;\n var n = new u8(l + c.length);\n n.set(this.p), n.set(c, l), this.p = n;\n };\n Inflate.prototype.c = function (final) {\n this.d = this.s.i = final || false;\n var bts = this.s.b;\n var dt = inflt(this.p, this.o, this.s);\n this.ondata(slc(dt, bts, this.s.b), this.d);\n this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n };\n /**\n * Pushes a chunk to be inflated\n * @param chunk The chunk to push\n * @param final Whether this is the final chunk\n */\n Inflate.prototype.push = function (chunk, final) {\n this.e(chunk), this.c(final);\n };\n return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous inflation stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncInflate(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n function () { return [astrm, Inflate]; }\n ], this, 0, function () {\n var strm = new Inflate();\n onmessage = astrm(strm);\n }, 7);\n }\n return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt\n ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n function Gzip(opts, cb) {\n this.c = crc();\n this.l = 0;\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be GZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gzip.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Gzip.prototype.p = function (c, f) {\n this.c.p(c);\n this.l += c.length;\n var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n if (this.v)\n gzh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n this.ondata(raw, f);\n };\n return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n function AsyncGzip(opts, cb) {\n astrmify([\n bDflt,\n gze,\n function () { return [astrm, Deflate, Gzip]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Gzip(ev.data);\n onmessage = astrm(strm);\n }, 8);\n }\n return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n gze,\n function () { return [gzipSync]; }\n ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n if (!opts)\n opts = {};\n var c = crc(), l = data.length;\n c.p(data);\n var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n /**\n * Creates a GUNZIP stream\n * @param cb The callback to call whenever data is inflated\n */\n function Gunzip(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be GUNZIPped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Gunzip.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n var s = this.p.length > 3 ? gzs(this.p) : 4;\n if (s >= this.p.length && !final)\n return;\n this.p = this.p.subarray(s), this.v = 0;\n }\n if (final) {\n if (this.p.length < 8)\n err(6, 'invalid gzip data');\n this.p = this.p.subarray(0, -8);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous GUNZIP stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncGunzip(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n guze,\n function () { return [astrm, Inflate, Gunzip]; }\n ], this, 0, function () {\n var strm = new Gunzip();\n onmessage = astrm(strm);\n }, 9);\n }\n return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n guze,\n function () { return [gunzipSync]; }\n ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n function Zlib(opts, cb) {\n this.c = adler();\n this.v = 1;\n Deflate.call(this, opts, cb);\n }\n /**\n * Pushes a chunk to be zlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Zlib.prototype.push = function (chunk, final) {\n Deflate.prototype.push.call(this, chunk, final);\n };\n Zlib.prototype.p = function (c, f) {\n this.c.p(c);\n var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n if (this.v)\n zlh(raw, this.o), this.v = 0;\n if (f)\n wbytes(raw, raw.length - 4, this.c.d());\n this.ondata(raw, f);\n };\n return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n function AsyncZlib(opts, cb) {\n astrmify([\n bDflt,\n zle,\n function () { return [astrm, Deflate, Zlib]; }\n ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n var strm = new Zlib(ev.data);\n onmessage = astrm(strm);\n }, 10);\n }\n return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bDflt,\n zle,\n function () { return [zlibSync]; }\n ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n if (!opts)\n opts = {};\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n /**\n * Creates a Zlib decompression stream\n * @param cb The callback to call whenever data is inflated\n */\n function Unzlib(cb) {\n this.v = 1;\n Inflate.call(this, cb);\n }\n /**\n * Pushes a chunk to be unzlibbed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzlib.prototype.push = function (chunk, final) {\n Inflate.prototype.e.call(this, chunk);\n if (this.v) {\n if (this.p.length < 2 && !final)\n return;\n this.p = this.p.subarray(2), this.v = 0;\n }\n if (final) {\n if (this.p.length < 4)\n err(6, 'invalid zlib data');\n this.p = this.p.subarray(0, -4);\n }\n // necessary to prevent TS from using the closure value\n // This allows for workerization to function correctly\n Inflate.prototype.c.call(this, final);\n };\n return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous Zlib decompression stream\n * @param cb The callback to call whenever data is deflated\n */\n function AsyncUnzlib(cb) {\n this.ondata = cb;\n astrmify([\n bInflt,\n zule,\n function () { return [astrm, Inflate, Unzlib]; }\n ], this, 0, function () {\n var strm = new Unzlib();\n onmessage = astrm(strm);\n }, 11);\n }\n return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return cbify(data, opts, [\n bInflt,\n zule,\n function () { return [unzlibSync]; }\n ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function Decompress(cb) {\n this.G = Gunzip;\n this.I = Inflate;\n this.Z = Unzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Decompress.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (!this.s) {\n if (this.p && this.p.length) {\n var n = new u8(this.p.length + chunk.length);\n n.set(this.p), n.set(chunk, this.p.length);\n }\n else\n this.p = chunk;\n if (this.p.length > 2) {\n var _this_1 = this;\n var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n ? new this.G(cb)\n : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n ? new this.I(cb)\n : new this.Z(cb);\n this.s.push(this.p, final);\n this.p = null;\n }\n }\n else\n this.s.push(chunk, final);\n };\n return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n /**\n * Creates an asynchronous decompression stream\n * @param cb The callback to call whenever data is decompressed\n */\n function AsyncDecompress(cb) {\n this.G = AsyncGunzip;\n this.I = AsyncInflate;\n this.Z = AsyncUnzlib;\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be decompressed\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncDecompress.prototype.push = function (chunk, final) {\n Decompress.prototype.push.call(this, chunk, final);\n };\n return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzip(data, opts, cb)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflate(data, opts, cb)\n : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n ? gunzipSync(data, out)\n : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n ? inflateSync(data, out)\n : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n for (var k in d) {\n var val = d[k], n = p + k, op = o;\n if (Array.isArray(val))\n op = mrg(o, val[1]), val = val[0];\n if (val instanceof u8)\n t[n] = [val, op];\n else {\n t[n += '/'] = [new u8(0), op];\n fltn(val, n, t, o);\n }\n }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n td.decode(et, { stream: true });\n tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n for (var r = '', i = 0;;) {\n var c = d[i++];\n var eb = (c > 127) + (c > 223) + (c > 239);\n if (i + eb > d.length)\n return [r, slc(d, i - 1)];\n if (!eb)\n r += String.fromCharCode(c);\n else if (eb == 3) {\n c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n else if (eb & 1)\n r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n else\n r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is decoded\n */\n function DecodeUTF8(cb) {\n this.ondata = cb;\n if (tds)\n this.t = new TextDecoder();\n else\n this.p = et;\n }\n /**\n * Pushes a chunk to be decoded from UTF-8 binary\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n DecodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n final = !!final;\n if (this.t) {\n this.ondata(this.t.decode(chunk, { stream: true }), final);\n if (final) {\n if (this.t.decode().length)\n err(8);\n this.t = null;\n }\n return;\n }\n if (!this.p)\n err(4);\n var dat = new u8(this.p.length + chunk.length);\n dat.set(this.p);\n dat.set(chunk, this.p.length);\n var _a = dutf8(dat), ch = _a[0], np = _a[1];\n if (final) {\n if (np.length)\n err(8);\n this.p = null;\n }\n else\n this.p = np;\n this.ondata(ch, final);\n };\n return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n /**\n * Creates a UTF-8 decoding stream\n * @param cb The callback to call whenever data is encoded\n */\n function EncodeUTF8(cb) {\n this.ondata = cb;\n }\n /**\n * Pushes a chunk to be encoded to UTF-8\n * @param chunk The string data to push\n * @param final Whether this is the last chunk\n */\n EncodeUTF8.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n if (this.d)\n err(4);\n this.ondata(strToU8(chunk), this.d = final || false);\n };\n return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n if (latin1) {\n var ar_1 = new u8(str.length);\n for (var i = 0; i < str.length; ++i)\n ar_1[i] = str.charCodeAt(i);\n return ar_1;\n }\n if (te)\n return te.encode(str);\n var l = str.length;\n var ar = new u8(str.length + (str.length >> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n if (latin1) {\n var r = '';\n for (var i = 0; i < dat.length; i += 16384)\n r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n return r;\n }\n else if (td)\n return td.decode(dat);\n else {\n var _a = dutf8(dat), out = _a[0], ext = _a[1];\n if (ext.length)\n err(8);\n return out;\n }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n ;\n return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n var le = 0;\n if (ex) {\n for (var k in ex) {\n var l = ex[k].length;\n if (l > 65535)\n err(9);\n le += l + 4;\n }\n }\n return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n var fl = fn.length, ex = f.extra, col = co && co.length;\n var exl = exfl(ex);\n wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n if (ce != null)\n d[b++] = 20, d[b++] = f.os;\n d[b] = 20, b += 2; // spec compliance? what's that?\n d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;\n d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n if (y < 0 || y > 119)\n err(10);\n wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n if (c != null) {\n wbytes(d, b, f.crc);\n wbytes(d, b + 4, c);\n wbytes(d, b + 8, f.size);\n }\n wbytes(d, b + 12, fl);\n wbytes(d, b + 14, exl), b += 16;\n if (ce != null) {\n wbytes(d, b, col);\n wbytes(d, b + 6, f.attrs);\n wbytes(d, b + 10, ce), b += 14;\n }\n d.set(fn, b);\n b += fl;\n if (exl) {\n for (var k in ex) {\n var exf = ex[k], l = exf.length;\n wbytes(d, b, +k);\n wbytes(d, b + 2, l);\n d.set(exf, b + 4), b += 4 + l;\n }\n }\n if (col)\n d.set(co, b), b += col;\n return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n wbytes(o, b, 0x6054B50); // skip disk\n wbytes(o, b + 8, c);\n wbytes(o, b + 10, c);\n wbytes(o, b + 12, d);\n wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n /**\n * Creates a pass-through stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n */\n function ZipPassThrough(filename) {\n this.filename = filename;\n this.c = crc();\n this.size = 0;\n this.compression = 0;\n }\n /**\n * Processes a chunk and pushes to the output stream. You can override this\n * method in a subclass for custom behavior, but by default this passes\n * the data through. You must call this.ondata(err, chunk, final) at some\n * point in this method.\n * @param chunk The chunk to process\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.process = function (chunk, final) {\n this.ondata(null, chunk, final);\n };\n /**\n * Pushes a chunk to be added. If you are subclassing this with a custom\n * compression algorithm, note that you must push data from the source\n * file only, pre-compression.\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipPassThrough.prototype.push = function (chunk, final) {\n if (!this.ondata)\n err(5);\n this.c.p(chunk);\n this.size += chunk.length;\n if (final)\n this.crc = this.c.d();\n this.process(chunk, final || false);\n };\n return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function ZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new Deflate(opts, function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n }\n ZipDeflate.prototype.process = function (chunk, final) {\n try {\n this.d.push(chunk, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n ZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE stream that can be added to ZIP archives\n * @param filename The filename to associate with this data stream\n * @param opts The compression options\n */\n function AsyncZipDeflate(filename, opts) {\n var _this_1 = this;\n if (!opts)\n opts = {};\n ZipPassThrough.call(this, filename);\n this.d = new AsyncDeflate(opts, function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.compression = 8;\n this.flag = dbf(opts.level);\n this.terminate = this.d.terminate;\n }\n AsyncZipDeflate.prototype.process = function (chunk, final) {\n this.d.push(chunk, final);\n };\n /**\n * Pushes a chunk to be deflated\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n AsyncZipDeflate.prototype.push = function (chunk, final) {\n ZipPassThrough.prototype.push.call(this, chunk, final);\n };\n return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n /**\n * Creates an empty ZIP archive to which files can be added\n * @param cb The callback to call whenever data for the generated ZIP archive\n * is available\n */\n function Zip(cb) {\n this.ondata = cb;\n this.u = [];\n this.d = 1;\n }\n /**\n * Adds a file to the ZIP archive\n * @param file The file stream to add\n */\n Zip.prototype.add = function (file) {\n var _this_1 = this;\n if (!this.ondata)\n err(5);\n // finishing or finished\n if (this.d & 2)\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n else {\n var f = strToU8(file.filename), fl_1 = f.length;\n var com = file.comment, o = com && strToU8(com);\n var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n var hl_1 = fl_1 + exfl(file.extra) + 30;\n if (fl_1 > 65535)\n this.ondata(err(11, 0, 1), null, false);\n var header = new u8(hl_1);\n wzh(header, 0, file, f, u);\n var chks_1 = [header];\n var pAll_1 = function () {\n for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n var chk = chks_2[_i];\n _this_1.ondata(null, chk, false);\n }\n chks_1 = [];\n };\n var tr_1 = this.d;\n this.d = 0;\n var ind_1 = this.u.length;\n var uf_1 = mrg(file, {\n f: f,\n u: u,\n o: o,\n t: function () {\n if (file.terminate)\n file.terminate();\n },\n r: function () {\n pAll_1();\n if (tr_1) {\n var nxt = _this_1.u[ind_1 + 1];\n if (nxt)\n nxt.r();\n else\n _this_1.d = 1;\n }\n tr_1 = 1;\n }\n });\n var cl_1 = 0;\n file.ondata = function (err, dat, final) {\n if (err) {\n _this_1.ondata(err, dat, final);\n _this_1.terminate();\n }\n else {\n cl_1 += dat.length;\n chks_1.push(dat);\n if (final) {\n var dd = new u8(16);\n wbytes(dd, 0, 0x8074B50);\n wbytes(dd, 4, file.crc);\n wbytes(dd, 8, cl_1);\n wbytes(dd, 12, file.size);\n chks_1.push(dd);\n uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n if (tr_1)\n uf_1.r();\n tr_1 = 1;\n }\n else if (tr_1)\n pAll_1();\n }\n };\n this.u.push(uf_1);\n }\n };\n /**\n * Ends the process of adding files and prepares to emit the final chunks.\n * This *must* be called after adding all desired files for the resulting\n * ZIP file to work properly.\n */\n Zip.prototype.end = function () {\n var _this_1 = this;\n if (this.d & 2) {\n this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n return;\n }\n if (this.d)\n this.e();\n else\n this.u.push({\n r: function () {\n if (!(_this_1.d & 1))\n return;\n _this_1.u.splice(-1, 1);\n _this_1.e();\n },\n t: function () { }\n });\n this.d = 3;\n };\n Zip.prototype.e = function () {\n var bt = 0, l = 0, tl = 0;\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n }\n var out = new u8(tl + 22);\n for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n var f = _c[_b];\n wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n }\n wzf(out, bt, this.u.length, tl, l);\n this.ondata(null, out, true);\n this.d = 2;\n };\n /**\n * A method to terminate any internal workers used by the stream. Subsequent\n * calls to add() will fail.\n */\n Zip.prototype.terminate = function () {\n for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n var f = _a[_i];\n f.t();\n }\n this.d = 2;\n };\n return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var r = {};\n fltn(data, '', r, opts);\n var k = Object.keys(r);\n var lft = k.length, o = 0, tot = 0;\n var slft = lft, files = new Array(lft);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var cbf = function () {\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n tot = 0;\n for (var i = 0; i < slft; ++i) {\n var f = files[i];\n try {\n var l = f.c.length;\n wzh(out, tot, f, f.f, f.u, l);\n var badd = 30 + f.f.length + exfl(f.extra);\n var loc = tot + badd;\n out.set(f.c, loc);\n wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n }\n catch (e) {\n return cbd(e, null);\n }\n }\n wzf(out, o, files.length, cdl, oe);\n cbd(null, out);\n };\n if (!lft)\n cbf();\n var _loop_1 = function (i) {\n var fn = k[i];\n var _a = r[fn], file = _a[0], p = _a[1];\n var c = crc(), size = file.length;\n c.p(file);\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n var compression = p.level == 0 ? 0 : 8;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n var l = d.length;\n files[i] = mrg(p, {\n size: size,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n compression: compression\n });\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n if (!--lft)\n cbf();\n }\n };\n if (s > 65535)\n cbl(err(11, 0, 1), null);\n if (!compression)\n cbl(null, file);\n else if (size < 160000) {\n try {\n cbl(null, deflateSync(file, p));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(deflate(file, p, cbl));\n };\n // Cannot use lft because it can decrease\n for (var i = 0; i < slft; ++i) {\n _loop_1(i);\n }\n return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n if (!opts)\n opts = {};\n var r = {};\n var files = [];\n fltn(data, '', r, opts);\n var o = 0;\n var tot = 0;\n for (var fn in r) {\n var _a = r[fn], file = _a[0], p = _a[1];\n var compression = p.level == 0 ? 0 : 8;\n var f = strToU8(fn), s = f.length;\n var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n var exl = exfl(p.extra);\n if (s > 65535)\n err(11);\n var d = compression ? deflateSync(file, p) : file, l = d.length;\n var c = crc();\n c.p(file);\n files.push(mrg(p, {\n size: file.length,\n crc: c.d(),\n c: d,\n f: f,\n m: m,\n u: s != fn.length || (m && (com.length != ms)),\n o: o,\n compression: compression\n }));\n o += 30 + s + exl + l;\n tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n }\n var out = new u8(tot + 22), oe = o, cdl = tot - o;\n for (var i = 0; i < files.length; ++i) {\n var f = files[i];\n wzh(out, f.o, f, f.f, f.u, f.c.length);\n var badd = 30 + f.f.length + exfl(f.extra);\n out.set(f.c, f.o + badd);\n wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n }\n wzf(out, o, files.length, cdl, oe);\n return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n function UnzipPassThrough() {\n }\n UnzipPassThrough.prototype.push = function (data, final) {\n this.ondata(null, data, final);\n };\n UnzipPassThrough.compression = 0;\n return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function UnzipInflate() {\n var _this_1 = this;\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n UnzipInflate.prototype.push = function (data, final) {\n try {\n this.i.push(data, final);\n }\n catch (e) {\n this.ondata(e, null, final);\n }\n };\n UnzipInflate.compression = 8;\n return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n /**\n * Creates a DEFLATE decompression that can be used in ZIP archives\n */\n function AsyncUnzipInflate(_, sz) {\n var _this_1 = this;\n if (sz < 320000) {\n this.i = new Inflate(function (dat, final) {\n _this_1.ondata(null, dat, final);\n });\n }\n else {\n this.i = new AsyncInflate(function (err, dat, final) {\n _this_1.ondata(err, dat, final);\n });\n this.terminate = this.i.terminate;\n }\n }\n AsyncUnzipInflate.prototype.push = function (data, final) {\n if (this.i.terminate)\n data = slc(data, 0);\n this.i.push(data, final);\n };\n AsyncUnzipInflate.compression = 8;\n return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n /**\n * Creates a ZIP decompression stream\n * @param cb The callback to call whenever a file in the ZIP archive is found\n */\n function Unzip(cb) {\n this.onfile = cb;\n this.k = [];\n this.o = {\n 0: UnzipPassThrough\n };\n this.p = et;\n }\n /**\n * Pushes a chunk to be unzipped\n * @param chunk The chunk to push\n * @param final Whether this is the last chunk\n */\n Unzip.prototype.push = function (chunk, final) {\n var _this_1 = this;\n if (!this.onfile)\n err(5);\n if (!this.p)\n err(4);\n if (this.c > 0) {\n var len = Math.min(this.c, chunk.length);\n var toAdd = chunk.subarray(0, len);\n this.c -= len;\n if (this.d)\n this.d.push(toAdd, !this.c);\n else\n this.k[0].push(toAdd);\n chunk = chunk.subarray(len);\n if (chunk.length)\n return this.push(chunk, final);\n }\n else {\n var f = 0, i = 0, is = void 0, buf = void 0;\n if (!this.p.length)\n buf = chunk;\n else if (!chunk.length)\n buf = this.p;\n else {\n buf = new u8(this.p.length + chunk.length);\n buf.set(this.p), buf.set(chunk, this.p.length);\n }\n var l = buf.length, oc = this.c, add = oc && this.d;\n var _loop_2 = function () {\n var _a;\n var sig = b4(buf, i);\n if (sig == 0x4034B50) {\n f = 1, is = i;\n this_1.d = null;\n this_1.c = 0;\n var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n if (l > i + 30 + fnl + es) {\n var chks_3 = [];\n this_1.k.unshift(chks_3);\n f = 2;\n var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n if (sc_1 == 4294967295) {\n _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n }\n else if (dd)\n sc_1 = -1;\n i += es;\n this_1.c = sc_1;\n var d_1;\n var file_1 = {\n name: fn_1,\n compression: cmp_1,\n start: function () {\n if (!file_1.ondata)\n err(5);\n if (!sc_1)\n file_1.ondata(null, et, true);\n else {\n var ctr = _this_1.o[cmp_1];\n if (!ctr)\n file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n var dat = chks_4[_i];\n d_1.push(dat, false);\n }\n if (_this_1.k[0] == chks_3 && _this_1.c)\n _this_1.d = d_1;\n else\n d_1.push(et, true);\n }\n },\n terminate: function () {\n if (d_1 && d_1.terminate)\n d_1.terminate();\n }\n };\n if (sc_1 >= 0)\n file_1.size = sc_1, file_1.originalSize = su_1;\n this_1.onfile(file_1);\n }\n return \"break\";\n }\n else if (oc) {\n if (sig == 0x8074B50) {\n is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n return \"break\";\n }\n else if (sig == 0x2014B50) {\n is = i -= 4, f = 3, this_1.c = 0;\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (; i < l - 4; ++i) {\n var state_1 = _loop_2();\n if (state_1 === \"break\")\n break;\n }\n this.p = et;\n if (oc < 0) {\n var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n if (add)\n add.push(dat, !!f);\n else\n this.k[+(f == 2)].push(dat);\n }\n if (f & 2)\n return this.push(buf.subarray(i), final);\n this.p = buf.subarray(i);\n }\n if (final) {\n if (this.c)\n err(13);\n this.p = null;\n }\n };\n /**\n * Registers a decoder with the stream, allowing for files compressed with\n * the compression type provided to be expanded correctly\n * @param decoder The decoder constructor\n */\n Unzip.prototype.register = function (decoder) {\n this.o[decoder.compression] = decoder;\n };\n return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n if (!cb)\n cb = opts, opts = {};\n if (typeof cb != 'function')\n err(7);\n var term = [];\n var tAll = function () {\n for (var i = 0; i < term.length; ++i)\n term[i]();\n };\n var files = {};\n var cbd = function (a, b) {\n mt(function () { cb(a, b); });\n };\n mt(function () { cbd = cb; });\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n }\n ;\n var lft = b2(data, e + 8);\n if (lft) {\n var c = lft;\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50) {\n cbd(err(13, 0, 1), null);\n return tAll;\n }\n c = lft = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n var _loop_3 = function (i) {\n var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n var cbl = function (e, d) {\n if (e) {\n tAll();\n cbd(e, null);\n }\n else {\n if (d)\n files[fn] = d;\n if (!--lft)\n cbd(null, files);\n }\n };\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_1\n })) {\n if (!c_1)\n cbl(null, slc(data, b, b + sc));\n else if (c_1 == 8) {\n var infl = data.subarray(b, b + sc);\n if (sc < 320000) {\n try {\n cbl(null, inflateSync(infl, new u8(su)));\n }\n catch (e) {\n cbl(e, null);\n }\n }\n else\n term.push(inflate(infl, { size: su }, cbl));\n }\n else\n cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n }\n else\n cbl(null, null);\n };\n for (var i = 0; i < c; ++i) {\n _loop_3(i);\n }\n }\n else\n cbd(null, {});\n return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n var files = {};\n var e = data.length - 22;\n for (; b4(data, e) != 0x6054B50; --e) {\n if (!e || data.length - e > 65558)\n err(13);\n }\n ;\n var c = b2(data, e + 8);\n if (!c)\n return {};\n var o = b4(data, e + 16);\n var z = o == 4294967295;\n if (z) {\n e = b4(data, e - 12);\n if (b4(data, e) != 0x6064B50)\n err(13);\n c = b4(data, e + 32);\n o = b4(data, e + 48);\n }\n var fltr = opts && opts.filter;\n for (var i = 0; i < c; ++i) {\n var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n o = no;\n if (!fltr || fltr({\n name: fn,\n size: sc,\n originalSize: su,\n compression: c_2\n })) {\n if (!c_2)\n files[fn] = slc(data, b, b + sc);\n else if (c_2 == 8)\n files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n else\n err(14, 'unknown compression type ' + c_2);\n }\n }\n return files;\n}\n","// Geometric objects\n\n// import BoundingBox from './bbox';\n\n/**\n * A bézier path containing a set of path commands similar to a SVG path.\n * Paths can be drawn on a context using `draw`.\n * @exports opentype.Path\n * @class\n * @constructor\n */\nfunction Path() {\n this.commands = [];\n this.fill = 'black';\n this.stroke = null;\n this.strokeWidth = 1;\n}\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.moveTo = function (x, y) {\n this.commands.push({\n type: 'M',\n x: x,\n y: y,\n });\n};\n\n/**\n * @param {number} x\n * @param {number} y\n */\nPath.prototype.lineTo = function (x, y) {\n this.commands.push({\n type: 'L',\n x: x,\n y: y,\n });\n};\n\n/**\n * Draws cubic curve\n * @function\n * curveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws cubic curve\n * @function\n * bezierCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control 1\n * @param {number} y1 - y of control 1\n * @param {number} x2 - x of control 2\n * @param {number} y2 - y of control 2\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n * @see curveTo\n */\nPath.prototype.curveTo = Path.prototype.bezierCurveTo = function (\n x1,\n y1,\n x2,\n y2,\n x,\n y\n) {\n this.commands.push({\n type: 'C',\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n x: x,\n y: y,\n });\n};\n\n/**\n * Draws quadratic curve\n * @function\n * quadraticCurveTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\n\n/**\n * Draws quadratic curve\n * @function\n * quadTo\n * @memberof opentype.Path.prototype\n * @param {number} x1 - x of control\n * @param {number} y1 - y of control\n * @param {number} x - x of path point\n * @param {number} y - y of path point\n */\nPath.prototype.quadTo = Path.prototype.quadraticCurveTo = function (\n x1,\n y1,\n x,\n y\n) {\n this.commands.push({\n type: 'Q',\n x1: x1,\n y1: y1,\n x: x,\n y: y,\n });\n};\n\n/**\n * Closes the path\n * @function closePath\n * @memberof opentype.Path.prototype\n */\n\n/**\n * Close the path\n * @function close\n * @memberof opentype.Path.prototype\n */\nPath.prototype.close = Path.prototype.closePath = function () {\n this.commands.push({\n type: 'Z',\n });\n};\n\n/**\n * Add the given path or list of commands to the commands of this path.\n * @param {Array} pathOrCommands - another opentype.Path, an opentype.BoundingBox, or an array of commands.\n */\nPath.prototype.extend = function (pathOrCommands) {\n if (pathOrCommands.commands) {\n pathOrCommands = pathOrCommands.commands;\n }\n // else if (pathOrCommands instanceof BoundingBox) {\n // const box = pathOrCommands;\n // this.moveTo(box.x1, box.y1);\n // this.lineTo(box.x2, box.y1);\n // this.lineTo(box.x2, box.y2);\n // this.lineTo(box.x1, box.y2);\n // this.close();\n // return;\n // }\n\n Array.prototype.push.apply(this.commands, pathOrCommands);\n};\n\n/**\n * Convert the Path to a string of path data instructions\n * See http://www.w3.org/TR/SVG/paths.html#PathData\n * @param {number} [decimalPlaces=2] - The amount of decimal places for floating-point values\n * @return {string}\n */\nPath.prototype.toPathData = function (decimalPlaces) {\n decimalPlaces = decimalPlaces !== undefined ? decimalPlaces : 2;\n\n function floatToString(v) {\n if (Math.round(v) === v) {\n return '' + Math.round(v);\n } else {\n return v.toFixed(decimalPlaces);\n }\n }\n\n function packValues() {\n let s = '';\n for (let i = 0; i < arguments.length; i += 1) {\n const v = arguments[i];\n if (v >= 0 && i > 0) {\n s += ' ';\n }\n\n s += floatToString(v);\n }\n\n return s;\n }\n\n let d = '';\n for (let i = 0; i < this.commands.length; i += 1) {\n const cmd = this.commands[i];\n if (cmd.type === 'M') {\n d += 'M' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'L') {\n d += 'L' + packValues(cmd.x, cmd.y);\n } else if (cmd.type === 'C') {\n d += 'C' + packValues(cmd.x1, cmd.y1, cmd.x2, cmd.y2, cmd.x, cmd.y);\n } else if (cmd.type === 'Q') {\n d += 'Q' + packValues(cmd.x1, cmd.y1, cmd.x, cmd.y);\n } else if (cmd.type === 'Z') {\n d += 'Z';\n }\n }\n\n return d;\n};\n\nexport default Path;\n","// Glyph encoding\n\nconst cffStandardStrings = [\n '.notdef',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n 'questiondown',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n 'ring',\n 'cedilla',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n 'AE',\n 'ordfeminine',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n 'ae',\n 'dotlessi',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls',\n 'onesuperior',\n 'logicalnot',\n 'mu',\n 'trademark',\n 'Eth',\n 'onehalf',\n 'plusminus',\n 'Thorn',\n 'onequarter',\n 'divide',\n 'brokenbar',\n 'degree',\n 'thorn',\n 'threequarters',\n 'twosuperior',\n 'registered',\n 'minus',\n 'eth',\n 'multiply',\n 'threesuperior',\n 'copyright',\n 'Aacute',\n 'Acircumflex',\n 'Adieresis',\n 'Agrave',\n 'Aring',\n 'Atilde',\n 'Ccedilla',\n 'Eacute',\n 'Ecircumflex',\n 'Edieresis',\n 'Egrave',\n 'Iacute',\n 'Icircumflex',\n 'Idieresis',\n 'Igrave',\n 'Ntilde',\n 'Oacute',\n 'Ocircumflex',\n 'Odieresis',\n 'Ograve',\n 'Otilde',\n 'Scaron',\n 'Uacute',\n 'Ucircumflex',\n 'Udieresis',\n 'Ugrave',\n 'Yacute',\n 'Ydieresis',\n 'Zcaron',\n 'aacute',\n 'acircumflex',\n 'adieresis',\n 'agrave',\n 'aring',\n 'atilde',\n 'ccedilla',\n 'eacute',\n 'ecircumflex',\n 'edieresis',\n 'egrave',\n 'iacute',\n 'icircumflex',\n 'idieresis',\n 'igrave',\n 'ntilde',\n 'oacute',\n 'ocircumflex',\n 'odieresis',\n 'ograve',\n 'otilde',\n 'scaron',\n 'uacute',\n 'ucircumflex',\n 'udieresis',\n 'ugrave',\n 'yacute',\n 'ydieresis',\n 'zcaron',\n 'exclamsmall',\n 'Hungarumlautsmall',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n '266 ff',\n 'onedotenleader',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n 'isuperior',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n 'ff',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n 'Dotaccentsmall',\n 'Macronsmall',\n 'figuredash',\n 'hypheninferior',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n 'zerosuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall',\n '001.000',\n '001.001',\n '001.002',\n '001.003',\n 'Black',\n 'Bold',\n 'Book',\n 'Light',\n 'Medium',\n 'Regular',\n 'Roman',\n 'Semibold',\n];\n\nconst cffStandardEncoding = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclam',\n 'quotedbl',\n 'numbersign',\n 'dollar',\n 'percent',\n 'ampersand',\n 'quoteright',\n 'parenleft',\n 'parenright',\n 'asterisk',\n 'plus',\n 'comma',\n 'hyphen',\n 'period',\n 'slash',\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'colon',\n 'semicolon',\n 'less',\n 'equal',\n 'greater',\n 'question',\n 'at',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'bracketleft',\n 'backslash',\n 'bracketright',\n 'asciicircum',\n 'underscore',\n 'quoteleft',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n 'braceleft',\n 'bar',\n 'braceright',\n 'asciitilde',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdown',\n 'cent',\n 'sterling',\n 'fraction',\n 'yen',\n 'florin',\n 'section',\n 'currency',\n 'quotesingle',\n 'quotedblleft',\n 'guillemotleft',\n 'guilsinglleft',\n 'guilsinglright',\n 'fi',\n 'fl',\n '',\n 'endash',\n 'dagger',\n 'daggerdbl',\n 'periodcentered',\n '',\n 'paragraph',\n 'bullet',\n 'quotesinglbase',\n 'quotedblbase',\n 'quotedblright',\n 'guillemotright',\n 'ellipsis',\n 'perthousand',\n '',\n 'questiondown',\n '',\n 'grave',\n 'acute',\n 'circumflex',\n 'tilde',\n 'macron',\n 'breve',\n 'dotaccent',\n 'dieresis',\n '',\n 'ring',\n 'cedilla',\n '',\n 'hungarumlaut',\n 'ogonek',\n 'caron',\n 'emdash',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'AE',\n '',\n 'ordfeminine',\n '',\n '',\n '',\n '',\n 'Lslash',\n 'Oslash',\n 'OE',\n 'ordmasculine',\n '',\n '',\n '',\n '',\n '',\n 'ae',\n '',\n '',\n '',\n 'dotlessi',\n '',\n '',\n 'lslash',\n 'oslash',\n 'oe',\n 'germandbls',\n];\n\nconst cffExpertEncoding = [\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'space',\n 'exclamsmall',\n 'Hungarumlautsmall',\n '',\n 'dollaroldstyle',\n 'dollarsuperior',\n 'ampersandsmall',\n 'Acutesmall',\n 'parenleftsuperior',\n 'parenrightsuperior',\n 'twodotenleader',\n 'onedotenleader',\n 'comma',\n 'hyphen',\n 'period',\n 'fraction',\n 'zerooldstyle',\n 'oneoldstyle',\n 'twooldstyle',\n 'threeoldstyle',\n 'fouroldstyle',\n 'fiveoldstyle',\n 'sixoldstyle',\n 'sevenoldstyle',\n 'eightoldstyle',\n 'nineoldstyle',\n 'colon',\n 'semicolon',\n 'commasuperior',\n 'threequartersemdash',\n 'periodsuperior',\n 'questionsmall',\n '',\n 'asuperior',\n 'bsuperior',\n 'centsuperior',\n 'dsuperior',\n 'esuperior',\n '',\n '',\n 'isuperior',\n '',\n '',\n 'lsuperior',\n 'msuperior',\n 'nsuperior',\n 'osuperior',\n '',\n '',\n 'rsuperior',\n 'ssuperior',\n 'tsuperior',\n '',\n 'ff',\n 'fi',\n 'fl',\n 'ffi',\n 'ffl',\n 'parenleftinferior',\n '',\n 'parenrightinferior',\n 'Circumflexsmall',\n 'hyphensuperior',\n 'Gravesmall',\n 'Asmall',\n 'Bsmall',\n 'Csmall',\n 'Dsmall',\n 'Esmall',\n 'Fsmall',\n 'Gsmall',\n 'Hsmall',\n 'Ismall',\n 'Jsmall',\n 'Ksmall',\n 'Lsmall',\n 'Msmall',\n 'Nsmall',\n 'Osmall',\n 'Psmall',\n 'Qsmall',\n 'Rsmall',\n 'Ssmall',\n 'Tsmall',\n 'Usmall',\n 'Vsmall',\n 'Wsmall',\n 'Xsmall',\n 'Ysmall',\n 'Zsmall',\n 'colonmonetary',\n 'onefitted',\n 'rupiah',\n 'Tildesmall',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n '',\n 'exclamdownsmall',\n 'centoldstyle',\n 'Lslashsmall',\n '',\n '',\n 'Scaronsmall',\n 'Zcaronsmall',\n 'Dieresissmall',\n 'Brevesmall',\n 'Caronsmall',\n '',\n 'Dotaccentsmall',\n '',\n '',\n 'Macronsmall',\n '',\n '',\n 'figuredash',\n 'hypheninferior',\n '',\n '',\n 'Ogoneksmall',\n 'Ringsmall',\n 'Cedillasmall',\n '',\n '',\n '',\n 'onequarter',\n 'onehalf',\n 'threequarters',\n 'questiondownsmall',\n 'oneeighth',\n 'threeeighths',\n 'fiveeighths',\n 'seveneighths',\n 'onethird',\n 'twothirds',\n '',\n '',\n 'zerosuperior',\n 'onesuperior',\n 'twosuperior',\n 'threesuperior',\n 'foursuperior',\n 'fivesuperior',\n 'sixsuperior',\n 'sevensuperior',\n 'eightsuperior',\n 'ninesuperior',\n 'zeroinferior',\n 'oneinferior',\n 'twoinferior',\n 'threeinferior',\n 'fourinferior',\n 'fiveinferior',\n 'sixinferior',\n 'seveninferior',\n 'eightinferior',\n 'nineinferior',\n 'centinferior',\n 'dollarinferior',\n 'periodinferior',\n 'commainferior',\n 'Agravesmall',\n 'Aacutesmall',\n 'Acircumflexsmall',\n 'Atildesmall',\n 'Adieresissmall',\n 'Aringsmall',\n 'AEsmall',\n 'Ccedillasmall',\n 'Egravesmall',\n 'Eacutesmall',\n 'Ecircumflexsmall',\n 'Edieresissmall',\n 'Igravesmall',\n 'Iacutesmall',\n 'Icircumflexsmall',\n 'Idieresissmall',\n 'Ethsmall',\n 'Ntildesmall',\n 'Ogravesmall',\n 'Oacutesmall',\n 'Ocircumflexsmall',\n 'Otildesmall',\n 'Odieresissmall',\n 'OEsmall',\n 'Oslashsmall',\n 'Ugravesmall',\n 'Uacutesmall',\n 'Ucircumflexsmall',\n 'Udieresissmall',\n 'Yacutesmall',\n 'Thornsmall',\n 'Ydieresissmall',\n];\n\n/**\n * This is the encoding used for fonts created from scratch.\n * It loops through all glyphs and finds the appropriate unicode value.\n * Since it's linear time, other encodings will be faster.\n * @exports opentype.DefaultEncoding\n * @class\n * @constructor\n * @param {opentype.Font}\n */\nfunction DefaultEncoding(font) {\n this.font = font;\n}\n\nDefaultEncoding.prototype.charToGlyphIndex = function (c) {\n const code = c.codePointAt(0);\n const glyphs = this.font.glyphs;\n if (glyphs) {\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs.get(i);\n for (let j = 0; j < glyph.unicodes.length; j += 1) {\n if (glyph.unicodes[j] === code) {\n return i;\n }\n }\n }\n }\n return null;\n};\n\n/**\n * @exports opentype.CmapEncoding\n * @class\n * @constructor\n * @param {Object} cmap - a object with the cmap encoded data\n */\nfunction CmapEncoding(cmap) {\n this.cmap = cmap;\n}\n\n/**\n * @param {string} c - the character\n * @return {number} The glyph index.\n */\nCmapEncoding.prototype.charToGlyphIndex = function (c) {\n return this.cmap.glyphIndexMap[c.codePointAt(0)] || 0;\n};\n\n/**\n * @exports opentype.CffEncoding\n * @class\n * @constructor\n * @param {string} encoding - The encoding\n * @param {Array} charset - The character set.\n */\nfunction CffEncoding(encoding, charset) {\n this.encoding = encoding;\n this.charset = charset;\n}\n\n/**\n * @param {string} s - The character\n * @return {number} The index.\n */\nCffEncoding.prototype.charToGlyphIndex = function (s) {\n const code = s.codePointAt(0);\n const charName = this.encoding[code];\n return this.charset.indexOf(charName);\n};\n\nfunction addGlyphNamesAll(font) {\n let glyph;\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n const glyphIndex = glyphIndexMap[c];\n glyph = font.glyphs.get(glyphIndex);\n glyph.addUnicode(parseInt(c));\n }\n}\n\nfunction addGlyphNamesToUnicodeMap(font) {\n font._IndexToUnicodeMap = {};\n\n const glyphIndexMap = font.tables.cmap.glyphIndexMap;\n const charCodes = Object.keys(glyphIndexMap);\n\n for (let i = 0; i < charCodes.length; i += 1) {\n const c = charCodes[i];\n let glyphIndex = glyphIndexMap[c];\n if (font._IndexToUnicodeMap[glyphIndex] === undefined) {\n font._IndexToUnicodeMap[glyphIndex] = {\n unicodes: [parseInt(c)],\n };\n } else {\n font._IndexToUnicodeMap[glyphIndex].unicodes.push(parseInt(c));\n }\n }\n}\n\n/**\n * @alias opentype.addGlyphNames\n * @param {opentype.Font}\n * @param {Object}\n */\nfunction addGlyphNames(font, opt) {\n if (opt.lowMemory) {\n addGlyphNamesToUnicodeMap(font);\n } else {\n addGlyphNamesAll(font);\n }\n}\n\nexport {\n cffStandardStrings,\n cffStandardEncoding,\n cffExpertEncoding,\n DefaultEncoding,\n CmapEncoding,\n CffEncoding,\n addGlyphNames,\n};\n","// Run-time checking of preconditions.\n\nfunction fail(message) {\n throw new Error(message);\n}\n\n// Precondition function that checks if the given predicate is true.\n// If not, it will throw an error.\nfunction argument(predicate, message) {\n if (!predicate) {\n fail(message);\n }\n}\n\nexport { fail, argument, argument as assert };\nexport default { fail, argument, assert: argument };\n","// The Glyph object\n\nimport check from './check';\nimport Path from './path';\n// import glyf from './tables/glyf' Can't be imported here, because it's a circular dependency\n\nfunction getPathDefinition(glyph, path) {\n let _path = path || new Path();\n return {\n configurable: true,\n\n get: function () {\n if (typeof _path === 'function') {\n _path = _path();\n }\n\n return _path;\n },\n\n set: function (p) {\n _path = p;\n },\n };\n}\n/**\n * @typedef GlyphOptions\n * @type Object\n * @property {string} [name] - The glyph name\n * @property {number} [unicode]\n * @property {Array} [unicodes]\n * @property {number} [xMin]\n * @property {number} [yMin]\n * @property {number} [xMax]\n * @property {number} [yMax]\n * @property {number} [advanceWidth]\n */\n\n// A Glyph is an individual mark that often corresponds to a character.\n// Some glyphs, such as ligatures, are a combination of many characters.\n// Glyphs are the basic building blocks of a font.\n//\n// The `Glyph` class contains utility methods for drawing the path and its points.\n/**\n * @exports opentype.Glyph\n * @class\n * @param {GlyphOptions}\n * @constructor\n */\nfunction Glyph(options) {\n // By putting all the code on a prototype function (which is only declared once)\n // we reduce the memory requirements for larger fonts by some 2%\n this.bindConstructorValues(options);\n}\n\n/**\n * @param {GlyphOptions}\n */\nGlyph.prototype.bindConstructorValues = function (options) {\n this.index = options.index || 0;\n\n // These three values cannot be deferred for memory optimization:\n this.name = options.name || null;\n this.unicode = options.unicode || undefined;\n this.unicodes =\n options.unicodes || options.unicode !== undefined\n ? [options.unicode]\n : [];\n\n // But by binding these values only when necessary, we reduce can\n // the memory requirements by almost 3% for larger fonts.\n if ('xMin' in options) {\n this.xMin = options.xMin;\n }\n\n if ('yMin' in options) {\n this.yMin = options.yMin;\n }\n\n if ('xMax' in options) {\n this.xMax = options.xMax;\n }\n\n if ('yMax' in options) {\n this.yMax = options.yMax;\n }\n\n if ('advanceWidth' in options) {\n this.advanceWidth = options.advanceWidth;\n }\n\n // The path for a glyph is the most memory intensive, and is bound as a value\n // with a getter/setter to ensure we actually do path parsing only once the\n // path is actually needed by anything.\n Object.defineProperty(this, 'path', getPathDefinition(this, options.path));\n};\n\n/**\n * @param {number}\n */\nGlyph.prototype.addUnicode = function (unicode) {\n if (this.unicodes.length === 0) {\n this.unicode = unicode;\n }\n\n this.unicodes.push(unicode);\n};\n\n// /**\n// * Calculate the minimum bounding box for this glyph.\n// * @return {opentype.BoundingBox}\n// */\n// Glyph.prototype.getBoundingBox = function() {\n// return this.path.getBoundingBox();\n// };\n\n/**\n * Convert the glyph to a Path we can draw on a drawing context.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {Object=} options - xScale, yScale to stretch the glyph.\n * @param {opentype.Font} if hinting is to be used, the font\n * @return {opentype.Path}\n */\nGlyph.prototype.getPath = function (x, y, fontSize, options, font) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n let commands;\n let hPoints;\n if (!options) options = {};\n let xScale = options.xScale;\n let yScale = options.yScale;\n\n if (options.hinting && font && font.hinting) {\n // in case of hinting, the hinting engine takes care\n // of scaling the points (not the path) before hinting.\n hPoints = this.path && font.hinting.exec(this, fontSize);\n // in case the hinting engine failed hPoints is undefined\n // and thus reverts to plain rending\n }\n\n if (hPoints) {\n // Call font.hinting.getCommands instead of `glyf.getPath(hPoints).commands` to avoid a circular dependency\n commands = font.hinting.getCommands(hPoints);\n x = Math.round(x);\n y = Math.round(y);\n // TODO in case of hinting xyScaling is not yet supported\n xScale = yScale = 1;\n } else {\n commands = this.path.commands;\n const scale = (1 / (this.path.unitsPerEm || 1000)) * fontSize;\n if (xScale === undefined) xScale = scale;\n if (yScale === undefined) yScale = scale;\n }\n\n const p = new Path();\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type === 'M') {\n p.moveTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === 'L') {\n p.lineTo(x + cmd.x * xScale, y + -cmd.y * yScale);\n } else if (cmd.type === 'Q') {\n p.quadraticCurveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === 'C') {\n p.curveTo(\n x + cmd.x1 * xScale,\n y + -cmd.y1 * yScale,\n x + cmd.x2 * xScale,\n y + -cmd.y2 * yScale,\n x + cmd.x * xScale,\n y + -cmd.y * yScale\n );\n } else if (cmd.type === 'Z') {\n p.closePath();\n }\n }\n\n return p;\n};\n\n/**\n * Split the glyph into contours.\n * This function is here for backwards compatibility, and to\n * provide raw access to the TrueType glyph outlines.\n * @return {Array}\n */\nGlyph.prototype.getContours = function () {\n if (this.points === undefined) {\n return [];\n }\n\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < this.points.length; i += 1) {\n const pt = this.points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(\n currentContour.length === 0,\n 'There are still points left in the current contour.'\n );\n return contours;\n};\n\n/**\n * Calculate the xMin/yMin/xMax/yMax/lsb/rsb for a Glyph.\n * @return {Object}\n */\nGlyph.prototype.getMetrics = function () {\n const commands = this.path.commands;\n const xCoords = [];\n const yCoords = [];\n for (let i = 0; i < commands.length; i += 1) {\n const cmd = commands[i];\n if (cmd.type !== 'Z') {\n xCoords.push(cmd.x);\n yCoords.push(cmd.y);\n }\n\n if (cmd.type === 'Q' || cmd.type === 'C') {\n xCoords.push(cmd.x1);\n yCoords.push(cmd.y1);\n }\n\n if (cmd.type === 'C') {\n xCoords.push(cmd.x2);\n yCoords.push(cmd.y2);\n }\n }\n\n const metrics = {\n xMin: Math.min.apply(null, xCoords),\n yMin: Math.min.apply(null, yCoords),\n xMax: Math.max.apply(null, xCoords),\n yMax: Math.max.apply(null, yCoords),\n leftSideBearing: this.leftSideBearing,\n };\n\n if (!isFinite(metrics.xMin)) {\n metrics.xMin = 0;\n }\n\n if (!isFinite(metrics.xMax)) {\n metrics.xMax = this.advanceWidth;\n }\n\n if (!isFinite(metrics.yMin)) {\n metrics.yMin = 0;\n }\n\n if (!isFinite(metrics.yMax)) {\n metrics.yMax = 0;\n }\n\n metrics.rightSideBearing =\n this.advanceWidth -\n metrics.leftSideBearing -\n (metrics.xMax - metrics.xMin);\n return metrics;\n};\n\nexport default Glyph;\n","// The GlyphSet object\n\nimport Glyph from './glyph';\n\n// Define a property on the glyph that depends on the path being loaded.\nfunction defineDependentProperty(glyph, externalName, internalName) {\n Object.defineProperty(glyph, externalName, {\n get: function () {\n // Request the path property to make sure the path is loaded.\n glyph.path; // jshint ignore:line\n return glyph[internalName];\n },\n set: function (newValue) {\n glyph[internalName] = newValue;\n },\n enumerable: true,\n configurable: true,\n });\n}\n\n/**\n * A GlyphSet represents all glyphs available in the font, but modelled using\n * a deferred glyph loader, for retrieving glyphs only once they are absolutely\n * necessary, to keep the memory footprint down.\n * @exports opentype.GlyphSet\n * @class\n * @param {opentype.Font}\n * @param {Array}\n */\nfunction GlyphSet(font, glyphs) {\n this.font = font;\n this.glyphs = {};\n if (Array.isArray(glyphs)) {\n for (let i = 0; i < glyphs.length; i++) {\n const glyph = glyphs[i];\n glyph.path.unitsPerEm = font.unitsPerEm;\n this.glyphs[i] = glyph;\n }\n }\n\n this.length = (glyphs && glyphs.length) || 0;\n}\n\n/**\n * @param {number} index\n * @return {opentype.Glyph}\n */\nGlyphSet.prototype.get = function (index) {\n // this.glyphs[index] is 'undefined' when low memory mode is on. glyph is pushed on request only.\n if (this.glyphs[index] === undefined) {\n this.font._push(index);\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n\n let glyph = this.glyphs[index];\n let unicodeObj = this.font._IndexToUnicodeMap[index];\n\n if (unicodeObj) {\n for (let j = 0; j < unicodeObj.unicodes.length; j++)\n glyph.addUnicode(unicodeObj.unicodes[j]);\n }\n\n this.glyphs[index].advanceWidth =\n this.font._hmtxTableData[index].advanceWidth;\n this.glyphs[index].leftSideBearing =\n this.font._hmtxTableData[index].leftSideBearing;\n } else {\n if (typeof this.glyphs[index] === 'function') {\n this.glyphs[index] = this.glyphs[index]();\n }\n }\n\n return this.glyphs[index];\n};\n\n/**\n * @param {number} index\n * @param {Object}\n */\nGlyphSet.prototype.push = function (index, loader) {\n this.glyphs[index] = loader;\n this.length++;\n};\n\n/**\n * @alias opentype.glyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @return {opentype.Glyph}\n */\nfunction glyphLoader(font, index) {\n return new Glyph({ index: index, font: font });\n}\n\n/**\n * Generate a stub glyph that can be filled with all metadata *except*\n * the \"points\" and \"path\" properties, which must be loaded only once\n * the glyph's path is actually requested for text shaping.\n * @alias opentype.ttfGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseGlyph\n * @param {Object} data\n * @param {number} position\n * @param {Function} buildPath\n * @return {opentype.Glyph}\n */\nfunction ttfGlyphLoader(font, index, parseGlyph, data, position, buildPath) {\n return function () {\n const glyph = new Glyph({ index: index, font: font });\n\n glyph.path = function () {\n parseGlyph(glyph, data, position);\n const path = buildPath(font.glyphs, glyph);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n defineDependentProperty(glyph, 'xMin', '_xMin');\n defineDependentProperty(glyph, 'xMax', '_xMax');\n defineDependentProperty(glyph, 'yMin', '_yMin');\n defineDependentProperty(glyph, 'yMax', '_yMax');\n\n return glyph;\n };\n}\n/**\n * @alias opentype.cffGlyphLoader\n * @param {opentype.Font} font\n * @param {number} index\n * @param {Function} parseCFFCharstring\n * @param {string} charstring\n * @return {opentype.Glyph}\n */\nfunction cffGlyphLoader(font, index, parseCFFCharstring, charstring) {\n return function () {\n const glyph = new Glyph({ index: index, font: font });\n\n glyph.path = function () {\n const path = parseCFFCharstring(font, glyph, charstring);\n path.unitsPerEm = font.unitsPerEm;\n return path;\n };\n\n return glyph;\n };\n}\n\nexport default { GlyphSet, glyphLoader, ttfGlyphLoader, cffGlyphLoader };\n","// The Layout object is the prototype of Substitution objects, and provides\n// utility methods to manipulate common layout tables (GPOS, GSUB, GDEF...)\n\nimport check from './check';\n\nfunction searchTag(arr, tag) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid].tag;\n if (val === tag) {\n return imid;\n } else if (val < tag) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\nfunction binSearch(arr, value) {\n /* jshint bitwise: false */\n let imin = 0;\n let imax = arr.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n const val = arr[imid];\n if (val === value) {\n return imid;\n } else if (val < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n // Not found: return -1-insertion point\n return -imin - 1;\n}\n\n// binary search in a list of ranges (coverage, class definition)\nfunction searchRange(ranges, value) {\n // jshint bitwise: false\n let range;\n let imin = 0;\n let imax = ranges.length - 1;\n while (imin <= imax) {\n const imid = (imin + imax) >>> 1;\n range = ranges[imid];\n const start = range.start;\n if (start === value) {\n return range;\n } else if (start < value) {\n imin = imid + 1;\n } else {\n imax = imid - 1;\n }\n }\n if (imin > 0) {\n range = ranges[imin - 1];\n if (value > range.end) return 0;\n return range;\n }\n}\n\n/**\n * @exports opentype.Layout\n * @class\n */\nfunction Layout(font, tableName) {\n this.font = font;\n this.tableName = tableName;\n}\n\nLayout.prototype = {\n /**\n * Binary search an object by \"tag\" property\n * @instance\n * @function searchTag\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {string} tag\n * @return {number}\n */\n searchTag: searchTag,\n\n /**\n * Binary search in a list of numbers\n * @instance\n * @function binSearch\n * @memberof opentype.Layout\n * @param {Array} arr\n * @param {number} value\n * @return {number}\n */\n binSearch: binSearch,\n\n /**\n * Get or create the Layout table (GSUB, GPOS etc).\n * @param {boolean} create - Whether to create a new one.\n * @return {Object} The GSUB or GPOS table.\n */\n getTable: function (create) {\n let layout = this.font.tables[this.tableName];\n if (!layout && create) {\n layout = this.font.tables[this.tableName] =\n this.createDefaultTable();\n }\n return layout;\n },\n\n /**\n * Returns the best bet for a script name.\n * Returns 'DFLT' if it exists.\n * If not, returns 'latn' if it exists.\n * If neither exist, returns undefined.\n */\n getDefaultScriptName: function () {\n let layout = this.getTable();\n if (!layout) {\n return;\n }\n let hasLatn = false;\n for (let i = 0; i < layout.scripts.length; i++) {\n const name = layout.scripts[i].tag;\n if (name === 'DFLT') return name;\n if (name === 'latn') hasLatn = true;\n }\n if (hasLatn) return 'latn';\n },\n\n /**\n * Returns all LangSysRecords in the given script.\n * @instance\n * @param {string} [script='DFLT']\n * @param {boolean} create - forces the creation of this script table if it doesn't exist.\n * @return {Object} An object with tag and script properties.\n */\n getScriptTable: function (script, create) {\n const layout = this.getTable(create);\n if (layout) {\n script = script || 'DFLT';\n const scripts = layout.scripts;\n const pos = searchTag(layout.scripts, script);\n if (pos >= 0) {\n return scripts[pos].script;\n } else if (create) {\n const scr = {\n tag: script,\n script: {\n defaultLangSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n langSysRecords: [],\n },\n };\n scripts.splice(-1 - pos, 0, scr);\n return scr.script;\n }\n }\n },\n\n /**\n * Returns a language system table\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {boolean} create - forces the creation of this langSysTable if it doesn't exist.\n * @return {Object}\n */\n getLangSysTable: function (script, language, create) {\n const scriptTable = this.getScriptTable(script, create);\n if (scriptTable) {\n if (!language || language === 'dflt' || language === 'DFLT') {\n return scriptTable.defaultLangSys;\n }\n const pos = searchTag(scriptTable.langSysRecords, language);\n if (pos >= 0) {\n return scriptTable.langSysRecords[pos].langSys;\n } else if (create) {\n const langSysRecord = {\n tag: language,\n langSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n };\n scriptTable.langSysRecords.splice(-1 - pos, 0, langSysRecord);\n return langSysRecord.langSys;\n }\n }\n },\n\n /**\n * Get a specific feature table.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - One of the codes listed at https://www.microsoft.com/typography/OTSPEC/featurelist.htm\n * @param {boolean} create - forces the creation of the feature table if it doesn't exist.\n * @return {Object}\n */\n getFeatureTable: function (script, language, feature, create) {\n const langSysTable = this.getLangSysTable(script, language, create);\n if (langSysTable) {\n let featureRecord;\n const featIndexes = langSysTable.featureIndexes;\n const allFeatures = this.font.tables[this.tableName].features;\n // The FeatureIndex array of indices is in arbitrary order,\n // even if allFeatures is sorted alphabetically by feature tag.\n for (let i = 0; i < featIndexes.length; i++) {\n featureRecord = allFeatures[featIndexes[i]];\n if (featureRecord.tag === feature) {\n return featureRecord.feature;\n }\n }\n if (create) {\n const index = allFeatures.length;\n // Automatic ordering of features would require to shift feature indexes in the script list.\n check.assert(\n index === 0 || feature >= allFeatures[index - 1].tag,\n 'Features must be added in alphabetical order.'\n );\n featureRecord = {\n tag: feature,\n feature: { params: 0, lookupListIndexes: [] },\n };\n allFeatures.push(featureRecord);\n featIndexes.push(index);\n return featureRecord.feature;\n }\n }\n },\n\n /**\n * Get the lookup tables of a given type for a script/language/feature.\n * @instance\n * @param {string} [script='DFLT']\n * @param {string} [language='dlft']\n * @param {string} feature - 4-letter feature code\n * @param {number} lookupType - 1 to 9\n * @param {boolean} create - forces the creation of the lookup table if it doesn't exist, with no subtables.\n * @return {Object[]}\n */\n getLookupTables: function (script, language, feature, lookupType, create) {\n const featureTable = this.getFeatureTable(\n script,\n language,\n feature,\n create\n );\n const tables = [];\n if (featureTable) {\n let lookupTable;\n const lookupListIndexes = featureTable.lookupListIndexes;\n const allLookups = this.font.tables[this.tableName].lookups;\n // lookupListIndexes are in no particular order, so use naive search.\n for (let i = 0; i < lookupListIndexes.length; i++) {\n lookupTable = allLookups[lookupListIndexes[i]];\n if (lookupTable.lookupType === lookupType) {\n tables.push(lookupTable);\n }\n }\n if (tables.length === 0 && create) {\n lookupTable = {\n lookupType: lookupType,\n lookupFlag: 0,\n subtables: [],\n markFilteringSet: undefined,\n };\n const index = allLookups.length;\n allLookups.push(lookupTable);\n lookupListIndexes.push(index);\n return [lookupTable];\n }\n }\n return tables;\n },\n\n /**\n * Find a glyph in a class definition table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#class-definition-table\n * @param {object} classDefTable - an OpenType Layout class definition table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getGlyphClass: function (classDefTable, glyphIndex) {\n switch (classDefTable.format) {\n case 1:\n if (\n classDefTable.startGlyph <= glyphIndex &&\n glyphIndex <\n classDefTable.startGlyph + classDefTable.classes.length\n ) {\n return classDefTable.classes[\n glyphIndex - classDefTable.startGlyph\n ];\n }\n return 0;\n case 2:\n const range = searchRange(classDefTable.ranges, glyphIndex);\n return range ? range.classId : 0;\n }\n },\n\n /**\n * Find a glyph in a coverage table\n * https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#coverage-table\n * @param {object} coverageTable - an OpenType Layout coverage table\n * @param {number} glyphIndex - the index of the glyph to find\n * @returns {number} -1 if not found\n */\n getCoverageIndex: function (coverageTable, glyphIndex) {\n switch (coverageTable.format) {\n case 1:\n const index = binSearch(coverageTable.glyphs, glyphIndex);\n return index >= 0 ? index : -1;\n case 2:\n const range = searchRange(coverageTable.ranges, glyphIndex);\n return range ? range.index + glyphIndex - range.start : -1;\n }\n },\n\n /**\n * Returns the list of glyph indexes of a coverage table.\n * Format 1: the list is stored raw\n * Format 2: compact list as range records.\n * @instance\n * @param {Object} coverageTable\n * @return {Array}\n */\n expandCoverage: function (coverageTable) {\n if (coverageTable.format === 1) {\n return coverageTable.glyphs;\n } else {\n const glyphs = [];\n const ranges = coverageTable.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n const start = range.start;\n const end = range.end;\n for (let j = start; j <= end; j++) {\n glyphs.push(j);\n }\n }\n return glyphs;\n }\n },\n};\n\nexport default Layout;\n","// The Position object provides utility methods to manipulate\n// the GPOS position table.\n\nimport Layout from './layout';\n\n/**\n * @exports opentype.Position\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Position(font) {\n Layout.call(this, font, 'gpos');\n}\n\nPosition.prototype = Layout.prototype;\n\n/**\n * Init some data for faster and easier access later.\n */\nPosition.prototype.init = function() {\n const script = this.getDefaultScriptName();\n this.defaultKerningTables = this.getKerningTables(script);\n};\n\n/**\n * Find a glyph pair in a list of lookup tables of type 2 and retrieve the xAdvance kerning value.\n *\n * @param {integer} leftIndex - left glyph index\n * @param {integer} rightIndex - right glyph index\n * @returns {integer}\n */\nPosition.prototype.getKerningValue = function(kerningLookups, leftIndex, rightIndex) {\n for (let i = 0; i < kerningLookups.length; i++) {\n const subtables = kerningLookups[i].subtables;\n for (let j = 0; j < subtables.length; j++) {\n const subtable = subtables[j];\n const covIndex = this.getCoverageIndex(subtable.coverage, leftIndex);\n if (covIndex < 0) continue;\n switch (subtable.posFormat) {\n case 1:\n // Search Pair Adjustment Positioning Format 1\n let pairSet = subtable.pairSets[covIndex];\n for (let k = 0; k < pairSet.length; k++) {\n let pair = pairSet[k];\n if (pair.secondGlyph === rightIndex) {\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n break; // left glyph found, not right glyph - try next subtable\n case 2:\n // Search Pair Adjustment Positioning Format 2\n const class1 = this.getGlyphClass(subtable.classDef1, leftIndex);\n const class2 = this.getGlyphClass(subtable.classDef2, rightIndex);\n const pair = subtable.classRecords[class1][class2];\n return pair.value1 && pair.value1.xAdvance || 0;\n }\n }\n }\n return 0;\n};\n\n/**\n * List all kerning lookup tables.\n *\n * @param {string} [script='DFLT'] - use font.position.getDefaultScriptName() for a better default value\n * @param {string} [language='dflt']\n * @return {object[]} The list of kerning lookup tables (may be empty), or undefined if there is no GPOS table (and we should use the kern table)\n */\nPosition.prototype.getKerningTables = function(script, language) {\n if (this.font.tables.gpos) {\n return this.getLookupTables(script, language, 'kern', 2);\n }\n};\n\nexport default Position;\n","// The Substitution object provides utility methods to manipulate\n// the GSUB substitution table.\n\nimport check from './check';\nimport Layout from './layout';\n\n/**\n * @exports opentype.Substitution\n * @class\n * @extends opentype.Layout\n * @param {opentype.Font}\n * @constructor\n */\nfunction Substitution(font) {\n Layout.call(this, font, 'gsub');\n}\n\n// Check if 2 arrays of primitives are equal.\nfunction arraysEqual(ar1, ar2) {\n const n = ar1.length;\n if (n !== ar2.length) {\n return false;\n }\n for (let i = 0; i < n; i++) {\n if (ar1[i] !== ar2[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Find the first subtable of a lookup table in a particular format.\nfunction getSubstFormat(lookupTable, format, defaultSubtable) {\n const subtables = lookupTable.subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n if (subtable.substFormat === format) {\n return subtable;\n }\n }\n if (defaultSubtable) {\n subtables.push(defaultSubtable);\n return defaultSubtable;\n }\n return undefined;\n}\n\nSubstitution.prototype = Layout.prototype;\n\n/**\n * Create a default GSUB table.\n * @return {Object} gsub - The GSUB table.\n */\nSubstitution.prototype.createDefaultTable = function () {\n // Generate a default empty GSUB table with just a DFLT script and dflt lang sys.\n return {\n version: 1,\n scripts: [\n {\n tag: 'DFLT',\n script: {\n defaultLangSys: {\n reserved: 0,\n reqFeatureIndex: 0xffff,\n featureIndexes: [],\n },\n langSysRecords: [],\n },\n },\n ],\n features: [],\n lookups: [],\n };\n};\n\n/**\n * List all single substitutions (lookup type 1) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt', 'ss01'...)\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getSingle = function (feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 1);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n if (subtable.substFormat === 1) {\n const delta = subtable.deltaGlyphId;\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n substitutions.push({ sub: glyph, by: glyph + delta });\n }\n } else {\n const substitute = subtable.substitute;\n for (j = 0; j < glyphs.length; j++) {\n substitutions.push({ sub: glyphs[j], by: substitute[j] });\n }\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all multiple substitutions (lookup type 2) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('ccmp', 'stch')\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getMultiple = function (feature, script, language) {\n const substitutions = [];\n const lookupTables = this.getLookupTables(script, language, feature, 2);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n let j;\n\n for (j = 0; j < glyphs.length; j++) {\n const glyph = glyphs[j];\n const replacements = subtable.sequences[j];\n substitutions.push({ sub: glyph, by: replacements });\n }\n }\n }\n return substitutions;\n};\n\n/**\n * List all alternates (lookup type 3) for a given script, language, and feature.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @param {string} feature - 4-character feature name ('aalt', 'salt'...)\n * @return {Array} alternates - The list of alternates\n */\nSubstitution.prototype.getAlternates = function (feature, script, language) {\n const alternates = [];\n const lookupTables = this.getLookupTables(script, language, feature, 3);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const alternateSets = subtable.alternateSets;\n for (let j = 0; j < glyphs.length; j++) {\n alternates.push({ sub: glyphs[j], by: alternateSets[j] });\n }\n }\n }\n return alternates;\n};\n\n/**\n * List all ligatures (lookup type 4) for a given script, language, and feature.\n * The result is an array of ligature objects like { sub: [ids], by: id }\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} ligatures - The list of ligatures.\n */\nSubstitution.prototype.getLigatures = function (feature, script, language) {\n const ligatures = [];\n const lookupTables = this.getLookupTables(script, language, feature, 4);\n for (let idx = 0; idx < lookupTables.length; idx++) {\n const subtables = lookupTables[idx].subtables;\n for (let i = 0; i < subtables.length; i++) {\n const subtable = subtables[i];\n const glyphs = this.expandCoverage(subtable.coverage);\n const ligatureSets = subtable.ligatureSets;\n for (let j = 0; j < glyphs.length; j++) {\n const startGlyph = glyphs[j];\n const ligSet = ligatureSets[j];\n for (let k = 0; k < ligSet.length; k++) {\n const lig = ligSet[k];\n ligatures.push({\n sub: [startGlyph].concat(lig.components),\n by: lig.ligGlyph,\n });\n }\n }\n }\n }\n return ligatures;\n};\n\n/**\n * Add or modify a single substitution (lookup type 1)\n * Format 2, more flexible, is always used.\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: id } (format 1 is not supported)\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addSingle = function (\n feature,\n substitution,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 1,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 2, {\n // lookup type 1 subtable, format 2, coverage format 1\n substFormat: 2,\n coverage: { format: 1, glyphs: [] },\n substitute: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Single: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.substitute.splice(pos, 0, 0);\n }\n subtable.substitute[pos] = substitution.by;\n};\n\n/**\n * Add or modify a multiple substitution (lookup type 2)\n * @param {string} feature - 4-letter feature name ('ccmp', 'stch')\n * @param {Object} substitution - { sub: id, by: [id] } for format 2.\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addMultiple = function (\n feature,\n substitution,\n script,\n language\n) {\n check.assert(\n substitution.by instanceof Array && substitution.by.length > 1,\n 'Multiple: \"by\" must be an array of two or more ids'\n );\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 2,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 2 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n sequences: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Multiple: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.sequences.splice(pos, 0, 0);\n }\n subtable.sequences[pos] = substitution.by;\n};\n\n/**\n * Add or modify an alternate substitution (lookup type 3)\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} substitution - { sub: id, by: [ids] }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addAlternate = function (\n feature,\n substitution,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 3,\n true\n )[0];\n const subtable = getSubstFormat(lookupTable, 1, {\n // lookup type 3 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n alternateSets: [],\n });\n check.assert(\n subtable.coverage.format === 1,\n 'Alternate: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = substitution.sub;\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos < 0) {\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.alternateSets.splice(pos, 0, 0);\n }\n subtable.alternateSets[pos] = substitution.by;\n};\n\n/**\n * Add a ligature (lookup type 4)\n * Ligatures with more components must be stored ahead of those with fewer components in order to be found\n * @param {string} feature - 4-letter feature name ('liga', 'rlig', 'dlig'...)\n * @param {Object} ligature - { sub: [ids], by: id }\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.addLigature = function (\n feature,\n ligature,\n script,\n language\n) {\n const lookupTable = this.getLookupTables(\n script,\n language,\n feature,\n 4,\n true\n )[0];\n let subtable = lookupTable.subtables[0];\n if (!subtable) {\n subtable = {\n // lookup type 4 subtable, format 1, coverage format 1\n substFormat: 1,\n coverage: { format: 1, glyphs: [] },\n ligatureSets: [],\n };\n lookupTable.subtables[0] = subtable;\n }\n check.assert(\n subtable.coverage.format === 1,\n 'Ligature: unable to modify coverage table format ' +\n subtable.coverage.format\n );\n const coverageGlyph = ligature.sub[0];\n const ligComponents = ligature.sub.slice(1);\n const ligatureTable = {\n ligGlyph: ligature.by,\n components: ligComponents,\n };\n let pos = this.binSearch(subtable.coverage.glyphs, coverageGlyph);\n if (pos >= 0) {\n // ligatureSet already exists\n const ligatureSet = subtable.ligatureSets[pos];\n for (let i = 0; i < ligatureSet.length; i++) {\n // If ligature already exists, return.\n if (arraysEqual(ligatureSet[i].components, ligComponents)) {\n return;\n }\n }\n // ligature does not exist: add it.\n ligatureSet.push(ligatureTable);\n } else {\n // Create a new ligatureSet and add coverage for the first glyph.\n pos = -1 - pos;\n subtable.coverage.glyphs.splice(pos, 0, coverageGlyph);\n subtable.ligatureSets.splice(pos, 0, [ligatureTable]);\n }\n};\n\n/**\n * List all feature data for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n * @return {Array} substitutions - The list of substitutions.\n */\nSubstitution.prototype.getFeature = function (feature, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.getSingle(feature, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n return this.getSingle(feature, script, language).concat(\n this.getAlternates(feature, script, language)\n );\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.getLigatures(feature, script, language);\n case 'ccmp':\n return this.getMultiple(feature, script, language).concat(\n this.getLigatures(feature, script, language)\n );\n case 'stch':\n return this.getMultiple(feature, script, language);\n }\n return undefined;\n};\n\n/**\n * Add a substitution to a feature for a given script and language.\n * @param {string} feature - 4-letter feature name\n * @param {Object} sub - the substitution to add (an object like { sub: id or [ids], by: id or [ids] })\n * @param {string} [script='DFLT']\n * @param {string} [language='dflt']\n */\nSubstitution.prototype.add = function (feature, sub, script, language) {\n if (/ss\\d\\d/.test(feature)) {\n // ss01 - ss20\n return this.addSingle(feature, sub, script, language);\n }\n switch (feature) {\n case 'aalt':\n case 'salt':\n if (typeof sub.by === 'number') {\n return this.addSingle(feature, sub, script, language);\n }\n return this.addAlternate(feature, sub, script, language);\n case 'dlig':\n case 'liga':\n case 'rlig':\n return this.addLigature(feature, sub, script, language);\n case 'ccmp':\n if (sub.by instanceof Array) {\n return this.addMultiple(feature, sub, script, language);\n }\n return this.addLigature(feature, sub, script, language);\n }\n return undefined;\n};\n\nexport default Substitution;\n","function nodeBufferToArrayBuffer(buffer) {\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n\n return ab;\n}\n\nfunction checkArgument(expression, message) {\n if (!expression) {\n throw message;\n }\n}\n\nexport { nodeBufferToArrayBuffer, checkArgument };\n","// Parsing utility functions\n\nimport check from './check';\n\n// Retrieve an unsigned byte from the DataView.\nfunction getByte(dataView, offset) {\n return dataView.getUint8(offset);\n}\n\n// Retrieve an unsigned 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getUShort(dataView, offset) {\n return dataView.getUint16(offset, false);\n}\n\n// Retrieve a signed 16-bit short from the DataView.\n// The value is stored in big endian.\nfunction getShort(dataView, offset) {\n return dataView.getInt16(offset, false);\n}\n\n// Retrieve an unsigned 32-bit long from the DataView.\n// The value is stored in big endian.\nfunction getULong(dataView, offset) {\n return dataView.getUint32(offset, false);\n}\n\n// Retrieve a 32-bit signed fixed-point number (16.16) from the DataView.\n// The value is stored in big endian.\nfunction getFixed(dataView, offset) {\n const decimal = dataView.getInt16(offset, false);\n const fraction = dataView.getUint16(offset + 2, false);\n return decimal + fraction / 65535;\n}\n\n// Retrieve a 4-character tag from the DataView.\n// Tags are used to identify tables.\nfunction getTag(dataView, offset) {\n let tag = '';\n for (let i = offset; i < offset + 4; i += 1) {\n tag += String.fromCharCode(dataView.getInt8(i));\n }\n\n return tag;\n}\n\n// Retrieve an offset from the DataView.\n// Offsets are 1 to 4 bytes in length, depending on the offSize argument.\nfunction getOffset(dataView, offset, offSize) {\n let v = 0;\n for (let i = 0; i < offSize; i += 1) {\n v <<= 8;\n v += dataView.getUint8(offset + i);\n }\n\n return v;\n}\n\n// Retrieve a number of bytes from start offset to the end offset from the DataView.\nfunction getBytes(dataView, startOffset, endOffset) {\n const bytes = [];\n for (let i = startOffset; i < endOffset; i += 1) {\n bytes.push(dataView.getUint8(i));\n }\n\n return bytes;\n}\n\n// Convert the list of bytes to a string.\nfunction bytesToString(bytes) {\n let s = '';\n for (let i = 0; i < bytes.length; i += 1) {\n s += String.fromCharCode(bytes[i]);\n }\n\n return s;\n}\n\nconst typeOffsets = {\n byte: 1,\n uShort: 2,\n short: 2,\n uLong: 4,\n fixed: 4,\n longDateTime: 8,\n tag: 4\n};\n\n// A stateful parser that changes the offset whenever a value is retrieved.\n// The data is a DataView.\nfunction Parser(data, offset) {\n this.data = data;\n this.offset = offset;\n this.relativeOffset = 0;\n}\n\nParser.prototype.parseByte = function() {\n const v = this.data.getUint8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseChar = function() {\n const v = this.data.getInt8(this.offset + this.relativeOffset);\n this.relativeOffset += 1;\n return v;\n};\n\nParser.prototype.parseCard8 = Parser.prototype.parseByte;\n\nParser.prototype.parseUShort = function() {\n const v = this.data.getUint16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseCard16 = Parser.prototype.parseUShort;\nParser.prototype.parseSID = Parser.prototype.parseUShort;\nParser.prototype.parseOffset16 = Parser.prototype.parseUShort;\n\nParser.prototype.parseShort = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset);\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseF2Dot14 = function() {\n const v = this.data.getInt16(this.offset + this.relativeOffset) / 16384;\n this.relativeOffset += 2;\n return v;\n};\n\nParser.prototype.parseULong = function() {\n const v = getULong(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseOffset32 = Parser.prototype.parseULong;\n\nParser.prototype.parseFixed = function() {\n const v = getFixed(this.data, this.offset + this.relativeOffset);\n this.relativeOffset += 4;\n return v;\n};\n\nParser.prototype.parseString = function(length) {\n const dataView = this.data;\n const offset = this.offset + this.relativeOffset;\n let string = '';\n this.relativeOffset += length;\n for (let i = 0; i < length; i++) {\n string += String.fromCharCode(dataView.getUint8(offset + i));\n }\n\n return string;\n};\n\nParser.prototype.parseTag = function() {\n return this.parseString(4);\n};\n\n// LONGDATETIME is a 64-bit integer.\n// JavaScript and unix timestamps traditionally use 32 bits, so we\n// only take the last 32 bits.\n// + Since until 2038 those bits will be filled by zeros we can ignore them.\nParser.prototype.parseLongDateTime = function() {\n let v = getULong(this.data, this.offset + this.relativeOffset + 4);\n // Subtract seconds between 01/01/1904 and 01/01/1970\n // to convert Apple Mac timestamp to Standard Unix timestamp\n v -= 2082844800;\n this.relativeOffset += 8;\n return v;\n};\n\nParser.prototype.parseVersion = function(minorBase) {\n const major = getUShort(this.data, this.offset + this.relativeOffset);\n\n // How to interpret the minor version is very vague in the spec. 0x5000 is 5, 0x1000 is 1\n // Default returns the correct number if minor = 0xN000 where N is 0-9\n // Set minorBase to 1 for tables that use minor = N where N is 0-9\n const minor = getUShort(this.data, this.offset + this.relativeOffset + 2);\n this.relativeOffset += 4;\n if (minorBase === undefined) minorBase = 0x1000;\n return major + minor / minorBase / 10;\n};\n\nParser.prototype.skip = function(type, amount) {\n if (amount === undefined) {\n amount = 1;\n }\n\n this.relativeOffset += typeOffsets[type] * amount;\n};\n\n///// Parsing lists and records ///////////////////////////////\n\n// Parse a list of 32 bit unsigned integers.\nParser.prototype.parseULongList = function(count) {\n if (count === undefined) { count = this.parseULong(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint32(offset);\n offset += 4;\n }\n\n this.relativeOffset += count * 4;\n return offsets;\n};\n\n// Parse a list of 16 bit unsigned integers. The length of the list can be read on the stream\n// or provided as an argument.\nParser.prototype.parseOffset16List =\nParser.prototype.parseUShortList = function(count) {\n if (count === undefined) { count = this.parseUShort(); }\n const offsets = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n offsets[i] = dataView.getUint16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return offsets;\n};\n\n// Parses a list of 16 bit signed integers.\nParser.prototype.parseShortList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getInt16(offset);\n offset += 2;\n }\n\n this.relativeOffset += count * 2;\n return list;\n};\n\n// Parses a list of bytes.\nParser.prototype.parseByteList = function(count) {\n const list = new Array(count);\n const dataView = this.data;\n let offset = this.offset + this.relativeOffset;\n for (let i = 0; i < count; i++) {\n list[i] = dataView.getUint8(offset++);\n }\n\n this.relativeOffset += count;\n return list;\n};\n\n/**\n * Parse a list of items.\n * Record count is optional, if omitted it is read from the stream.\n * itemCallback is one of the Parser methods.\n */\nParser.prototype.parseList = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseUShort();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\nParser.prototype.parseList32 = function(count, itemCallback) {\n if (!itemCallback) {\n itemCallback = count;\n count = this.parseULong();\n }\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n list[i] = itemCallback.call(this);\n }\n return list;\n};\n\n/**\n * Parse a list of records.\n * Record count is optional, if omitted it is read from the stream.\n * Example of recordDescription: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\n */\nParser.prototype.parseRecordList = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseUShort();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\nParser.prototype.parseRecordList32 = function(count, recordDescription) {\n // If the count argument is absent, read it in the stream.\n if (!recordDescription) {\n recordDescription = count;\n count = this.parseULong();\n }\n const records = new Array(count);\n const fields = Object.keys(recordDescription);\n for (let i = 0; i < count; i++) {\n const rec = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = recordDescription[fieldName];\n rec[fieldName] = fieldType.call(this);\n }\n records[i] = rec;\n }\n return records;\n};\n\n// Parse a data structure into an object\n// Example of description: { sequenceIndex: Parser.uShort, lookupListIndex: Parser.uShort }\nParser.prototype.parseStruct = function(description) {\n if (typeof description === 'function') {\n return description.call(this);\n } else {\n const fields = Object.keys(description);\n const struct = {};\n for (let j = 0; j < fields.length; j++) {\n const fieldName = fields[j];\n const fieldType = description[fieldName];\n struct[fieldName] = fieldType.call(this);\n }\n return struct;\n }\n};\n\n/**\n * Parse a GPOS valueRecord\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat is optional, if omitted it is read from the stream.\n */\nParser.prototype.parseValueRecord = function(valueFormat) {\n if (valueFormat === undefined) {\n valueFormat = this.parseUShort();\n }\n if (valueFormat === 0) {\n // valueFormat2 in kerning pairs is most often 0\n // in this case return undefined instead of an empty object, to save space\n return;\n }\n const valueRecord = {};\n\n if (valueFormat & 0x0001) { valueRecord.xPlacement = this.parseShort(); }\n if (valueFormat & 0x0002) { valueRecord.yPlacement = this.parseShort(); }\n if (valueFormat & 0x0004) { valueRecord.xAdvance = this.parseShort(); }\n if (valueFormat & 0x0008) { valueRecord.yAdvance = this.parseShort(); }\n\n // Device table (non-variable font) / VariationIndex table (variable font) not supported\n // https://docs.microsoft.com/fr-fr/typography/opentype/spec/chapter2#devVarIdxTbls\n if (valueFormat & 0x0010) { valueRecord.xPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0020) { valueRecord.yPlaDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0040) { valueRecord.xAdvDevice = undefined; this.parseShort(); }\n if (valueFormat & 0x0080) { valueRecord.yAdvDevice = undefined; this.parseShort(); }\n\n return valueRecord;\n};\n\n/**\n * Parse a list of GPOS valueRecords\n * https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#value-record\n * valueFormat and valueCount are read from the stream.\n */\nParser.prototype.parseValueRecordList = function() {\n const valueFormat = this.parseUShort();\n const valueCount = this.parseUShort();\n const values = new Array(valueCount);\n for (let i = 0; i < valueCount; i++) {\n values[i] = this.parseValueRecord(valueFormat);\n }\n return values;\n};\n\nParser.prototype.parsePointer = function(description) {\n const structOffset = this.parseOffset16();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\nParser.prototype.parsePointer32 = function(description) {\n const structOffset = this.parseOffset32();\n if (structOffset > 0) {\n // NULL offset => return undefined\n return new Parser(this.data, this.offset + structOffset).parseStruct(description);\n }\n return undefined;\n};\n\n/**\n * Parse a list of offsets to lists of 16-bit integers,\n * or a list of offsets to lists of offsets to any kind of items.\n * If itemCallback is not provided, a list of list of UShort is assumed.\n * If provided, itemCallback is called on each item and must parse the item.\n * See examples in tables/gsub.js\n */\nParser.prototype.parseListOfLists = function(itemCallback) {\n const offsets = this.parseOffset16List();\n const count = offsets.length;\n const relativeOffset = this.relativeOffset;\n const list = new Array(count);\n for (let i = 0; i < count; i++) {\n const start = offsets[i];\n if (start === 0) {\n // NULL offset\n // Add i as owned property to list. Convenient with assert.\n list[i] = undefined;\n continue;\n }\n this.relativeOffset = start;\n if (itemCallback) {\n const subOffsets = this.parseOffset16List();\n const subList = new Array(subOffsets.length);\n for (let j = 0; j < subOffsets.length; j++) {\n this.relativeOffset = start + subOffsets[j];\n subList[j] = itemCallback.call(this);\n }\n list[i] = subList;\n } else {\n list[i] = this.parseUShortList();\n }\n }\n this.relativeOffset = relativeOffset;\n return list;\n};\n\n///// Complex tables parsing //////////////////////////////////\n\n// Parse a coverage table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n// parser.offset must point to the start of the table containing the coverage.\nParser.prototype.parseCoverage = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n const count = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n glyphs: this.parseUShortList(count)\n };\n } else if (format === 2) {\n const ranges = new Array(count);\n for (let i = 0; i < count; i++) {\n ranges[i] = {\n start: this.parseUShort(),\n end: this.parseUShort(),\n index: this.parseUShort()\n };\n }\n return {\n format: 2,\n ranges: ranges\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': Coverage format must be 1 or 2.');\n};\n\n// Parse a Class Definition Table in a GSUB, GPOS or GDEF table.\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\nParser.prototype.parseClassDef = function() {\n const startOffset = this.offset + this.relativeOffset;\n const format = this.parseUShort();\n if (format === 1) {\n return {\n format: 1,\n startGlyph: this.parseUShort(),\n classes: this.parseUShortList()\n };\n } else if (format === 2) {\n return {\n format: 2,\n ranges: this.parseRecordList({\n start: Parser.uShort,\n end: Parser.uShort,\n classId: Parser.uShort\n })\n };\n }\n throw new Error('0x' + startOffset.toString(16) + ': ClassDef format must be 1 or 2.');\n};\n\n///// Static methods ///////////////////////////////////\n// These convenience methods can be used as callbacks and should be called with \"this\" context set to a Parser instance.\n\nParser.list = function(count, itemCallback) {\n return function() {\n return this.parseList(count, itemCallback);\n };\n};\n\nParser.list32 = function(count, itemCallback) {\n return function() {\n return this.parseList32(count, itemCallback);\n };\n};\n\nParser.recordList = function(count, recordDescription) {\n return function() {\n return this.parseRecordList(count, recordDescription);\n };\n};\n\nParser.recordList32 = function(count, recordDescription) {\n return function() {\n return this.parseRecordList32(count, recordDescription);\n };\n};\n\nParser.pointer = function(description) {\n return function() {\n return this.parsePointer(description);\n };\n};\n\nParser.pointer32 = function(description) {\n return function() {\n return this.parsePointer32(description);\n };\n};\n\nParser.tag = Parser.prototype.parseTag;\nParser.byte = Parser.prototype.parseByte;\nParser.uShort = Parser.offset16 = Parser.prototype.parseUShort;\nParser.uShortList = Parser.prototype.parseUShortList;\nParser.uLong = Parser.offset32 = Parser.prototype.parseULong;\nParser.uLongList = Parser.prototype.parseULongList;\nParser.struct = Parser.prototype.parseStruct;\nParser.coverage = Parser.prototype.parseCoverage;\nParser.classDef = Parser.prototype.parseClassDef;\n\n///// Script, Feature, Lookup lists ///////////////////////////////////////////////\n// https://www.microsoft.com/typography/OTSPEC/chapter2.htm\n\nconst langSysTable = {\n reserved: Parser.uShort,\n reqFeatureIndex: Parser.uShort,\n featureIndexes: Parser.uShortList\n};\n\nParser.prototype.parseScriptList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n script: Parser.pointer({\n defaultLangSys: Parser.pointer(langSysTable),\n langSysRecords: Parser.recordList({\n tag: Parser.tag,\n langSys: Parser.pointer(langSysTable)\n })\n })\n })) || [];\n};\n\nParser.prototype.parseFeatureList = function() {\n return this.parsePointer(Parser.recordList({\n tag: Parser.tag,\n feature: Parser.pointer({\n featureParams: Parser.offset16,\n lookupListIndexes: Parser.uShortList\n })\n })) || [];\n};\n\nParser.prototype.parseLookupList = function(lookupTableParsers) {\n return this.parsePointer(Parser.list(Parser.pointer(function() {\n const lookupType = this.parseUShort();\n check.argument(1 <= lookupType && lookupType <= 9, 'GPOS/GSUB lookup type ' + lookupType + ' unknown.');\n const lookupFlag = this.parseUShort();\n const useMarkFilteringSet = lookupFlag & 0x10;\n return {\n lookupType: lookupType,\n lookupFlag: lookupFlag,\n subtables: this.parseList(Parser.pointer(lookupTableParsers[lookupType])),\n markFilteringSet: useMarkFilteringSet ? this.parseUShort() : undefined\n };\n }))) || [];\n};\n\nParser.prototype.parseFeatureVariationsList = function() {\n return this.parsePointer32(function() {\n const majorVersion = this.parseUShort();\n const minorVersion = this.parseUShort();\n check.argument(majorVersion === 1 && minorVersion < 1, 'GPOS/GSUB feature variations table unknown.');\n const featureVariations = this.parseRecordList32({\n conditionSetOffset: Parser.offset32,\n featureTableSubstitutionOffset: Parser.offset32\n });\n return featureVariations;\n }) || [];\n};\n\nexport default {\n getByte,\n getCard8: getByte,\n getUShort,\n getCard16: getUShort,\n getShort,\n getULong,\n getFixed,\n getTag,\n getOffset,\n getBytes,\n bytesToString,\n Parser,\n};\n\nexport { Parser };\n","// The `glyf` table describes the glyphs in TrueType outline format.\n// http://www.microsoft.com/typography/otspec/glyf.htm\n\nimport check from '../check';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\n\n// Parse the coordinate data for a glyph.\nfunction parseGlyphCoordinate(p, flag, previousValue, shortVectorBitMask, sameBitMask) {\n let v;\n if ((flag & shortVectorBitMask) > 0) {\n // The coordinate is 1 byte long.\n v = p.parseByte();\n // The `same` bit is re-used for short values to signify the sign of the value.\n if ((flag & sameBitMask) === 0) {\n v = -v;\n }\n\n v = previousValue + v;\n } else {\n // The coordinate is 2 bytes long.\n // If the `same` bit is set, the coordinate is the same as the previous coordinate.\n if ((flag & sameBitMask) > 0) {\n v = previousValue;\n } else {\n // Parse the coordinate as a signed 16-bit delta value.\n v = previousValue + p.parseShort();\n }\n }\n\n return v;\n}\n\n// Parse a TrueType glyph.\nfunction parseGlyph(glyph, data, start) {\n const p = new parse.Parser(data, start);\n glyph.numberOfContours = p.parseShort();\n glyph._xMin = p.parseShort();\n glyph._yMin = p.parseShort();\n glyph._xMax = p.parseShort();\n glyph._yMax = p.parseShort();\n let flags;\n let flag;\n\n if (glyph.numberOfContours > 0) {\n // This glyph is not a composite.\n const endPointIndices = glyph.endPointIndices = [];\n for (let i = 0; i < glyph.numberOfContours; i += 1) {\n endPointIndices.push(p.parseUShort());\n }\n\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n\n const numberOfCoordinates = endPointIndices[endPointIndices.length - 1] + 1;\n flags = [];\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = p.parseByte();\n flags.push(flag);\n // If bit 3 is set, we repeat this flag n times, where n is the next byte.\n if ((flag & 8) > 0) {\n const repeatCount = p.parseByte();\n for (let j = 0; j < repeatCount; j += 1) {\n flags.push(flag);\n i += 1;\n }\n }\n }\n\n check.argument(flags.length === numberOfCoordinates, 'Bad flags.');\n\n if (endPointIndices.length > 0) {\n const points = [];\n let point;\n // X/Y coordinates are relative to the previous point, except for the first point which is relative to 0,0.\n if (numberOfCoordinates > 0) {\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = {};\n point.onCurve = !!(flag & 1);\n point.lastPointOfContour = endPointIndices.indexOf(i) >= 0;\n points.push(point);\n }\n\n let px = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.x = parseGlyphCoordinate(p, flag, px, 2, 16);\n px = point.x;\n }\n\n let py = 0;\n for (let i = 0; i < numberOfCoordinates; i += 1) {\n flag = flags[i];\n point = points[i];\n point.y = parseGlyphCoordinate(p, flag, py, 4, 32);\n py = point.y;\n }\n }\n\n glyph.points = points;\n } else {\n glyph.points = [];\n }\n } else if (glyph.numberOfContours === 0) {\n glyph.points = [];\n } else {\n glyph.isComposite = true;\n glyph.points = [];\n glyph.components = [];\n let moreComponents = true;\n while (moreComponents) {\n flags = p.parseUShort();\n const component = {\n glyphIndex: p.parseUShort(),\n xScale: 1,\n scale01: 0,\n scale10: 0,\n yScale: 1,\n dx: 0,\n dy: 0\n };\n if ((flags & 1) > 0) {\n // The arguments are words\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseShort();\n component.dy = p.parseShort();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseUShort(), p.parseUShort()];\n }\n\n } else {\n // The arguments are bytes\n if ((flags & 2) > 0) {\n // values are offset\n component.dx = p.parseChar();\n component.dy = p.parseChar();\n } else {\n // values are matched points\n component.matchedPoints = [p.parseByte(), p.parseByte()];\n }\n }\n\n if ((flags & 8) > 0) {\n // We have a scale\n component.xScale = component.yScale = p.parseF2Dot14();\n } else if ((flags & 64) > 0) {\n // We have an X / Y scale\n component.xScale = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n } else if ((flags & 128) > 0) {\n // We have a 2x2 transformation\n component.xScale = p.parseF2Dot14();\n component.scale01 = p.parseF2Dot14();\n component.scale10 = p.parseF2Dot14();\n component.yScale = p.parseF2Dot14();\n }\n\n glyph.components.push(component);\n moreComponents = !!(flags & 32);\n }\n if (flags & 0x100) {\n // We have instructions\n glyph.instructionLength = p.parseUShort();\n glyph.instructions = [];\n for (let i = 0; i < glyph.instructionLength; i += 1) {\n glyph.instructions.push(p.parseByte());\n }\n }\n }\n}\n\n// Transform an array of points and return a new array.\nfunction transformPoints(points, transform) {\n const newPoints = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n const newPt = {\n x: transform.xScale * pt.x + transform.scale01 * pt.y + transform.dx,\n y: transform.scale10 * pt.x + transform.yScale * pt.y + transform.dy,\n onCurve: pt.onCurve,\n lastPointOfContour: pt.lastPointOfContour\n };\n newPoints.push(newPt);\n }\n\n return newPoints;\n}\n\nfunction getContours(points) {\n const contours = [];\n let currentContour = [];\n for (let i = 0; i < points.length; i += 1) {\n const pt = points[i];\n currentContour.push(pt);\n if (pt.lastPointOfContour) {\n contours.push(currentContour);\n currentContour = [];\n }\n }\n\n check.argument(currentContour.length === 0, 'There are still points left in the current contour.');\n return contours;\n}\n\n// Convert the TrueType glyph outline to a Path.\nfunction getPath(points) {\n const p = new Path();\n if (!points) {\n return p;\n }\n\n const contours = getContours(points);\n\n for (let contourIndex = 0; contourIndex < contours.length; ++contourIndex) {\n const contour = contours[contourIndex];\n\n let prev = null;\n let curr = contour[contour.length - 1];\n let next = contour[0];\n\n if (curr.onCurve) {\n p.moveTo(curr.x, curr.y);\n } else {\n if (next.onCurve) {\n p.moveTo(next.x, next.y);\n } else {\n // If both first and last points are off-curve, start at their middle.\n const start = {x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5};\n p.moveTo(start.x, start.y);\n }\n }\n\n for (let i = 0; i < contour.length; ++i) {\n prev = curr;\n curr = next;\n next = contour[(i + 1) % contour.length];\n\n if (curr.onCurve) {\n // This is a straight line.\n p.lineTo(curr.x, curr.y);\n } else {\n let prev2 = prev;\n let next2 = next;\n\n if (!prev.onCurve) {\n prev2 = { x: (curr.x + prev.x) * 0.5, y: (curr.y + prev.y) * 0.5 };\n }\n\n if (!next.onCurve) {\n next2 = { x: (curr.x + next.x) * 0.5, y: (curr.y + next.y) * 0.5 };\n }\n\n p.quadraticCurveTo(curr.x, curr.y, next2.x, next2.y);\n }\n }\n\n p.closePath();\n }\n return p;\n}\n\nfunction buildPath(glyphs, glyph) {\n if (glyph.isComposite) {\n for (let j = 0; j < glyph.components.length; j += 1) {\n const component = glyph.components[j];\n const componentGlyph = glyphs.get(component.glyphIndex);\n // Force the ttfGlyphLoader to parse the glyph.\n componentGlyph.getPath();\n if (componentGlyph.points) {\n let transformedPoints;\n if (component.matchedPoints === undefined) {\n // component positioned by offset\n transformedPoints = transformPoints(componentGlyph.points, component);\n } else {\n // component positioned by matched points\n if ((component.matchedPoints[0] > glyph.points.length - 1) ||\n (component.matchedPoints[1] > componentGlyph.points.length - 1)) {\n throw Error('Matched points out of range in ' + glyph.name);\n }\n const firstPt = glyph.points[component.matchedPoints[0]];\n let secondPt = componentGlyph.points[component.matchedPoints[1]];\n const transform = {\n xScale: component.xScale, scale01: component.scale01,\n scale10: component.scale10, yScale: component.yScale,\n dx: 0, dy: 0\n };\n secondPt = transformPoints([secondPt], transform)[0];\n transform.dx = firstPt.x - secondPt.x;\n transform.dy = firstPt.y - secondPt.y;\n transformedPoints = transformPoints(componentGlyph.points, transform);\n }\n glyph.points = glyph.points.concat(transformedPoints);\n }\n }\n }\n\n return getPath(glyph.points);\n}\n\nfunction parseGlyfTableAll(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n // The last element of the loca table is invalid.\n for (let i = 0; i < loca.length - 1; i += 1) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n }\n\n return glyphs;\n}\n\nfunction parseGlyfTableOnLowMemory(data, start, loca, font) {\n const glyphs = new glyphset.GlyphSet(font);\n\n font._push = function(i) {\n const offset = loca[i];\n const nextOffset = loca[i + 1];\n if (offset !== nextOffset) {\n glyphs.push(i, glyphset.ttfGlyphLoader(font, i, parseGlyph, data, start + offset, buildPath));\n } else {\n glyphs.push(i, glyphset.glyphLoader(font, i));\n }\n };\n\n return glyphs;\n}\n\n// Parse all the glyphs according to the offsets from the `loca` table.\nfunction parseGlyfTable(data, start, loca, font, opt) {\n if (opt.lowMemory)\n return parseGlyfTableOnLowMemory(data, start, loca, font);\n else\n return parseGlyfTableAll(data, start, loca, font);\n}\n\nexport default { getPath, parse: parseGlyfTable};\n","/* A TrueType font hinting interpreter.\n*\n* (c) 2017 Axel Kittenberger\n*\n* This interpreter has been implemented according to this documentation:\n* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM05/Chap5.html\n*\n* According to the documentation F24DOT6 values are used for pixels.\n* That means calculation is 1/64 pixel accurate and uses integer operations.\n* However, Javascript has floating point operations by default and only\n* those are available. One could make a case to simulate the 1/64 accuracy\n* exactly by truncating after every division operation\n* (for example with << 0) to get pixel exactly results as other TrueType\n* implementations. It may make sense since some fonts are pixel optimized\n* by hand using DELTAP instructions. The current implementation doesn't\n* and rather uses full floating point precision.\n*\n* xScale, yScale and rotation is currently ignored.\n*\n* A few non-trivial instructions are missing as I didn't encounter yet\n* a font that used them to test a possible implementation.\n*\n* Some fonts seem to use undocumented features regarding the twilight zone.\n* Only some of them are implemented as they were encountered.\n*\n* The exports.DEBUG statements are removed on the minified distribution file.\n*/\n'use strict';\n\nimport glyf from './tables/glyf';\n\nlet instructionTable;\nlet exec;\nlet execGlyph;\nlet execComponent;\n\n/*\n* Creates a hinting object.\n*\n* There ought to be exactly one\n* for each truetype font that is used for hinting.\n*/\nfunction Hinting(font) {\n // the font this hinting object is for\n this.font = font;\n\n this.getCommands = function (hPoints) {\n return glyf.getPath(hPoints).commands;\n };\n\n // cached states\n this._fpgmState =\n this._prepState =\n undefined;\n\n // errorState\n // 0 ... all okay\n // 1 ... had an error in a glyf,\n // continue working but stop spamming\n // the console\n // 2 ... error at prep, stop hinting at this ppem\n // 3 ... error at fpeg, stop hinting for this font at all\n this._errorState = 0;\n}\n\n/*\n* Not rounding.\n*/\nfunction roundOff(v) {\n return v;\n}\n\n/*\n* Rounding to grid.\n*/\nfunction roundToGrid(v) {\n //Rounding in TT is supposed to \"symmetrical around zero\"\n return Math.sign(v) * Math.round(Math.abs(v));\n}\n\n/*\n* Rounding to double grid.\n*/\nfunction roundToDoubleGrid(v) {\n return Math.sign(v) * Math.round(Math.abs(v * 2)) / 2;\n}\n\n/*\n* Rounding to half grid.\n*/\nfunction roundToHalfGrid(v) {\n return Math.sign(v) * (Math.round(Math.abs(v) + 0.5) - 0.5);\n}\n\n/*\n* Rounding to up to grid.\n*/\nfunction roundUpToGrid(v) {\n return Math.sign(v) * Math.ceil(Math.abs(v));\n}\n\n/*\n* Rounding to down to grid.\n*/\nfunction roundDownToGrid(v) {\n return Math.sign(v) * Math.floor(Math.abs(v));\n}\n\n/*\n* Super rounding.\n*/\nconst roundSuper = function (v) {\n const period = this.srPeriod;\n let phase = this.srPhase;\n const threshold = this.srThreshold;\n let sign = 1;\n\n if (v < 0) {\n v = -v;\n sign = -1;\n }\n\n v += threshold - phase;\n\n v = Math.trunc(v / period) * period;\n\n v += phase;\n\n // according to http://xgridfit.sourceforge.net/round.html\n if (v < 0) return phase * sign;\n\n return v * sign;\n};\n\n/*\n* Unit vector of x-axis.\n*/\nconst xUnitVector = {\n x: 1,\n\n y: 0,\n\n axis: 'x',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.xo : p1.x) - (o2 ? p2.xo : p2.x);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.xo - rp1.xo;\n do2 = p.xo - rp2.xo;\n dm1 = rp1.x - rp1.xo;\n dm2 = rp2.x - rp2.xo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.x = p.xo + (dm1 + dm2) / 2;\n return;\n }\n\n p.x = p.xo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n xUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n xUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this\n normalSlope: Number.NEGATIVE_INFINITY,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'.\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.x = (org ? rp.xo : rp.x) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.x = rpdx + (p.y - rpdy) / pv.normalSlope;\n },\n\n // Slope of vector line.\n slope: 0,\n\n // Touches the point p.\n touch: function (p) {\n p.xTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.xTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.xTouched = false;\n }\n};\n\n/*\n* Unit vector of y-axis.\n*/\nconst yUnitVector = {\n x: 0,\n\n y: 1,\n\n axis: 'y',\n\n // Gets the projected distance between two points.\n // o1/o2 ... if true, respective original position is used.\n distance: function (p1, p2, o1, o2) {\n return (o1 ? p1.yo : p1.y) - (o2 ? p2.yo : p2.y);\n },\n\n // Moves point p so the moved position has the same relative\n // position to the moved positions of rp1 and rp2 than the\n // original positions had.\n //\n // See APPENDIX on INTERPOLATE at the bottom of this file.\n interpolate: function (p, rp1, rp2, pv) {\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dm1;\n let dm2;\n let dt;\n\n if (!pv || pv === this) {\n do1 = p.yo - rp1.yo;\n do2 = p.yo - rp2.yo;\n dm1 = rp1.y - rp1.yo;\n dm2 = rp2.y - rp2.yo;\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n p.y = p.yo + (dm1 + dm2) / 2;\n return;\n }\n\n p.y = p.yo + (dm1 * doa2 + dm2 * doa1) / dt;\n return;\n }\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n yUnitVector.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n yUnitVector.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n },\n\n // Slope of line normal to this.\n normalSlope: 0,\n\n // Sets the point 'p' relative to point 'rp'\n // by the distance 'd'\n //\n // See APPENDIX on SETRELATIVE at the bottom of this file.\n //\n // p ... point to set\n // rp ... reference point\n // d ... distance on projection vector\n // pv ... projection vector (undefined = this)\n // org ... if true, uses the original position of rp as reference.\n setRelative: function (p, rp, d, pv, org) {\n if (!pv || pv === this) {\n p.y = (org ? rp.yo : rp.y) + d;\n return;\n }\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n p.y = rpdy + pv.normalSlope * (p.x - rpdx);\n },\n\n // Slope of vector line.\n slope: Number.POSITIVE_INFINITY,\n\n // Touches the point p.\n touch: function (p) {\n p.yTouched = true;\n },\n\n // Tests if a point p is touched.\n touched: function (p) {\n return p.yTouched;\n },\n\n // Untouches the point p.\n untouch: function (p) {\n p.yTouched = false;\n }\n};\n\nObject.freeze(xUnitVector);\nObject.freeze(yUnitVector);\n\n/*\n* Creates a unit vector that is not x- or y-axis.\n*/\nfunction UnitVector(x, y) {\n this.x = x;\n this.y = y;\n this.axis = undefined;\n this.slope = y / x;\n this.normalSlope = -x / y;\n Object.freeze(this);\n}\n\n/*\n* Gets the projected distance between two points.\n* o1/o2 ... if true, respective original position is used.\n*/\nUnitVector.prototype.distance = function(p1, p2, o1, o2) {\n return (\n this.x * xUnitVector.distance(p1, p2, o1, o2) +\n this.y * yUnitVector.distance(p1, p2, o1, o2)\n );\n};\n\n/*\n* Moves point p so the moved position has the same relative\n* position to the moved positions of rp1 and rp2 than the\n* original positions had.\n*\n* See APPENDIX on INTERPOLATE at the bottom of this file.\n*/\nUnitVector.prototype.interpolate = function(p, rp1, rp2, pv) {\n let dm1;\n let dm2;\n let do1;\n let do2;\n let doa1;\n let doa2;\n let dt;\n\n do1 = pv.distance(p, rp1, true, true);\n do2 = pv.distance(p, rp2, true, true);\n dm1 = pv.distance(rp1, rp1, false, true);\n dm2 = pv.distance(rp2, rp2, false, true);\n doa1 = Math.abs(do1);\n doa2 = Math.abs(do2);\n dt = doa1 + doa2;\n\n if (dt === 0) {\n this.setRelative(p, p, (dm1 + dm2) / 2, pv, true);\n return;\n }\n\n this.setRelative(p, p, (dm1 * doa2 + dm2 * doa1) / dt, pv, true);\n};\n\n/*\n* Sets the point 'p' relative to point 'rp'\n* by the distance 'd'\n*\n* See APPENDIX on SETRELATIVE at the bottom of this file.\n*\n* p ... point to set\n* rp ... reference point\n* d ... distance on projection vector\n* pv ... projection vector (undefined = this)\n* org ... if true, uses the original position of rp as reference.\n*/\nUnitVector.prototype.setRelative = function(p, rp, d, pv, org) {\n pv = pv || this;\n\n const rpx = org ? rp.xo : rp.x;\n const rpy = org ? rp.yo : rp.y;\n const rpdx = rpx + d * pv.x;\n const rpdy = rpy + d * pv.y;\n\n const pvns = pv.normalSlope;\n const fvs = this.slope;\n\n const px = p.x;\n const py = p.y;\n\n p.x = (fvs * px - pvns * rpdx + rpdy - py) / (fvs - pvns);\n p.y = fvs * (p.x - px) + py;\n};\n\n/*\n* Touches the point p.\n*/\nUnitVector.prototype.touch = function(p) {\n p.xTouched = true;\n p.yTouched = true;\n};\n\n/*\n* Returns a unit vector with x/y coordinates.\n*/\nfunction getUnitVector(x, y) {\n const d = Math.sqrt(x * x + y * y);\n\n x /= d;\n y /= d;\n\n if (x === 1 && y === 0) return xUnitVector;\n else if (x === 0 && y === 1) return yUnitVector;\n else return new UnitVector(x, y);\n}\n\n/*\n* Creates a point in the hinting engine.\n*/\nfunction HPoint(\n x,\n y,\n lastPointOfContour,\n onCurve\n) {\n this.x = this.xo = Math.round(x * 64) / 64; // hinted x value and original x-value\n this.y = this.yo = Math.round(y * 64) / 64; // hinted y value and original y-value\n\n this.lastPointOfContour = lastPointOfContour;\n this.onCurve = onCurve;\n this.prevPointOnContour = undefined;\n this.nextPointOnContour = undefined;\n this.xTouched = false;\n this.yTouched = false;\n\n Object.preventExtensions(this);\n}\n\n/*\n* Returns the next touched point on the contour.\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.nextTouched = function(v) {\n let p = this.nextPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.nextPointOnContour;\n\n return p;\n};\n\n/*\n* Returns the previous touched point on the contour\n*\n* v ... unit vector to test touch axis.\n*/\nHPoint.prototype.prevTouched = function(v) {\n let p = this.prevPointOnContour;\n\n while (!v.touched(p) && p !== this) p = p.prevPointOnContour;\n\n return p;\n};\n\n/*\n* The zero point.\n*/\nconst HPZero = Object.freeze(new HPoint(0, 0));\n\n/*\n* The default state of the interpreter.\n*\n* Note: Freezing the defaultState and then deriving from it\n* makes the V8 Javascript engine going awkward,\n* so this is avoided, albeit the defaultState shouldn't\n* ever change.\n*/\nconst defaultState = {\n cvCutIn: 17 / 16, // control value cut in\n deltaBase: 9,\n deltaShift: 0.125,\n loop: 1, // loops some instructions\n minDis: 1, // minimum distance\n autoFlip: true\n};\n\n/*\n* The current state of the interpreter.\n*\n* env ... 'fpgm' or 'prep' or 'glyf'\n* prog ... the program\n*/\nfunction State(env, prog) {\n this.env = env;\n this.stack = [];\n this.prog = prog;\n\n switch (env) {\n case 'glyf' :\n this.zp0 = this.zp1 = this.zp2 = 1;\n this.rp0 = this.rp1 = this.rp2 = 0;\n /* fall through */\n case 'prep' :\n this.fv = this.pv = this.dpv = xUnitVector;\n this.round = roundToGrid;\n }\n}\n\n/*\n* Executes a glyph program.\n*\n* This does the hinting for each glyph.\n*\n* Returns an array of moved points.\n*\n* glyph: the glyph to hint\n* ppem: the size the glyph is rendered for\n*/\nHinting.prototype.exec = function(glyph, ppem) {\n if (typeof ppem !== 'number') {\n throw new Error('Point size is not a number!');\n }\n\n // Received a fatal error, don't do any hinting anymore.\n if (this._errorState > 2) return;\n\n const font = this.font;\n let prepState = this._prepState;\n\n if (!prepState || prepState.ppem !== ppem) {\n let fpgmState = this._fpgmState;\n\n if (!fpgmState) {\n // Executes the fpgm state.\n // This is used by fonts to define functions.\n State.prototype = defaultState;\n\n fpgmState =\n this._fpgmState =\n new State('fpgm', font.tables.fpgm);\n\n fpgmState.funcs = [ ];\n fpgmState.font = font;\n\n if (exports.DEBUG) {\n console.log('---EXEC FPGM---');\n fpgmState.step = -1;\n }\n\n try {\n exec(fpgmState);\n } catch (e) {\n console.log('Hinting error in FPGM:' + e);\n this._errorState = 3;\n return;\n }\n }\n\n // Executes the prep program for this ppem setting.\n // This is used by fonts to set cvt values\n // depending on to be rendered font size.\n\n State.prototype = fpgmState;\n prepState =\n this._prepState =\n new State('prep', font.tables.prep);\n\n prepState.ppem = ppem;\n\n // Creates a copy of the cvt table\n // and scales it to the current ppem setting.\n const oCvt = font.tables.cvt;\n if (oCvt) {\n const cvt = prepState.cvt = new Array(oCvt.length);\n const scale = ppem / font.unitsPerEm;\n for (let c = 0; c < oCvt.length; c++) {\n cvt[c] = oCvt[c] * scale;\n }\n } else {\n prepState.cvt = [];\n }\n\n if (exports.DEBUG) {\n console.log('---EXEC PREP---');\n prepState.step = -1;\n }\n\n try {\n exec(prepState);\n } catch (e) {\n if (this._errorState < 2) {\n console.log('Hinting error in PREP:' + e);\n }\n this._errorState = 2;\n }\n }\n\n if (this._errorState > 1) return;\n\n try {\n return execGlyph(glyph, prepState);\n } catch (e) {\n if (this._errorState < 1) {\n console.log('Hinting error:' + e);\n console.log('Note: further hinting errors are silenced');\n }\n this._errorState = 1;\n return undefined;\n }\n};\n\n/*\n* Executes the hinting program for a glyph.\n*/\nexecGlyph = function(glyph, prepState) {\n // original point positions\n const xScale = prepState.ppem / prepState.font.unitsPerEm;\n const yScale = xScale;\n let components = glyph.components;\n let contours;\n let gZone;\n let state;\n\n State.prototype = prepState;\n if (!components) {\n state = new State('glyf', glyph.instructions);\n if (exports.DEBUG) {\n console.log('---EXEC GLYPH---');\n state.step = -1;\n }\n execComponent(glyph, state, xScale, yScale);\n gZone = state.gZone;\n } else {\n const font = prepState.font;\n gZone = [];\n contours = [];\n for (let i = 0; i < components.length; i++) {\n const c = components[i];\n const cg = font.glyphs.get(c.glyphIndex);\n\n state = new State('glyf', cg.instructions);\n\n if (exports.DEBUG) {\n console.log('---EXEC COMP ' + i + '---');\n state.step = -1;\n }\n\n execComponent(cg, state, xScale, yScale);\n // appends the computed points to the result array\n // post processes the component points\n const dx = Math.round(c.dx * xScale);\n const dy = Math.round(c.dy * yScale);\n const gz = state.gZone;\n const cc = state.contours;\n for (let pi = 0; pi < gz.length; pi++) {\n const p = gz[pi];\n p.xTouched = p.yTouched = false;\n p.xo = p.x = p.x + dx;\n p.yo = p.y = p.y + dy;\n }\n\n const gLen = gZone.length;\n gZone.push.apply(gZone, gz);\n for (let j = 0; j < cc.length; j++) {\n contours.push(cc[j] + gLen);\n }\n }\n\n if (glyph.instructions && !state.inhibitGridFit) {\n // the composite has instructions on its own\n state = new State('glyf', glyph.instructions);\n\n state.gZone = state.z0 = state.z1 = state.z2 = gZone;\n\n state.contours = contours;\n\n // note: HPZero cannot be used here, since\n // the point might be modified\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n if (exports.DEBUG) {\n console.log('---EXEC COMPOSITE---');\n state.step = -1;\n }\n\n exec(state);\n\n gZone.length -= 2;\n }\n }\n\n return gZone;\n};\n\n/*\n* Executes the hinting program for a component of a multi-component glyph\n* or of the glyph itself for a non-component glyph.\n*/\nexecComponent = function(glyph, state, xScale, yScale)\n{\n const points = glyph.points || [];\n const pLen = points.length;\n const gZone = state.gZone = state.z0 = state.z1 = state.z2 = [];\n const contours = state.contours = [];\n\n // Scales the original points and\n // makes copies for the hinted points.\n let cp; // current point\n for (let i = 0; i < pLen; i++) {\n cp = points[i];\n\n gZone[i] = new HPoint(\n cp.x * xScale,\n cp.y * yScale,\n cp.lastPointOfContour,\n cp.onCurve\n );\n }\n\n // Chain links the contours.\n let sp; // start point\n let np; // next point\n\n for (let i = 0; i < pLen; i++) {\n cp = gZone[i];\n\n if (!sp) {\n sp = cp;\n contours.push(i);\n }\n\n if (cp.lastPointOfContour) {\n cp.nextPointOnContour = sp;\n sp.prevPointOnContour = cp;\n sp = undefined;\n } else {\n np = gZone[i + 1];\n cp.nextPointOnContour = np;\n np.prevPointOnContour = cp;\n }\n }\n\n if (state.inhibitGridFit) return;\n\n if (exports.DEBUG) {\n console.log('PROCESSING GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n\n gZone.push(\n new HPoint(0, 0),\n new HPoint(Math.round(glyph.advanceWidth * xScale), 0)\n );\n\n exec(state);\n\n // Removes the extra points.\n gZone.length -= 2;\n\n if (exports.DEBUG) {\n console.log('FINISHED GLYPH', state.stack);\n for (let i = 0; i < pLen; i++) {\n console.log(i, gZone[i].x, gZone[i].y);\n }\n }\n};\n\n/*\n* Executes the program loaded in state.\n*/\nexec = function(state) {\n let prog = state.prog;\n\n if (!prog) return;\n\n const pLen = prog.length;\n let ins;\n\n for (state.ip = 0; state.ip < pLen; state.ip++) {\n if (exports.DEBUG) state.step++;\n ins = instructionTable[prog[state.ip]];\n\n if (!ins) {\n throw new Error(\n 'unknown instruction: 0x' +\n Number(prog[state.ip]).toString(16)\n );\n }\n\n ins(state);\n\n // very extensive debugging for each step\n /*\n if (exports.DEBUG) {\n var da;\n if (state.gZone) {\n da = [];\n for (let i = 0; i < state.gZone.length; i++)\n {\n da.push(i + ' ' +\n state.gZone[i].x * 64 + ' ' +\n state.gZone[i].y * 64 + ' ' +\n (state.gZone[i].xTouched ? 'x' : '') +\n (state.gZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('GZ', da);\n }\n\n if (state.tZone) {\n da = [];\n for (let i = 0; i < state.tZone.length; i++) {\n da.push(i + ' ' +\n state.tZone[i].x * 64 + ' ' +\n state.tZone[i].y * 64 + ' ' +\n (state.tZone[i].xTouched ? 'x' : '') +\n (state.tZone[i].yTouched ? 'y' : '')\n );\n }\n console.log('TZ', da);\n }\n\n if (state.stack.length > 10) {\n console.log(\n state.stack.length,\n '...', state.stack.slice(state.stack.length - 10)\n );\n } else {\n console.log(state.stack.length, state.stack);\n }\n }\n */\n }\n};\n\n/*\n* Initializes the twilight zone.\n*\n* This is only done if a SZPx instruction\n* refers to the twilight zone.\n*/\nfunction initTZone(state)\n{\n const tZone = state.tZone = new Array(state.gZone.length);\n\n // no idea if this is actually correct...\n for (let i = 0; i < tZone.length; i++)\n {\n tZone[i] = new HPoint(0, 0);\n }\n}\n\n/*\n* Skips the instruction pointer ahead over an IF/ELSE block.\n* handleElse .. if true breaks on matching ELSE\n*/\nfunction skip(state, handleElse)\n{\n const prog = state.prog;\n let ip = state.ip;\n let nesting = 1;\n let ins;\n\n do {\n ins = prog[++ip];\n if (ins === 0x58) // IF\n nesting++;\n else if (ins === 0x59) // EIF\n nesting--;\n else if (ins === 0x40) // NPUSHB\n ip += prog[ip + 1] + 1;\n else if (ins === 0x41) // NPUSHW\n ip += 2 * prog[ip + 1] + 1;\n else if (ins >= 0xB0 && ins <= 0xB7) // PUSHB\n ip += ins - 0xB0 + 1;\n else if (ins >= 0xB8 && ins <= 0xBF) // PUSHW\n ip += (ins - 0xB8 + 1) * 2;\n else if (handleElse && nesting === 1 && ins === 0x1B) // ELSE\n break;\n } while (nesting > 0);\n\n state.ip = ip;\n}\n\n/*----------------------------------------------------------*\n* And then a lot of instructions... *\n*----------------------------------------------------------*/\n\n// SVTCA[a] Set freedom and projection Vectors To Coordinate Axis\n// 0x00-0x01\nfunction SVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SVTCA[' + v.axis + ']');\n\n state.fv = state.pv = state.dpv = v;\n}\n\n// SPVTCA[a] Set Projection Vector to Coordinate Axis\n// 0x02-0x03\nfunction SPVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SPVTCA[' + v.axis + ']');\n\n state.pv = state.dpv = v;\n}\n\n// SFVTCA[a] Set Freedom Vector to Coordinate Axis\n// 0x04-0x05\nfunction SFVTCA(v, state) {\n if (exports.DEBUG) console.log(state.step, 'SFVTCA[' + v.axis + ']');\n\n state.fv = v;\n}\n\n// SPVTL[a] Set Projection Vector To Line\n// 0x06-0x07\nfunction SPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.pv = state.dpv = getUnitVector(dx, dy);\n}\n\n// SFVTL[a] Set Freedom Vector To Line\n// 0x08-0x09\nfunction SFVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log('SFVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.fv = getUnitVector(dx, dy);\n}\n\n// SPVFS[] Set Projection Vector From Stack\n// 0x0A\nfunction SPVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.pv = state.dpv = getUnitVector(x, y);\n}\n\n// SFVFS[] Set Freedom Vector From Stack\n// 0x0B\nfunction SFVFS(state) {\n const stack = state.stack;\n const y = stack.pop();\n const x = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SPVFS[]', y, x);\n\n state.fv = getUnitVector(x, y);\n}\n\n// GPV[] Get Projection Vector\n// 0x0C\nfunction GPV(state) {\n const stack = state.stack;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'GPV[]');\n\n stack.push(pv.x * 0x4000);\n stack.push(pv.y * 0x4000);\n}\n\n// GFV[] Get Freedom Vector\n// 0x0C\nfunction GFV(state) {\n const stack = state.stack;\n const fv = state.fv;\n\n if (exports.DEBUG) console.log(state.step, 'GFV[]');\n\n stack.push(fv.x * 0x4000);\n stack.push(fv.y * 0x4000);\n}\n\n// SFVTPV[] Set Freedom Vector To Projection Vector\n// 0x0E\nfunction SFVTPV(state) {\n state.fv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'SFVTPV[]');\n}\n\n// ISECT[] moves point p to the InterSECTion of two lines\n// 0x0F\nfunction ISECT(state)\n{\n const stack = state.stack;\n const pa0i = stack.pop();\n const pa1i = stack.pop();\n const pb0i = stack.pop();\n const pb1i = stack.pop();\n const pi = stack.pop();\n const z0 = state.z0;\n const z1 = state.z1;\n const pa0 = z0[pa0i];\n const pa1 = z0[pa1i];\n const pb0 = z1[pb0i];\n const pb1 = z1[pb1i];\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log('ISECT[], ', pa0i, pa1i, pb0i, pb1i, pi);\n\n // math from\n // en.wikipedia.org/wiki/Line%E2%80%93line_intersection#Given_two_points_on_each_line\n\n const x1 = pa0.x;\n const y1 = pa0.y;\n const x2 = pa1.x;\n const y2 = pa1.y;\n const x3 = pb0.x;\n const y3 = pb0.y;\n const x4 = pb1.x;\n const y4 = pb1.y;\n\n const div = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n const f1 = x1 * y2 - y1 * x2;\n const f2 = x3 * y4 - y3 * x4;\n\n p.x = (f1 * (x3 - x4) - f2 * (x1 - x2)) / div;\n p.y = (f1 * (y3 - y4) - f2 * (y1 - y2)) / div;\n}\n\n// SRP0[] Set Reference Point 0\n// 0x10\nfunction SRP0(state) {\n state.rp0 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP0[]', state.rp0);\n}\n\n// SRP1[] Set Reference Point 1\n// 0x11\nfunction SRP1(state) {\n state.rp1 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP1[]', state.rp1);\n}\n\n// SRP1[] Set Reference Point 2\n// 0x12\nfunction SRP2(state) {\n state.rp2 = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SRP2[]', state.rp2);\n}\n\n// SZP0[] Set Zone Pointer 0\n// 0x13\nfunction SZP0(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP0[]', n);\n\n state.zp0 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.tZone;\n break;\n case 1 :\n state.z0 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP1[] Set Zone Pointer 1\n// 0x14\nfunction SZP1(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP1[]', n);\n\n state.zp1 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z1 = state.tZone;\n break;\n case 1 :\n state.z1 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZP2[] Set Zone Pointer 2\n// 0x15\nfunction SZP2(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZP2[]', n);\n\n state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z2 = state.tZone;\n break;\n case 1 :\n state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SZPS[] Set Zone PointerS\n// 0x16\nfunction SZPS(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SZPS[]', n);\n\n state.zp0 = state.zp1 = state.zp2 = n;\n\n switch (n) {\n case 0:\n if (!state.tZone) initTZone(state);\n state.z0 = state.z1 = state.z2 = state.tZone;\n break;\n case 1 :\n state.z0 = state.z1 = state.z2 = state.gZone;\n break;\n default :\n throw new Error('Invalid zone pointer');\n }\n}\n\n// SLOOP[] Set LOOP variable\n// 0x17\nfunction SLOOP(state) {\n state.loop = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SLOOP[]', state.loop);\n}\n\n// RTG[] Round To Grid\n// 0x18\nfunction RTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTG[]');\n\n state.round = roundToGrid;\n}\n\n// RTHG[] Round To Half Grid\n// 0x19\nfunction RTHG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTHG[]');\n\n state.round = roundToHalfGrid;\n}\n\n// SMD[] Set Minimum Distance\n// 0x1A\nfunction SMD(state) {\n const d = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SMD[]', d);\n\n state.minDis = d / 0x40;\n}\n\n// ELSE[] ELSE clause\n// 0x1B\nfunction ELSE(state) {\n // This instruction has been reached by executing a then branch\n // so it just skips ahead until matching EIF.\n //\n // In case the IF was negative the IF[] instruction already\n // skipped forward over the ELSE[]\n\n if (exports.DEBUG) console.log(state.step, 'ELSE[]');\n\n skip(state, false);\n}\n\n// JMPR[] JuMP Relative\n// 0x1C\nfunction JMPR(state) {\n const o = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'JMPR[]', o);\n\n // A jump by 1 would do nothing.\n state.ip += o - 1;\n}\n\n// SCVTCI[] Set Control Value Table Cut-In\n// 0x1D\nfunction SCVTCI(state) {\n const n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SCVTCI[]', n);\n\n state.cvCutIn = n / 0x40;\n}\n\n// DUP[] DUPlicate top stack element\n// 0x20\nfunction DUP(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DUP[]');\n\n stack.push(stack[stack.length - 1]);\n}\n\n// POP[] POP top stack element\n// 0x21\nfunction POP(state) {\n if (exports.DEBUG) console.log(state.step, 'POP[]');\n\n state.stack.pop();\n}\n\n// CLEAR[] CLEAR the stack\n// 0x22\nfunction CLEAR(state) {\n if (exports.DEBUG) console.log(state.step, 'CLEAR[]');\n\n state.stack.length = 0;\n}\n\n// SWAP[] SWAP the top two elements on the stack\n// 0x23\nfunction SWAP(state) {\n const stack = state.stack;\n\n const a = stack.pop();\n const b = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SWAP[]');\n\n stack.push(a);\n stack.push(b);\n}\n\n// DEPTH[] DEPTH of the stack\n// 0x24\nfunction DEPTH(state) {\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.step, 'DEPTH[]');\n\n stack.push(stack.length);\n}\n\n// LOOPCALL[] LOOPCALL function\n// 0x2A\nfunction LOOPCALL(state) {\n const stack = state.stack;\n const fn = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LOOPCALL[]', fn, c);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n for (let i = 0; i < c; i++) {\n exec(state);\n\n if (exports.DEBUG) console.log(\n ++state.step,\n i + 1 < c ? 'next loopcall' : 'done loopcall',\n i\n );\n }\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n}\n\n// CALL[] CALL function\n// 0x2B\nfunction CALL(state) {\n const fn = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CALL[]', fn);\n\n // saves callers program\n const cip = state.ip;\n const cprog = state.prog;\n\n state.prog = state.funcs[fn];\n\n // executes the function\n exec(state);\n\n // restores the callers program\n state.ip = cip;\n state.prog = cprog;\n\n if (exports.DEBUG) console.log(++state.step, 'returning from', fn);\n}\n\n// CINDEX[] Copy the INDEXed element to the top of the stack\n// 0x25\nfunction CINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CINDEX[]', k);\n\n // In case of k == 1, it copies the last element after popping\n // thus stack.length - k.\n stack.push(stack[stack.length - k]);\n}\n\n// MINDEX[] Move the INDEXed element to the top of the stack\n// 0x26\nfunction MINDEX(state) {\n const stack = state.stack;\n const k = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MINDEX[]', k);\n\n stack.push(stack.splice(stack.length - k, 1)[0]);\n}\n\n// FDEF[] Function DEFinition\n// 0x2C\nfunction FDEF(state) {\n if (state.env !== 'fpgm') throw new Error('FDEF not allowed here');\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n const fn = stack.pop();\n const ipBegin = ip;\n\n if (exports.DEBUG) console.log(state.step, 'FDEF[]', fn);\n\n while (prog[++ip] !== 0x2D);\n\n state.ip = ip;\n state.funcs[fn] = prog.slice(ipBegin + 1, ip);\n}\n\n// MDAP[a] Move Direct Absolute Point\n// 0x2E-0x2F\nfunction MDAP(round, state) {\n const pi = state.stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n\n if (exports.DEBUG) console.log(state.step, 'MDAP[' + round + ']', pi);\n\n let d = pv.distance(p, HPZero);\n\n if (round) d = state.round(d);\n\n fv.setRelative(p, HPZero, d, pv);\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// IUP[a] Interpolate Untouched Points through the outline\n// 0x30\nfunction IUP(v, state) {\n const z2 = state.z2;\n const pLen = z2.length - 2;\n let cp;\n let pp;\n let np;\n\n if (exports.DEBUG) console.log(state.step, 'IUP[' + v.axis + ']');\n\n for (let i = 0; i < pLen; i++) {\n cp = z2[i]; // current point\n\n // if this point has been touched go on\n if (v.touched(cp)) continue;\n\n pp = cp.prevTouched(v);\n\n // no point on the contour has been touched?\n if (pp === cp) continue;\n\n np = cp.nextTouched(v);\n\n if (pp === np) {\n // only one point on the contour has been touched\n // so simply moves the point like that\n\n v.setRelative(cp, cp, v.distance(pp, pp, false, true), v, true);\n }\n\n v.interpolate(cp, pp, np, v);\n }\n}\n\n// SHP[] SHift Point using reference point\n// 0x32-0x33\nfunction SHP(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n let loop = state.loop;\n const z2 = state.z2;\n\n while (loop--)\n {\n const pi = stack.pop();\n const p = z2[pi];\n\n const d = pv.distance(rp, rp, false, true);\n fv.setRelative(p, p, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ?\n 'loop ' + (state.loop - loop) + ': ' :\n ''\n ) +\n 'SHP[' + (a ? 'rp1' : 'rp2') + ']', pi\n );\n }\n }\n\n state.loop = 1;\n}\n\n// SHC[] SHift Contour using reference point\n// 0x36-0x37\nfunction SHC(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n const ci = stack.pop();\n const sp = state.z2[state.contours[ci]];\n let p = sp;\n\n if (exports.DEBUG) console.log(state.step, 'SHC[' + a + ']', ci);\n\n const d = pv.distance(rp, rp, false, true);\n\n do {\n if (p !== rp) fv.setRelative(p, p, d, pv);\n p = p.nextPointOnContour;\n } while (p !== sp);\n}\n\n// SHZ[] SHift Zone using reference point\n// 0x36-0x37\nfunction SHZ(a, state) {\n const stack = state.stack;\n const rpi = a ? state.rp1 : state.rp2;\n const rp = (a ? state.z0 : state.z1)[rpi];\n const fv = state.fv;\n const pv = state.pv;\n\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SHZ[' + a + ']', e);\n\n let z;\n switch (e) {\n case 0 : z = state.tZone; break;\n case 1 : z = state.gZone; break;\n default : throw new Error('Invalid zone');\n }\n\n let p;\n const d = pv.distance(rp, rp, false, true);\n const pLen = z.length - 2;\n for (let i = 0; i < pLen; i++)\n {\n p = z[i];\n fv.setRelative(p, p, d, pv);\n //if (p !== rp) fv.setRelative(p, p, d, pv);\n }\n}\n\n// SHPIX[] SHift point by a PIXel amount\n// 0x38\nfunction SHPIX(state) {\n const stack = state.stack;\n let loop = state.loop;\n const fv = state.fv;\n const d = stack.pop() / 0x40;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'SHPIX[]', pi, d\n );\n }\n\n fv.setRelative(p, p, d);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// IP[] Interpolate Point\n// 0x39\nfunction IP(state) {\n const stack = state.stack;\n const rp1i = state.rp1;\n const rp2i = state.rp2;\n let loop = state.loop;\n const rp1 = state.z0[rp1i];\n const rp2 = state.z1[rp2i];\n const fv = state.fv;\n const pv = state.dpv;\n const z2 = state.z2;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z2[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'IP[]', pi, rp1i, '<->', rp2i\n );\n }\n\n fv.interpolate(p, rp1, rp2, pv);\n\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// MSIRP[a] Move Stack Indirect Relative Point\n// 0x3A-0x3B\nfunction MSIRP(a, state) {\n const stack = state.stack;\n const d = stack.pop() / 64;\n const pi = stack.pop();\n const p = state.z1[pi];\n const rp0 = state.z0[state.rp0];\n const fv = state.fv;\n const pv = state.pv;\n\n fv.setRelative(p, rp0, d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) console.log(state.step, 'MSIRP[' + a + ']', d, pi);\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (a) state.rp0 = pi;\n}\n\n// ALIGNRP[] Align to reference point.\n// 0x3C\nfunction ALIGNRP(state) {\n const stack = state.stack;\n const rp0i = state.rp0;\n const rp0 = state.z0[rp0i];\n let loop = state.loop;\n const fv = state.fv;\n const pv = state.pv;\n const z1 = state.z1;\n\n while (loop--) {\n const pi = stack.pop();\n const p = z1[pi];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (state.loop > 1 ? 'loop ' + (state.loop - loop) + ': ' : '') +\n 'ALIGNRP[]', pi\n );\n }\n\n fv.setRelative(p, rp0, 0, pv);\n fv.touch(p);\n }\n\n state.loop = 1;\n}\n\n// RTG[] Round To Double Grid\n// 0x3D\nfunction RTDG(state) {\n if (exports.DEBUG) console.log(state.step, 'RTDG[]');\n\n state.round = roundToDoubleGrid;\n}\n\n// MIAP[a] Move Indirect Absolute Point\n// 0x3E-0x3F\nfunction MIAP(round, state) {\n const stack = state.stack;\n const n = stack.pop();\n const pi = stack.pop();\n const p = state.z0[pi];\n const fv = state.fv;\n const pv = state.pv;\n let cv = state.cvt[n];\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n 'MIAP[' + round + ']',\n n, '(', cv, ')', pi\n );\n }\n\n let d = pv.distance(p, HPZero);\n\n if (round) {\n if (Math.abs(d - cv) < state.cvCutIn) d = cv;\n\n d = state.round(d);\n }\n\n fv.setRelative(p, HPZero, d, pv);\n\n if (state.zp0 === 0) {\n p.xo = p.x;\n p.yo = p.y;\n }\n\n fv.touch(p);\n\n state.rp0 = state.rp1 = pi;\n}\n\n// NPUSB[] PUSH N Bytes\n// 0x40\nfunction NPUSHB(state) {\n const prog = state.prog;\n let ip = state.ip;\n const stack = state.stack;\n\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHB[]', n);\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// NPUSHW[] PUSH N Words\n// 0x41\nfunction NPUSHW(state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n const n = prog[++ip];\n\n if (exports.DEBUG) console.log(state.step, 'NPUSHW[]', n);\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// WS[] Write Store\n// 0x42\nfunction WS(state) {\n const stack = state.stack;\n let store = state.store;\n\n if (!store) store = state.store = [];\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WS', v, l);\n\n store[l] = v;\n}\n\n// RS[] Read Store\n// 0x43\nfunction RS(state) {\n const stack = state.stack;\n const store = state.store;\n\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RS', l);\n\n const v = (store && store[l]) || 0;\n\n stack.push(v);\n}\n\n// WCVTP[] Write Control Value Table in Pixel units\n// 0x44\nfunction WCVTP(state) {\n const stack = state.stack;\n\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTP', v, l);\n\n state.cvt[l] = v / 0x40;\n}\n\n// RCVT[] Read Control Value Table entry\n// 0x45\nfunction RCVT(state) {\n const stack = state.stack;\n const cvte = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'RCVT', cvte);\n\n stack.push(state.cvt[cvte] * 0x40);\n}\n\n// GC[] Get Coordinate projected onto the projection vector\n// 0x46-0x47\nfunction GC(a, state) {\n const stack = state.stack;\n const pi = stack.pop();\n const p = state.z2[pi];\n\n if (exports.DEBUG) console.log(state.step, 'GC[' + a + ']', pi);\n\n stack.push(state.dpv.distance(p, HPZero, a, false) * 0x40);\n}\n\n// MD[a] Measure Distance\n// 0x49-0x4A\nfunction MD(a, state) {\n const stack = state.stack;\n const pi2 = stack.pop();\n const pi1 = stack.pop();\n const p2 = state.z1[pi2];\n const p1 = state.z0[pi1];\n const d = state.dpv.distance(p1, p2, a, a);\n\n if (exports.DEBUG) console.log(state.step, 'MD[' + a + ']', pi2, pi1, '->', d);\n\n state.stack.push(Math.round(d * 64));\n}\n\n// MPPEM[] Measure Pixels Per EM\n// 0x4B\nfunction MPPEM(state) {\n if (exports.DEBUG) console.log(state.step, 'MPPEM[]');\n state.stack.push(state.ppem);\n}\n\n// FLIPON[] set the auto FLIP Boolean to ON\n// 0x4D\nfunction FLIPON(state) {\n if (exports.DEBUG) console.log(state.step, 'FLIPON[]');\n state.autoFlip = true;\n}\n\n// LT[] Less Than\n// 0x50\nfunction LT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LT[]', e2, e1);\n\n stack.push(e1 < e2 ? 1 : 0);\n}\n\n// LTEQ[] Less Than or EQual\n// 0x53\nfunction LTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'LTEQ[]', e2, e1);\n\n stack.push(e1 <= e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than\n// 0x52\nfunction GT(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GT[]', e2, e1);\n\n stack.push(e1 > e2 ? 1 : 0);\n}\n\n// GTEQ[] Greater Than or EQual\n// 0x53\nfunction GTEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'GTEQ[]', e2, e1);\n\n stack.push(e1 >= e2 ? 1 : 0);\n}\n\n// EQ[] EQual\n// 0x54\nfunction EQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EQ[]', e2, e1);\n\n stack.push(e2 === e1 ? 1 : 0);\n}\n\n// NEQ[] Not EQual\n// 0x55\nfunction NEQ(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEQ[]', e2, e1);\n\n stack.push(e2 !== e1 ? 1 : 0);\n}\n\n// ODD[] ODD\n// 0x56\nfunction ODD(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ODD[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 1 : 0);\n}\n\n// EVEN[] EVEN\n// 0x57\nfunction EVEN(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'EVEN[]', n);\n\n stack.push(Math.trunc(n) % 2 ? 0 : 1);\n}\n\n// IF[] IF test\n// 0x58\nfunction IF(state) {\n let test = state.stack.pop();\n let ins;\n\n if (exports.DEBUG) console.log(state.step, 'IF[]', test);\n\n // if test is true it just continues\n // if not the ip is skipped until matching ELSE or EIF\n if (!test) {\n skip(state, true);\n\n if (exports.DEBUG) console.log(state.step, ins === 0x1B ? 'ELSE[]' : 'EIF[]');\n }\n}\n\n// EIF[] End IF\n// 0x59\nfunction EIF(state) {\n // this can be reached normally when\n // executing an else branch.\n // -> just ignore it\n\n if (exports.DEBUG) console.log(state.step, 'EIF[]');\n}\n\n// AND[] logical AND\n// 0x5A\nfunction AND(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'AND[]', e2, e1);\n\n stack.push(e2 && e1 ? 1 : 0);\n}\n\n// OR[] logical OR\n// 0x5B\nfunction OR(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'OR[]', e2, e1);\n\n stack.push(e2 || e1 ? 1 : 0);\n}\n\n// NOT[] logical NOT\n// 0x5C\nfunction NOT(state) {\n const stack = state.stack;\n const e = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NOT[]', e);\n\n stack.push(e ? 0 : 1);\n}\n\n// DELTAP1[] DELTA exception P1\n// DELTAP2[] DELTA exception P2\n// DELTAP3[] DELTA exception P3\n// 0x5D, 0x71, 0x72\nfunction DELTAP123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const fv = state.fv;\n const pv = state.pv;\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n const z0 = state.z0;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAP[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const pi = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n if (exports.DEBUG) console.log(state.step, 'DELTAPFIX', pi, 'by', mag * ds);\n\n const p = z0[pi];\n fv.setRelative(p, p, mag * ds, pv);\n }\n}\n\n// SDB[] Set Delta Base in the graphics state\n// 0x5E\nfunction SDB(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDB[]', n);\n\n state.deltaBase = n;\n}\n\n// SDS[] Set Delta Shift in the graphics state\n// 0x5F\nfunction SDS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SDS[]', n);\n\n state.deltaShift = Math.pow(0.5, n);\n}\n\n// ADD[] ADD\n// 0x60\nfunction ADD(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ADD[]', n2, n1);\n\n stack.push(n1 + n2);\n}\n\n// SUB[] SUB\n// 0x61\nfunction SUB(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SUB[]', n2, n1);\n\n stack.push(n1 - n2);\n}\n\n// DIV[] DIV\n// 0x62\nfunction DIV(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'DIV[]', n2, n1);\n\n stack.push(n1 * 64 / n2);\n}\n\n// MUL[] MUL\n// 0x63\nfunction MUL(state) {\n const stack = state.stack;\n const n2 = stack.pop();\n const n1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MUL[]', n2, n1);\n\n stack.push(n1 * n2 / 64);\n}\n\n// ABS[] ABSolute value\n// 0x64\nfunction ABS(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ABS[]', n);\n\n stack.push(Math.abs(n));\n}\n\n// NEG[] NEGate\n// 0x65\nfunction NEG(state) {\n const stack = state.stack;\n let n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'NEG[]', n);\n\n stack.push(-n);\n}\n\n// FLOOR[] FLOOR\n// 0x66\nfunction FLOOR(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'FLOOR[]', n);\n\n stack.push(Math.floor(n / 0x40) * 0x40);\n}\n\n// CEILING[] CEILING\n// 0x67\nfunction CEILING(state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'CEILING[]', n);\n\n stack.push(Math.ceil(n / 0x40) * 0x40);\n}\n\n// ROUND[ab] ROUND value\n// 0x68-0x6B\nfunction ROUND(dt, state) {\n const stack = state.stack;\n const n = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROUND[]');\n\n stack.push(state.round(n / 0x40) * 0x40);\n}\n\n// WCVTF[] Write Control Value Table in Funits\n// 0x70\nfunction WCVTF(state) {\n const stack = state.stack;\n const v = stack.pop();\n const l = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'WCVTF[]', v, l);\n\n state.cvt[l] = v * state.ppem / state.font.unitsPerEm;\n}\n\n// DELTAC1[] DELTA exception C1\n// DELTAC2[] DELTA exception C2\n// DELTAC3[] DELTA exception C3\n// 0x73, 0x74, 0x75\nfunction DELTAC123(b, state) {\n const stack = state.stack;\n const n = stack.pop();\n const ppem = state.ppem;\n const base = state.deltaBase + (b - 1) * 16;\n const ds = state.deltaShift;\n\n if (exports.DEBUG) console.log(state.step, 'DELTAC[' + b + ']', n, stack);\n\n for (let i = 0; i < n; i++) {\n const c = stack.pop();\n const arg = stack.pop();\n const appem = base + ((arg & 0xF0) >> 4);\n if (appem !== ppem) continue;\n\n let mag = (arg & 0x0F) - 8;\n if (mag >= 0) mag++;\n\n const delta = mag * ds;\n\n if (exports.DEBUG) console.log(state.step, 'DELTACFIX', c, 'by', delta);\n\n state.cvt[c] += delta;\n }\n}\n\n// SROUND[] Super ROUND\n// 0x76\nfunction SROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'SROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = 0.5;\n break;\n case 0x40:\n period = 1;\n break;\n case 0x80:\n period = 2;\n break;\n default:\n throw new Error('invalid SROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default: throw new Error('invalid SROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// S45ROUND[] Super ROUND 45 degrees\n// 0x77\nfunction S45ROUND(state) {\n let n = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'S45ROUND[]', n);\n\n state.round = roundSuper;\n\n let period;\n\n switch (n & 0xC0) {\n case 0x00:\n period = Math.sqrt(2) / 2;\n break;\n case 0x40:\n period = Math.sqrt(2);\n break;\n case 0x80:\n period = 2 * Math.sqrt(2);\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n state.srPeriod = period;\n\n switch (n & 0x30) {\n case 0x00:\n state.srPhase = 0;\n break;\n case 0x10:\n state.srPhase = 0.25 * period;\n break;\n case 0x20:\n state.srPhase = 0.5 * period;\n break;\n case 0x30:\n state.srPhase = 0.75 * period;\n break;\n default:\n throw new Error('invalid S45ROUND value');\n }\n\n n &= 0x0F;\n\n if (n === 0) state.srThreshold = 0;\n else state.srThreshold = (n / 8 - 0.5) * period;\n}\n\n// ROFF[] Round Off\n// 0x7A\nfunction ROFF(state) {\n if (exports.DEBUG) console.log(state.step, 'ROFF[]');\n\n state.round = roundOff;\n}\n\n// RUTG[] Round Up To Grid\n// 0x7C\nfunction RUTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RUTG[]');\n\n state.round = roundUpToGrid;\n}\n\n// RDTG[] Round Down To Grid\n// 0x7D\nfunction RDTG(state) {\n if (exports.DEBUG) console.log(state.step, 'RDTG[]');\n\n state.round = roundDownToGrid;\n}\n\n// SCANCTRL[] SCAN conversion ConTRoL\n// 0x85\nfunction SCANCTRL(state) {\n const n = state.stack.pop();\n\n // ignored by opentype.js\n\n if (exports.DEBUG) console.log(state.step, 'SCANCTRL[]', n);\n}\n\n// SDPVTL[a] Set Dual Projection Vector To Line\n// 0x86-0x87\nfunction SDPVTL(a, state) {\n const stack = state.stack;\n const p2i = stack.pop();\n const p1i = stack.pop();\n const p2 = state.z2[p2i];\n const p1 = state.z1[p1i];\n\n if (exports.DEBUG) console.log(state.step, 'SDPVTL[' + a + ']', p2i, p1i);\n\n let dx;\n let dy;\n\n if (!a) {\n dx = p1.x - p2.x;\n dy = p1.y - p2.y;\n } else {\n dx = p2.y - p1.y;\n dy = p1.x - p2.x;\n }\n\n state.dpv = getUnitVector(dx, dy);\n}\n\n// GETINFO[] GET INFOrmation\n// 0x88\nfunction GETINFO(state) {\n const stack = state.stack;\n const sel = stack.pop();\n let r = 0;\n\n if (exports.DEBUG) console.log(state.step, 'GETINFO[]', sel);\n\n // v35 as in no subpixel hinting\n if (sel & 0x01) r = 35;\n\n // TODO rotation and stretch currently not supported\n // and thus those GETINFO are always 0.\n\n // opentype.js is always gray scaling\n if (sel & 0x20) r |= 0x1000;\n\n stack.push(r);\n}\n\n// ROLL[] ROLL the top three stack elements\n// 0x8A\nfunction ROLL(state) {\n const stack = state.stack;\n const a = stack.pop();\n const b = stack.pop();\n const c = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'ROLL[]');\n\n stack.push(b);\n stack.push(a);\n stack.push(c);\n}\n\n// MAX[] MAXimum of top two stack elements\n// 0x8B\nfunction MAX(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MAX[]', e2, e1);\n\n stack.push(Math.max(e1, e2));\n}\n\n// MIN[] MINimum of top two stack elements\n// 0x8C\nfunction MIN(state) {\n const stack = state.stack;\n const e2 = stack.pop();\n const e1 = stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'MIN[]', e2, e1);\n\n stack.push(Math.min(e1, e2));\n}\n\n// SCANTYPE[] SCANTYPE\n// 0x8D\nfunction SCANTYPE(state) {\n const n = state.stack.pop();\n // ignored by opentype.js\n if (exports.DEBUG) console.log(state.step, 'SCANTYPE[]', n);\n}\n\n// INSTCTRL[] INSTCTRL\n// 0x8D\nfunction INSTCTRL(state) {\n const s = state.stack.pop();\n let v = state.stack.pop();\n\n if (exports.DEBUG) console.log(state.step, 'INSTCTRL[]', s, v);\n\n switch (s) {\n case 1 : state.inhibitGridFit = !!v; return;\n case 2 : state.ignoreCvt = !!v; return;\n default: throw new Error('invalid INSTCTRL[] selector');\n }\n}\n\n// PUSHB[abc] PUSH Bytes\n// 0xB0-0xB7\nfunction PUSHB(n, state) {\n const stack = state.stack;\n const prog = state.prog;\n let ip = state.ip;\n\n if (exports.DEBUG) console.log(state.step, 'PUSHB[' + n + ']');\n\n for (let i = 0; i < n; i++) stack.push(prog[++ip]);\n\n state.ip = ip;\n}\n\n// PUSHW[abc] PUSH Words\n// 0xB8-0xBF\nfunction PUSHW(n, state) {\n let ip = state.ip;\n const prog = state.prog;\n const stack = state.stack;\n\n if (exports.DEBUG) console.log(state.ip, 'PUSHW[' + n + ']');\n\n for (let i = 0; i < n; i++) {\n let w = (prog[++ip] << 8) | prog[++ip];\n if (w & 0x8000) w = -((w ^ 0xffff) + 1);\n stack.push(w);\n }\n\n state.ip = ip;\n}\n\n// MDRP[abcde] Move Direct Relative Point\n// 0xD0-0xEF\n// (if indirect is 0)\n//\n// and\n//\n// MIRP[abcde] Move Indirect Relative Point\n// 0xE0-0xFF\n// (if indirect is 1)\n\nfunction MDRP_MIRP(indirect, setRp0, keepD, ro, dt, state) {\n const stack = state.stack;\n const cvte = indirect && stack.pop();\n const pi = stack.pop();\n const rp0i = state.rp0;\n const rp = state.z0[rp0i];\n const p = state.z1[pi];\n\n const md = state.minDis;\n const fv = state.fv;\n const pv = state.dpv;\n let od; // original distance\n let d; // moving distance\n let sign; // sign of distance\n let cv;\n\n d = od = pv.distance(p, rp, true, true);\n sign = d >= 0 ? 1 : -1; // Math.sign would be 0 in case of 0\n\n // TODO consider autoFlip\n d = Math.abs(d);\n\n if (indirect) {\n cv = state.cvt[cvte];\n\n if (ro && Math.abs(d - cv) < state.cvCutIn) d = cv;\n }\n\n if (keepD && d < md) d = md;\n\n if (ro) d = state.round(d);\n\n fv.setRelative(p, rp, sign * d, pv);\n fv.touch(p);\n\n if (exports.DEBUG) {\n console.log(\n state.step,\n (indirect ? 'MIRP[' : 'MDRP[') +\n (setRp0 ? 'M' : 'm') +\n (keepD ? '>' : '_') +\n (ro ? 'R' : '_') +\n (dt === 0 ? 'Gr' : (dt === 1 ? 'Bl' : (dt === 2 ? 'Wh' : ''))) +\n ']',\n indirect ?\n cvte + '(' + state.cvt[cvte] + ',' + cv + ')' :\n '',\n pi,\n '(d =', od, '->', sign * d, ')'\n );\n }\n\n state.rp1 = state.rp0;\n state.rp2 = pi;\n if (setRp0) state.rp0 = pi;\n}\n\n/*\n* The instruction table.\n*/\ninstructionTable = [\n /* 0x00 */ SVTCA.bind(undefined, yUnitVector),\n /* 0x01 */ SVTCA.bind(undefined, xUnitVector),\n /* 0x02 */ SPVTCA.bind(undefined, yUnitVector),\n /* 0x03 */ SPVTCA.bind(undefined, xUnitVector),\n /* 0x04 */ SFVTCA.bind(undefined, yUnitVector),\n /* 0x05 */ SFVTCA.bind(undefined, xUnitVector),\n /* 0x06 */ SPVTL.bind(undefined, 0),\n /* 0x07 */ SPVTL.bind(undefined, 1),\n /* 0x08 */ SFVTL.bind(undefined, 0),\n /* 0x09 */ SFVTL.bind(undefined, 1),\n /* 0x0A */ SPVFS,\n /* 0x0B */ SFVFS,\n /* 0x0C */ GPV,\n /* 0x0D */ GFV,\n /* 0x0E */ SFVTPV,\n /* 0x0F */ ISECT,\n /* 0x10 */ SRP0,\n /* 0x11 */ SRP1,\n /* 0x12 */ SRP2,\n /* 0x13 */ SZP0,\n /* 0x14 */ SZP1,\n /* 0x15 */ SZP2,\n /* 0x16 */ SZPS,\n /* 0x17 */ SLOOP,\n /* 0x18 */ RTG,\n /* 0x19 */ RTHG,\n /* 0x1A */ SMD,\n /* 0x1B */ ELSE,\n /* 0x1C */ JMPR,\n /* 0x1D */ SCVTCI,\n /* 0x1E */ undefined, // TODO SSWCI\n /* 0x1F */ undefined, // TODO SSW\n /* 0x20 */ DUP,\n /* 0x21 */ POP,\n /* 0x22 */ CLEAR,\n /* 0x23 */ SWAP,\n /* 0x24 */ DEPTH,\n /* 0x25 */ CINDEX,\n /* 0x26 */ MINDEX,\n /* 0x27 */ undefined, // TODO ALIGNPTS\n /* 0x28 */ undefined,\n /* 0x29 */ undefined, // TODO UTP\n /* 0x2A */ LOOPCALL,\n /* 0x2B */ CALL,\n /* 0x2C */ FDEF,\n /* 0x2D */ undefined, // ENDF (eaten by FDEF)\n /* 0x2E */ MDAP.bind(undefined, 0),\n /* 0x2F */ MDAP.bind(undefined, 1),\n /* 0x30 */ IUP.bind(undefined, yUnitVector),\n /* 0x31 */ IUP.bind(undefined, xUnitVector),\n /* 0x32 */ SHP.bind(undefined, 0),\n /* 0x33 */ SHP.bind(undefined, 1),\n /* 0x34 */ SHC.bind(undefined, 0),\n /* 0x35 */ SHC.bind(undefined, 1),\n /* 0x36 */ SHZ.bind(undefined, 0),\n /* 0x37 */ SHZ.bind(undefined, 1),\n /* 0x38 */ SHPIX,\n /* 0x39 */ IP,\n /* 0x3A */ MSIRP.bind(undefined, 0),\n /* 0x3B */ MSIRP.bind(undefined, 1),\n /* 0x3C */ ALIGNRP,\n /* 0x3D */ RTDG,\n /* 0x3E */ MIAP.bind(undefined, 0),\n /* 0x3F */ MIAP.bind(undefined, 1),\n /* 0x40 */ NPUSHB,\n /* 0x41 */ NPUSHW,\n /* 0x42 */ WS,\n /* 0x43 */ RS,\n /* 0x44 */ WCVTP,\n /* 0x45 */ RCVT,\n /* 0x46 */ GC.bind(undefined, 0),\n /* 0x47 */ GC.bind(undefined, 1),\n /* 0x48 */ undefined, // TODO SCFS\n /* 0x49 */ MD.bind(undefined, 0),\n /* 0x4A */ MD.bind(undefined, 1),\n /* 0x4B */ MPPEM,\n /* 0x4C */ undefined, // TODO MPS\n /* 0x4D */ FLIPON,\n /* 0x4E */ undefined, // TODO FLIPOFF\n /* 0x4F */ undefined, // TODO DEBUG\n /* 0x50 */ LT,\n /* 0x51 */ LTEQ,\n /* 0x52 */ GT,\n /* 0x53 */ GTEQ,\n /* 0x54 */ EQ,\n /* 0x55 */ NEQ,\n /* 0x56 */ ODD,\n /* 0x57 */ EVEN,\n /* 0x58 */ IF,\n /* 0x59 */ EIF,\n /* 0x5A */ AND,\n /* 0x5B */ OR,\n /* 0x5C */ NOT,\n /* 0x5D */ DELTAP123.bind(undefined, 1),\n /* 0x5E */ SDB,\n /* 0x5F */ SDS,\n /* 0x60 */ ADD,\n /* 0x61 */ SUB,\n /* 0x62 */ DIV,\n /* 0x63 */ MUL,\n /* 0x64 */ ABS,\n /* 0x65 */ NEG,\n /* 0x66 */ FLOOR,\n /* 0x67 */ CEILING,\n /* 0x68 */ ROUND.bind(undefined, 0),\n /* 0x69 */ ROUND.bind(undefined, 1),\n /* 0x6A */ ROUND.bind(undefined, 2),\n /* 0x6B */ ROUND.bind(undefined, 3),\n /* 0x6C */ undefined, // TODO NROUND[ab]\n /* 0x6D */ undefined, // TODO NROUND[ab]\n /* 0x6E */ undefined, // TODO NROUND[ab]\n /* 0x6F */ undefined, // TODO NROUND[ab]\n /* 0x70 */ WCVTF,\n /* 0x71 */ DELTAP123.bind(undefined, 2),\n /* 0x72 */ DELTAP123.bind(undefined, 3),\n /* 0x73 */ DELTAC123.bind(undefined, 1),\n /* 0x74 */ DELTAC123.bind(undefined, 2),\n /* 0x75 */ DELTAC123.bind(undefined, 3),\n /* 0x76 */ SROUND,\n /* 0x77 */ S45ROUND,\n /* 0x78 */ undefined, // TODO JROT[]\n /* 0x79 */ undefined, // TODO JROF[]\n /* 0x7A */ ROFF,\n /* 0x7B */ undefined,\n /* 0x7C */ RUTG,\n /* 0x7D */ RDTG,\n /* 0x7E */ POP, // actually SANGW, supposed to do only a pop though\n /* 0x7F */ POP, // actually AA, supposed to do only a pop though\n /* 0x80 */ undefined, // TODO FLIPPT\n /* 0x81 */ undefined, // TODO FLIPRGON\n /* 0x82 */ undefined, // TODO FLIPRGOFF\n /* 0x83 */ undefined,\n /* 0x84 */ undefined,\n /* 0x85 */ SCANCTRL,\n /* 0x86 */ SDPVTL.bind(undefined, 0),\n /* 0x87 */ SDPVTL.bind(undefined, 1),\n /* 0x88 */ GETINFO,\n /* 0x89 */ undefined, // TODO IDEF\n /* 0x8A */ ROLL,\n /* 0x8B */ MAX,\n /* 0x8C */ MIN,\n /* 0x8D */ SCANTYPE,\n /* 0x8E */ INSTCTRL,\n /* 0x8F */ undefined,\n /* 0x90 */ undefined,\n /* 0x91 */ undefined,\n /* 0x92 */ undefined,\n /* 0x93 */ undefined,\n /* 0x94 */ undefined,\n /* 0x95 */ undefined,\n /* 0x96 */ undefined,\n /* 0x97 */ undefined,\n /* 0x98 */ undefined,\n /* 0x99 */ undefined,\n /* 0x9A */ undefined,\n /* 0x9B */ undefined,\n /* 0x9C */ undefined,\n /* 0x9D */ undefined,\n /* 0x9E */ undefined,\n /* 0x9F */ undefined,\n /* 0xA0 */ undefined,\n /* 0xA1 */ undefined,\n /* 0xA2 */ undefined,\n /* 0xA3 */ undefined,\n /* 0xA4 */ undefined,\n /* 0xA5 */ undefined,\n /* 0xA6 */ undefined,\n /* 0xA7 */ undefined,\n /* 0xA8 */ undefined,\n /* 0xA9 */ undefined,\n /* 0xAA */ undefined,\n /* 0xAB */ undefined,\n /* 0xAC */ undefined,\n /* 0xAD */ undefined,\n /* 0xAE */ undefined,\n /* 0xAF */ undefined,\n /* 0xB0 */ PUSHB.bind(undefined, 1),\n /* 0xB1 */ PUSHB.bind(undefined, 2),\n /* 0xB2 */ PUSHB.bind(undefined, 3),\n /* 0xB3 */ PUSHB.bind(undefined, 4),\n /* 0xB4 */ PUSHB.bind(undefined, 5),\n /* 0xB5 */ PUSHB.bind(undefined, 6),\n /* 0xB6 */ PUSHB.bind(undefined, 7),\n /* 0xB7 */ PUSHB.bind(undefined, 8),\n /* 0xB8 */ PUSHW.bind(undefined, 1),\n /* 0xB9 */ PUSHW.bind(undefined, 2),\n /* 0xBA */ PUSHW.bind(undefined, 3),\n /* 0xBB */ PUSHW.bind(undefined, 4),\n /* 0xBC */ PUSHW.bind(undefined, 5),\n /* 0xBD */ PUSHW.bind(undefined, 6),\n /* 0xBE */ PUSHW.bind(undefined, 7),\n /* 0xBF */ PUSHW.bind(undefined, 8),\n /* 0xC0 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 0),\n /* 0xC1 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 1),\n /* 0xC2 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 2),\n /* 0xC3 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 0, 3),\n /* 0xC4 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 0),\n /* 0xC5 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 1),\n /* 0xC6 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 2),\n /* 0xC7 */ MDRP_MIRP.bind(undefined, 0, 0, 0, 1, 3),\n /* 0xC8 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 0),\n /* 0xC9 */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 1),\n /* 0xCA */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 2),\n /* 0xCB */ MDRP_MIRP.bind(undefined, 0, 0, 1, 0, 3),\n /* 0xCC */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 0),\n /* 0xCD */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 1),\n /* 0xCE */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 2),\n /* 0xCF */ MDRP_MIRP.bind(undefined, 0, 0, 1, 1, 3),\n /* 0xD0 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 0),\n /* 0xD1 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 1),\n /* 0xD2 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 2),\n /* 0xD3 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 0, 3),\n /* 0xD4 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 0),\n /* 0xD5 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 1),\n /* 0xD6 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 2),\n /* 0xD7 */ MDRP_MIRP.bind(undefined, 0, 1, 0, 1, 3),\n /* 0xD8 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 0),\n /* 0xD9 */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 1),\n /* 0xDA */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 2),\n /* 0xDB */ MDRP_MIRP.bind(undefined, 0, 1, 1, 0, 3),\n /* 0xDC */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 0),\n /* 0xDD */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 1),\n /* 0xDE */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 2),\n /* 0xDF */ MDRP_MIRP.bind(undefined, 0, 1, 1, 1, 3),\n /* 0xE0 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 0),\n /* 0xE1 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 1),\n /* 0xE2 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 2),\n /* 0xE3 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 0, 3),\n /* 0xE4 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 0),\n /* 0xE5 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 1),\n /* 0xE6 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 2),\n /* 0xE7 */ MDRP_MIRP.bind(undefined, 1, 0, 0, 1, 3),\n /* 0xE8 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 0),\n /* 0xE9 */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 1),\n /* 0xEA */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 2),\n /* 0xEB */ MDRP_MIRP.bind(undefined, 1, 0, 1, 0, 3),\n /* 0xEC */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 0),\n /* 0xED */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 1),\n /* 0xEE */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 2),\n /* 0xEF */ MDRP_MIRP.bind(undefined, 1, 0, 1, 1, 3),\n /* 0xF0 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 0),\n /* 0xF1 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 1),\n /* 0xF2 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 2),\n /* 0xF3 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 0, 3),\n /* 0xF4 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 0),\n /* 0xF5 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 1),\n /* 0xF6 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 2),\n /* 0xF7 */ MDRP_MIRP.bind(undefined, 1, 1, 0, 1, 3),\n /* 0xF8 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 0),\n /* 0xF9 */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 1),\n /* 0xFA */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 2),\n /* 0xFB */ MDRP_MIRP.bind(undefined, 1, 1, 1, 0, 3),\n /* 0xFC */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 0),\n /* 0xFD */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 1),\n /* 0xFE */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 2),\n /* 0xFF */ MDRP_MIRP.bind(undefined, 1, 1, 1, 1, 3)\n];\n\nexport default Hinting;\n\n/*****************************\n Mathematical Considerations\n******************************\n\nfv ... refers to freedom vector\npv ... refers to projection vector\nrp ... refers to reference point\np ... refers to to point being operated on\nd ... refers to distance\n\nSETRELATIVE:\n============\n\ncase freedom vector == x-axis:\n------------------------------\n\n (pv)\n .-'\n rpd .-'\n .-*\n d .-'90°'\n .-' '\n .-' '\n *-' ' b\n rp '\n '\n '\n p *----------*-------------- (fv)\n pm\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b\n\n y - rpdy = pvns * (x- rpdx)\n\n y = p.y\n\n x = rpdx + ( p.y - rpdy ) / pvns\n\n\ncase freedom vector == y-axis:\n------------------------------\n\n * pm\n |\\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\\n | \\ b\n | \\\n | \\\n | \\ .-' (pv)\n | 90° \\.-'\n | .-'* rpd\n | .-'\n * *-' d\n p rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns ... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n x = p.x\n\n y = rpdy + pvns * (p.x - rpdx)\n\n\n\ngeneric case:\n-------------\n\n\n .'(fv)\n .'\n .* pm\n .' !\n .' .\n .' !\n .' . b\n .' !\n * .\n p !\n 90° . ... (pv)\n ...-*-'''\n ...---''' rpd\n ...---''' d\n *--'''\n rp\n\n rpdx = rpx + d * pv.x\n rpdy = rpy + d * pv.y\n\n equation of line b:\n pvns... normal slope to pv\n\n y - rpdy = pvns * (x - rpdx)\n\n equation of freedom vector line:\n fvs ... slope of freedom vector (=fy/fx)\n\n y - py = fvs * (x - px)\n\n\n on pm both equations are true for same x/y\n\n y - rpdy = pvns * (x - rpdx)\n\n y - py = fvs * (x - px)\n\n form to y and set equal:\n\n pvns * (x - rpdx) + rpdy = fvs * (x - px) + py\n\n expand:\n\n pvns * x - pvns * rpdx + rpdy = fvs * x - fvs * px + py\n\n switch:\n\n fvs * x - fvs * px + py = pvns * x - pvns * rpdx + rpdy\n\n solve for x:\n\n fvs * x - pvns * x = fvs * px - pvns * rpdx - py + rpdy\n\n\n\n fvs * px - pvns * rpdx + rpdy - py\n x = -----------------------------------\n fvs - pvns\n\n and:\n\n y = fvs * (x - px) + py\n\n\n\nINTERPOLATE:\n============\n\nExamples of point interpolation.\n\nThe weight of the movement of the reference point gets bigger\nthe further the other reference point is away, thus the safest\noption (that is avoiding 0/0 divisions) is to weight the\noriginal distance of the other point by the sum of both distances.\n\nIf the sum of both distances is 0, then move the point by the\narithmetic average of the movement of both reference points.\n\n\n\n\n (+6)\n rp1o *---->*rp1\n . . (+12)\n . . rp2o *---------->* rp2\n . . . .\n . . . .\n . 10 20 . .\n |.........|...................| .\n . . .\n . . (+8) .\n po *------>*p .\n . . .\n . 12 . 24 .\n |...........|.......................|\n 36\n\n\n-------\n\n\n\n (+10)\n rp1o *-------->*rp1\n . . (-10)\n . . rp2 *<---------* rpo2\n . . . .\n . . . .\n . 10 . 30 . .\n |.........|.............................|\n . .\n . (+5) .\n po *--->* p .\n . . .\n . . 20 .\n |....|..............|\n 5 15\n\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .\n rp2o *-------->*rp2\n\n\n (+10)\n po *-------->* p\n\n-------\n\n\n (+10)\n rp1o *-------->*rp1\n . .\n . .(+30)\n rp2o *---------------------------->*rp2\n\n\n (+25)\n po *----------------------->* p\n\n\n\nvim: set ts=4 sw=4 expandtab:\n*****/\n","/**\n * Converts a string into a list of tokens.\n */\n\n/**\n * Create a new token\n * @param {string} char a single char\n */\nfunction Token(char) {\n this.char = char;\n this.state = {};\n this.activeState = null;\n}\n\n/**\n * Create a new context range\n * @param {number} startIndex range start index\n * @param {number} endOffset range end index offset\n * @param {string} contextName owner context name\n */\nfunction ContextRange(startIndex, endOffset, contextName) {\n this.contextName = contextName;\n this.startIndex = startIndex;\n this.endOffset = endOffset;\n}\n\n/**\n * Check context start and end\n * @param {string} contextName a unique context name\n * @param {function} checkStart a predicate function the indicates a context's start\n * @param {function} checkEnd a predicate function the indicates a context's end\n */\nfunction ContextChecker(contextName, checkStart, checkEnd) {\n this.contextName = contextName;\n this.openRange = null;\n this.ranges = [];\n this.checkStart = checkStart;\n this.checkEnd = checkEnd;\n}\n\n/**\n * @typedef ContextParams\n * @type Object\n * @property {array} context context items\n * @property {number} currentIndex current item index\n */\n\n/**\n * Create a context params\n * @param {array} context a list of items\n * @param {number} currentIndex current item index\n */\nfunction ContextParams(context, currentIndex) {\n this.context = context;\n this.index = currentIndex;\n this.length = context.length;\n this.current = context[currentIndex];\n this.backtrack = context.slice(0, currentIndex);\n this.lookahead = context.slice(currentIndex + 1);\n}\n\n/**\n * Create an event instance\n * @param {string} eventId event unique id\n */\nfunction Event(eventId) {\n this.eventId = eventId;\n this.subscribers = [];\n}\n\n/**\n * Initialize a core events and auto subscribe required event handlers\n * @param {any} events an object that enlists core events handlers\n */\nfunction initializeCoreEvents(events) {\n const coreEvents = [\n 'start', 'end', 'next', 'newToken', 'contextStart',\n 'contextEnd', 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD', 'updateContextsRanges'\n ];\n\n coreEvents.forEach(eventId => {\n Object.defineProperty(this.events, eventId, {\n value: new Event(eventId)\n });\n });\n\n if (!!events) {\n coreEvents.forEach(eventId => {\n const event = events[eventId];\n if (typeof event === 'function') {\n this.events[eventId].subscribe(event);\n }\n });\n }\n const requiresContextUpdate = [\n 'insertToken', 'removeToken', 'removeRange',\n 'replaceToken', 'replaceRange', 'composeRUD'\n ];\n requiresContextUpdate.forEach(eventId => {\n this.events[eventId].subscribe(\n this.updateContextsRanges\n );\n });\n}\n\n/**\n * Converts a string into a list of tokens\n * @param {any} events tokenizer core events\n */\nfunction Tokenizer(events) {\n this.tokens = [];\n this.registeredContexts = {};\n this.contextCheckers = [];\n this.events = {};\n this.registeredModifiers = [];\n\n initializeCoreEvents.call(this, events);\n}\n\n/**\n * Sets the state of a token, usually called by a state modifier.\n * @param {string} key state item key\n * @param {any} value state item value\n */\nToken.prototype.setState = function(key, value) {\n this.state[key] = value;\n this.activeState = { key, value: this.state[key] };\n return this.activeState;\n};\n\nToken.prototype.getState = function (stateId) {\n return this.state[stateId] || null;\n};\n\n/**\n * Checks if an index exists in the tokens list.\n * @param {number} index token index\n */\nTokenizer.prototype.inboundIndex = function(index) {\n return index >= 0 && index < this.tokens.length;\n};\n\n/**\n * Compose and apply a list of operations (replace, update, delete)\n * @param {array} RUDs replace, update and delete operations\n * TODO: Perf. Optimization (lengthBefore === lengthAfter ? dispatch once)\n */\nTokenizer.prototype.composeRUD = function (RUDs) {\n const silent = true;\n const state = RUDs.map(RUD => (\n this[RUD[0]].apply(this, RUD.slice(1).concat(silent))\n ));\n const hasFAILObject = obj => (\n typeof obj === 'object' &&\n obj.hasOwnProperty('FAIL')\n );\n if (state.every(hasFAILObject)) {\n return {\n FAIL: `composeRUD: one or more operations hasn't completed successfully`,\n report: state.filter(hasFAILObject)\n };\n }\n this.dispatch('composeRUD', [state.filter(op => !hasFAILObject(op))]);\n};\n\n/**\n * Replace a range of tokens with a list of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {token} tokens a list of tokens to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceRange = function (startIndex, offset, tokens, silent) {\n offset = offset !== null ? offset : this.tokens.length;\n const isTokenType = tokens.every(token => token instanceof Token);\n if (!isNaN(startIndex) && this.inboundIndex(startIndex) && isTokenType) {\n const replaced = this.tokens.splice.apply(\n this.tokens, [startIndex, offset].concat(tokens)\n );\n if (!silent) this.dispatch('replaceToken', [startIndex, offset, tokens]);\n return [replaced, tokens];\n } else {\n return { FAIL: 'replaceRange: invalid tokens or startIndex.' };\n }\n};\n\n/**\n * Replace a token with another token\n * @param {number} index token index\n * @param {token} token a token to replace\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.replaceToken = function (index, token, silent) {\n if (!isNaN(index) && this.inboundIndex(index) && token instanceof Token) {\n const replaced = this.tokens.splice(index, 1, token);\n if (!silent) this.dispatch('replaceToken', [index, token]);\n return [replaced[0], token];\n } else {\n return { FAIL: 'replaceToken: invalid token or index.' };\n }\n};\n\n/**\n * Removes a range of tokens\n * @param {number} startIndex range start index\n * @param {number} offset range offset\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeRange = function(startIndex, offset, silent) {\n offset = !isNaN(offset) ? offset : this.tokens.length;\n const tokens = this.tokens.splice(startIndex, offset);\n if (!silent) this.dispatch('removeRange', [tokens, startIndex, offset]);\n return tokens;\n};\n\n/**\n * Remove a token at a certain index\n * @param {number} index token index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.removeToken = function(index, silent) {\n if (!isNaN(index) && this.inboundIndex(index)) {\n const token = this.tokens.splice(index, 1);\n if (!silent) this.dispatch('removeToken', [token, index]);\n return token;\n } else {\n return { FAIL: 'removeToken: invalid token index.' };\n }\n};\n\n/**\n * Insert a list of tokens at a certain index\n * @param {array} tokens a list of tokens to insert\n * @param {number} index insert the list of tokens at index\n * @param {boolean} silent dispatch events and update context ranges\n */\nTokenizer.prototype.insertToken = function (tokens, index, silent) {\n const tokenType = tokens.every(\n token => token instanceof Token\n );\n if (tokenType) {\n this.tokens.splice.apply(\n this.tokens, [index, 0].concat(tokens)\n );\n if (!silent) this.dispatch('insertToken', [tokens, index]);\n return tokens;\n } else {\n return { FAIL: 'insertToken: invalid token(s).' };\n }\n};\n\n/**\n * A state modifier that is called on 'newToken' event\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a function to update token state\n */\nTokenizer.prototype.registerModifier = function(modifierId, condition, modifier) {\n this.events.newToken.subscribe(function(token, contextParams) {\n const conditionParams = [token, contextParams];\n const canApplyModifier = (\n condition === null ||\n condition.apply(this, conditionParams) === true\n );\n const modifierParams = [token, contextParams];\n if (canApplyModifier) {\n let newStateValue = modifier.apply(this, modifierParams);\n token.setState(modifierId, newStateValue);\n }\n });\n this.registeredModifiers.push(modifierId);\n};\n\n/**\n * Subscribe a handler to an event\n * @param {function} eventHandler an event handler function\n */\nEvent.prototype.subscribe = function (eventHandler) {\n if (typeof eventHandler === 'function') {\n return ((this.subscribers.push(eventHandler)) - 1);\n } else {\n return { FAIL: `invalid '${this.eventId}' event handler`};\n }\n};\n\n/**\n * Unsubscribe an event handler\n * @param {string} subsId subscription id\n */\nEvent.prototype.unsubscribe = function (subsId) {\n this.subscribers.splice(subsId, 1);\n};\n\n/**\n * Sets context params current value index\n * @param {number} index context params current value index\n */\nContextParams.prototype.setCurrentIndex = function(index) {\n this.index = index;\n this.current = this.context[index];\n this.backtrack = this.context.slice(0, index);\n this.lookahead = this.context.slice(index + 1);\n};\n\n/**\n * Get an item at an offset from the current value\n * example (current value is 3):\n * 1 2 [3] 4 5 | items values\n * -2 -1 0 1 2 | offset values\n * @param {number} offset an offset from current value index\n */\nContextParams.prototype.get = function (offset) {\n switch (true) {\n case (offset === 0):\n return this.current;\n case (offset < 0 && Math.abs(offset) <= this.backtrack.length):\n return this.backtrack.slice(offset)[0];\n case (offset > 0 && offset <= this.lookahead.length):\n return this.lookahead[offset - 1];\n default:\n return null;\n }\n};\n\n/**\n * Converts a context range into a string value\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.rangeToText = function (range) {\n if (range instanceof ContextRange) {\n return (\n this.getRangeTokens(range)\n .map(token => token.char).join('')\n );\n }\n};\n\n/**\n * Converts all tokens into a string\n */\nTokenizer.prototype.getText = function () {\n return this.tokens.map(token => token.char).join('');\n};\n\n/**\n * Get a context by name\n * @param {string} contextName context name to get\n */\nTokenizer.prototype.getContext = function (contextName) {\n let context = this.registeredContexts[contextName];\n return !!context ? context : null;\n};\n\n/**\n * Subscribes a new event handler to an event\n * @param {string} eventName event name to subscribe to\n * @param {function} eventHandler a function to be invoked on event\n */\nTokenizer.prototype.on = function(eventName, eventHandler) {\n const event = this.events[eventName];\n if (!!event) {\n return event.subscribe(eventHandler);\n } else {\n return null;\n }\n};\n\n/**\n * Dispatches an event\n * @param {string} eventName event name\n * @param {any} args event handler arguments\n */\nTokenizer.prototype.dispatch = function(eventName, args) {\n const event = this.events[eventName];\n if (event instanceof Event) {\n event.subscribers.forEach(subscriber => {\n subscriber.apply(this, args || []);\n });\n }\n};\n\n/**\n * Register a new context checker\n * @param {string} contextName a unique context name\n * @param {function} contextStartCheck a predicate function that returns true on context start\n * @param {function} contextEndCheck a predicate function that returns true on context end\n * TODO: call tokenize on registration to update context ranges with the new context.\n */\nTokenizer.prototype.registerContextChecker = function(contextName, contextStartCheck, contextEndCheck) {\n if (!!this.getContext(contextName)) return {\n FAIL:\n `context name '${contextName}' is already registered.`\n };\n if (typeof contextStartCheck !== 'function') return {\n FAIL:\n `missing context start check.`\n };\n if (typeof contextEndCheck !== 'function') return {\n FAIL:\n `missing context end check.`\n };\n const contextCheckers = new ContextChecker(\n contextName, contextStartCheck, contextEndCheck\n );\n this.registeredContexts[contextName] = contextCheckers;\n this.contextCheckers.push(contextCheckers);\n return contextCheckers;\n};\n\n/**\n * Gets a context range tokens\n * @param {contextRange} range a context range\n */\nTokenizer.prototype.getRangeTokens = function(range) {\n const endIndex = range.startIndex + range.endOffset;\n return [].concat(\n this.tokens\n .slice(range.startIndex, endIndex)\n );\n};\n\n/**\n * Gets the ranges of a context\n * @param {string} contextName context name\n */\nTokenizer.prototype.getContextRanges = function(contextName) {\n const context = this.getContext(contextName);\n if (!!context) {\n return context.ranges;\n } else {\n return { FAIL: `context checker '${contextName}' is not registered.` };\n }\n};\n\n/**\n * Resets context ranges to run context update\n */\nTokenizer.prototype.resetContextsRanges = function () {\n const registeredContexts = this.registeredContexts;\n for (const contextName in registeredContexts) {\n if (registeredContexts.hasOwnProperty(contextName)) {\n const context = registeredContexts[contextName];\n context.ranges = [];\n }\n }\n};\n\n/**\n * Updates context ranges\n */\nTokenizer.prototype.updateContextsRanges = function () {\n this.resetContextsRanges();\n const chars = this.tokens.map(token => token.char);\n for (let i = 0; i < chars.length; i++) {\n const contextParams = new ContextParams(chars, i);\n this.runContextCheck(contextParams);\n }\n this.dispatch('updateContextsRanges', [this.registeredContexts]);\n};\n\n/**\n * Sets the end offset of an open range\n * @param {number} offset range end offset\n * @param {string} contextName context name\n */\nTokenizer.prototype.setEndOffset = function (offset, contextName) {\n const startIndex = this.getContext(contextName).openRange.startIndex;\n let range = new ContextRange(startIndex, offset, contextName);\n const ranges = this.getContext(contextName).ranges;\n range.rangeId = `${contextName}.${ranges.length}`;\n ranges.push(range);\n this.getContext(contextName).openRange = null;\n return range;\n};\n\n/**\n * Runs a context check on the current context\n * @param {contextParams} contextParams current context params\n */\nTokenizer.prototype.runContextCheck = function(contextParams) {\n const index = contextParams.index;\n this.contextCheckers.forEach(contextChecker => {\n let contextName = contextChecker.contextName;\n let openRange = this.getContext(contextName).openRange;\n if (!openRange && contextChecker.checkStart(contextParams)) {\n openRange = new ContextRange(index, null, contextName);\n this.getContext(contextName).openRange = openRange;\n this.dispatch('contextStart', [contextName, index]);\n }\n if (!!openRange && contextChecker.checkEnd(contextParams)) {\n const offset = (index - openRange.startIndex) + 1;\n const range = this.setEndOffset(offset, contextName);\n this.dispatch('contextEnd', [contextName, range]);\n }\n });\n};\n\n/**\n * Converts a text into a list of tokens\n * @param {string} text a text to tokenize\n */\nTokenizer.prototype.tokenize = function (text) {\n this.tokens = [];\n this.resetContextsRanges();\n let chars = Array.from(text);\n this.dispatch('start');\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const contextParams = new ContextParams(chars, i);\n this.dispatch('next', [contextParams]);\n this.runContextCheck(contextParams);\n let token = new Token(char);\n this.tokens.push(token);\n this.dispatch('newToken', [token, contextParams]);\n }\n this.dispatch('end', [this.tokens]);\n return this.tokens;\n};\n\nexport default Tokenizer;\nexport { Token, Event, ContextRange, ContextParams };\n","// ╭─┄┄┄────────────────────────┄─────────────────────────────────────────────╮\n// ┊ Character Class Assertions ┊ Checks if a char belongs to a certain class ┊\n// ╰─╾──────────────────────────┄─────────────────────────────────────────────╯\n// jscs:disable maximumLineLength\n/**\n * Check if a char is Arabic\n * @param {string} c a single char\n */\nexport function isArabicChar(c) {\n return /[\\u0600-\\u065F\\u066A-\\u06D2\\u06FA-\\u06FF]/.test(c);\n}\n\n/**\n * Check if a char is an isolated arabic char\n * @param {string} c a single char\n */\nexport function isIsolatedArabicChar(char) {\n return /[\\u0630\\u0690\\u0621\\u0631\\u0661\\u0671\\u0622\\u0632\\u0672\\u0692\\u06C2\\u0623\\u0673\\u0693\\u06C3\\u0624\\u0694\\u06C4\\u0625\\u0675\\u0695\\u06C5\\u06E5\\u0676\\u0696\\u06C6\\u0627\\u0677\\u0697\\u06C7\\u0648\\u0688\\u0698\\u06C8\\u0689\\u0699\\u06C9\\u068A\\u06CA\\u066B\\u068B\\u06CB\\u068C\\u068D\\u06CD\\u06FD\\u068E\\u06EE\\u06FE\\u062F\\u068F\\u06CF\\u06EF]/.test(char);\n}\n\n/**\n * Check if a char is an Arabic Tashkeel char\n * @param {string} c a single char\n */\nexport function isTashkeelArabicChar(char) {\n return /[\\u0600-\\u0605\\u060C-\\u060E\\u0610-\\u061B\\u061E\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED]/.test(char);\n}\n\n/**\n * Check if a char is Latin\n * @param {string} c a single char\n */\nexport function isLatinChar(c) {\n return /[A-z]/.test(c);\n}\n\n/**\n * Check if a char is whitespace char\n * @param {string} c a single char\n */\nexport function isWhiteSpace(c) {\n return /\\s/.test(c);\n}\n","/**\n * Query a feature by some of it's properties to lookup a glyph substitution.\n */\n\nimport { ContextParams } from '../tokenizer';\nimport { isTashkeelArabicChar } from '../char';\n\n/**\n * Create feature query instance\n * @param {Font} font opentype font instance\n */\nfunction FeatureQuery(font) {\n this.font = font;\n this.features = {};\n}\n\n/**\n * @typedef SubstitutionAction\n * @type Object\n * @property {number} id substitution type\n * @property {string} tag feature tag\n * @property {any} substitution substitution value(s)\n */\n\n/**\n * Create a substitution action instance\n * @param {SubstitutionAction} action\n */\nfunction SubstitutionAction(action) {\n this.id = action.id;\n this.tag = action.tag;\n this.substitution = action.substitution;\n}\n\n/**\n * Lookup a coverage table\n * @param {number} glyphIndex glyph index\n * @param {CoverageTable} coverage coverage table\n */\nfunction lookupCoverage(glyphIndex, coverage) {\n if (!glyphIndex) return -1;\n switch (coverage.format) {\n case 1:\n return coverage.glyphs.indexOf(glyphIndex);\n\n case 2:\n let ranges = coverage.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const range = ranges[i];\n if (glyphIndex >= range.start && glyphIndex <= range.end) {\n let offset = glyphIndex - range.start;\n return range.index + offset;\n }\n }\n break;\n default:\n return -1; // not found\n }\n return -1;\n}\n\n/**\n * Handle a single substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return glyphIndex + subtable.deltaGlyphId;\n}\n\n/**\n * Handle a single substitution - format 2\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction singleSubstitutionFormat2(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.substitute[substituteIndex];\n}\n\n/**\n * Lookup a list of coverage tables\n * @param {any} coverageList a list of coverage tables\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction lookupCoverageList(coverageList, contextParams) {\n let lookupList = [];\n for (let i = 0; i < coverageList.length; i++) {\n const coverage = coverageList[i];\n let glyphIndex = contextParams.current;\n glyphIndex = Array.isArray(glyphIndex) ? glyphIndex[0] : glyphIndex;\n const lookupIndex = lookupCoverage(glyphIndex, coverage);\n if (lookupIndex !== -1) {\n lookupList.push(lookupIndex);\n }\n }\n if (lookupList.length !== coverageList.length) return -1;\n return lookupList;\n}\n\n/**\n * Handle chaining context substitution - format 3\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction chainingSubstitutionFormat3(contextParams, subtable) {\n const lookupsCount = (\n subtable.inputCoverage.length +\n subtable.lookaheadCoverage.length +\n subtable.backtrackCoverage.length\n );\n if (contextParams.context.length < lookupsCount) return [];\n // INPUT LOOKUP //\n let inputLookups = lookupCoverageList(\n subtable.inputCoverage, contextParams\n );\n if (inputLookups === -1) return [];\n // LOOKAHEAD LOOKUP //\n const lookaheadOffset = subtable.inputCoverage.length - 1;\n if (contextParams.lookahead.length < subtable.lookaheadCoverage.length) return [];\n let lookaheadContext = contextParams.lookahead.slice(lookaheadOffset);\n while (lookaheadContext.length && isTashkeelArabicChar(lookaheadContext[0].char)) {\n lookaheadContext.shift();\n }\n const lookaheadParams = new ContextParams(lookaheadContext, 0);\n let lookaheadLookups = lookupCoverageList(\n subtable.lookaheadCoverage, lookaheadParams\n );\n // BACKTRACK LOOKUP //\n let backtrackContext = [].concat(contextParams.backtrack);\n backtrackContext.reverse();\n while (backtrackContext.length && isTashkeelArabicChar(backtrackContext[0].char)) {\n backtrackContext.shift();\n }\n if (backtrackContext.length < subtable.backtrackCoverage.length) return [];\n const backtrackParams = new ContextParams(backtrackContext, 0);\n let backtrackLookups = lookupCoverageList(\n subtable.backtrackCoverage, backtrackParams\n );\n const contextRulesMatch = (\n inputLookups.length === subtable.inputCoverage.length &&\n lookaheadLookups.length === subtable.lookaheadCoverage.length &&\n backtrackLookups.length === subtable.backtrackCoverage.length\n );\n let substitutions = [];\n if (contextRulesMatch) {\n for (let i = 0; i < subtable.lookupRecords.length; i++) {\n const lookupRecord = subtable.lookupRecords[i];\n const lookupListIndex = lookupRecord.lookupListIndex;\n const lookupTable = this.getLookupByIndex(lookupListIndex);\n for (let s = 0; s < lookupTable.subtables.length; s++) {\n const subtable = lookupTable.subtables[s];\n const lookup = this.getLookupMethod(lookupTable, subtable);\n const substitutionType = this.getSubstitutionType(lookupTable, subtable);\n if (substitutionType === '12') {\n for (let n = 0; n < inputLookups.length; n++) {\n const glyphIndex = contextParams.get(n);\n const substitution = lookup(glyphIndex);\n if (substitution) substitutions.push(substitution);\n }\n }\n }\n }\n }\n return substitutions;\n}\n\n/**\n * Handle ligature substitution - format 1\n * @param {ContextParams} contextParams context params to lookup\n */\nfunction ligatureSubstitutionFormat1(contextParams, subtable) {\n // COVERAGE LOOKUP //\n let glyphIndex = contextParams.current;\n let ligSetIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (ligSetIndex === -1) return null;\n // COMPONENTS LOOKUP\n // (!) note, components are ordered in the written direction.\n let ligature;\n let ligatureSet = subtable.ligatureSets[ligSetIndex];\n for (let s = 0; s < ligatureSet.length; s++) {\n ligature = ligatureSet[s];\n for (let l = 0; l < ligature.components.length; l++) {\n const lookaheadItem = contextParams.lookahead[l];\n const component = ligature.components[l];\n if (lookaheadItem !== component) break;\n if (l === ligature.components.length - 1) return ligature;\n }\n }\n return null;\n}\n\n/**\n * Handle decomposition substitution - format 1\n * @param {number} glyphIndex glyph index\n * @param {any} subtable subtable\n */\nfunction decompositionSubstitutionFormat1(glyphIndex, subtable) {\n let substituteIndex = lookupCoverage(glyphIndex, subtable.coverage);\n if (substituteIndex === -1) return null;\n return subtable.sequences[substituteIndex];\n}\n\n/**\n * Get default script features indexes\n */\nFeatureQuery.prototype.getDefaultScriptFeaturesIndexes = function () {\n const scripts = this.font.tables.gsub.scripts;\n for (let s = 0; s < scripts.length; s++) {\n const script = scripts[s];\n if (script.tag === 'DFLT') return (\n script.script.defaultLangSys.featureIndexes\n );\n }\n return [];\n};\n\n/**\n * Get feature indexes of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeaturesIndexes = function(scriptTag) {\n const tables = this.font.tables;\n if (!tables.gsub) return [];\n if (!scriptTag) return this.getDefaultScriptFeaturesIndexes();\n const scripts = this.font.tables.gsub.scripts;\n for (let i = 0; i < scripts.length; i++) {\n const script = scripts[i];\n if (script.tag === scriptTag && script.script.defaultLangSys) {\n return script.script.defaultLangSys.featureIndexes;\n } else {\n let langSysRecords = script.langSysRecords;\n if (!!langSysRecords) {\n for (let j = 0; j < langSysRecords.length; j++) {\n const langSysRecord = langSysRecords[j];\n if (langSysRecord.tag === scriptTag) {\n let langSys = langSysRecord.langSys;\n return langSys.featureIndexes;\n }\n }\n }\n }\n }\n return this.getDefaultScriptFeaturesIndexes();\n};\n\n/**\n * Map a feature tag to a gsub feature\n * @param {any} features gsub features\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.mapTagsToFeatures = function (features, scriptTag) {\n let tags = {};\n for (let i = 0; i < features.length; i++) {\n const tag = features[i].tag;\n const feature = features[i].feature;\n tags[tag] = feature;\n }\n this.features[scriptTag].tags = tags;\n};\n\n/**\n * Get features of a specific script\n * @param {string} scriptTag script tag\n */\nFeatureQuery.prototype.getScriptFeatures = function (scriptTag) {\n let features = this.features[scriptTag];\n if (this.features.hasOwnProperty(scriptTag)) return features;\n const featuresIndexes = this.getScriptFeaturesIndexes(scriptTag);\n if (!featuresIndexes) return null;\n const gsub = this.font.tables.gsub;\n features = featuresIndexes.map(index => gsub.features[index]);\n this.features[scriptTag] = features;\n this.mapTagsToFeatures(features, scriptTag);\n return features;\n};\n\n/**\n * Get substitution type\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getSubstitutionType = function(lookupTable, subtable) {\n const lookupType = lookupTable.lookupType.toString();\n const substFormat = subtable.substFormat.toString();\n return lookupType + substFormat;\n};\n\n/**\n * Get lookup method\n * @param {any} lookupTable lookup table\n * @param {any} subtable subtable\n */\nFeatureQuery.prototype.getLookupMethod = function(lookupTable, subtable) {\n let substitutionType = this.getSubstitutionType(lookupTable, subtable);\n switch (substitutionType) {\n case '11':\n return glyphIndex => singleSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n case '12':\n return glyphIndex => singleSubstitutionFormat2.apply(\n this, [glyphIndex, subtable]\n );\n case '63':\n return contextParams => chainingSubstitutionFormat3.apply(\n this, [contextParams, subtable]\n );\n case '41':\n return contextParams => ligatureSubstitutionFormat1.apply(\n this, [contextParams, subtable]\n );\n case '21':\n return glyphIndex => decompositionSubstitutionFormat1.apply(\n this, [glyphIndex, subtable]\n );\n default:\n throw new Error(\n `lookupType: ${lookupTable.lookupType} - ` +\n `substFormat: ${subtable.substFormat} ` +\n `is not yet supported`\n );\n }\n};\n\n/**\n * [ LOOKUP TYPES ]\n * -------------------------------\n * Single 1;\n * Multiple 2;\n * Alternate 3;\n * Ligature 4;\n * Context 5;\n * ChainingContext 6;\n * ExtensionSubstitution 7;\n * ReverseChainingContext 8;\n * -------------------------------\n *\n */\n\n/**\n * @typedef FQuery\n * @type Object\n * @param {string} tag feature tag\n * @param {string} script feature script\n * @param {ContextParams} contextParams context params\n */\n\n/**\n * Lookup a feature using a query parameters\n * @param {FQuery} query feature query\n */\nFeatureQuery.prototype.lookupFeature = function (query) {\n let contextParams = query.contextParams;\n let currentIndex = contextParams.index;\n const feature = this.getFeature({\n tag: query.tag, script: query.script\n });\n if (!feature) return new Error(\n `font '${this.font.names.fullName.en}' ` +\n `doesn't support feature '${query.tag}' ` +\n `for script '${query.script}'.`\n );\n const lookups = this.getFeatureLookups(feature);\n const substitutions = [].concat(contextParams.context);\n for (let l = 0; l < lookups.length; l++) {\n const lookupTable = lookups[l];\n const subtables = this.getLookupSubtables(lookupTable);\n for (let s = 0; s < subtables.length; s++) {\n const subtable = subtables[s];\n const substType = this.getSubstitutionType(lookupTable, subtable);\n const lookup = this.getLookupMethod(lookupTable, subtable);\n let substitution;\n switch (substType) {\n case '11':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 11, tag: query.tag, substitution\n }));\n }\n break;\n case '12':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 12, tag: query.tag, substitution\n }));\n }\n break;\n case '63':\n substitution = lookup(contextParams);\n if (Array.isArray(substitution) && substitution.length) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 63, tag: query.tag, substitution\n }));\n }\n break;\n case '41':\n substitution = lookup(contextParams);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 41, tag: query.tag, substitution\n }));\n }\n break;\n case '21':\n substitution = lookup(contextParams.current);\n if (substitution) {\n substitutions.splice(currentIndex, 1, new SubstitutionAction({\n id: 21, tag: query.tag, substitution\n }));\n }\n break;\n }\n contextParams = new ContextParams(substitutions, currentIndex);\n if (Array.isArray(substitution) && !substitution.length) continue;\n substitution = null;\n }\n }\n return substitutions.length ? substitutions : null;\n};\n\n/**\n * Checks if a font supports a specific features\n * @param {FQuery} query feature query object\n */\nFeatureQuery.prototype.supports = function (query) {\n if (!query.script) return false;\n this.getScriptFeatures(query.script);\n const supportedScript = this.features.hasOwnProperty(query.script);\n if (!query.tag) return supportedScript;\n const supportedFeature = (\n this.features[query.script].some(feature => feature.tag === query.tag)\n );\n return supportedScript && supportedFeature;\n};\n\n/**\n * Get lookup table subtables\n * @param {any} lookupTable lookup table\n */\nFeatureQuery.prototype.getLookupSubtables = function (lookupTable) {\n return lookupTable.subtables || null;\n};\n\n/**\n * Get lookup table by index\n * @param {number} index lookup table index\n */\nFeatureQuery.prototype.getLookupByIndex = function (index) {\n const lookups = this.font.tables.gsub.lookups;\n return lookups[index] || null;\n};\n\n/**\n * Get lookup tables for a feature\n * @param {string} feature\n */\nFeatureQuery.prototype.getFeatureLookups = function (feature) {\n // TODO: memoize\n return feature.lookupListIndexes.map(this.getLookupByIndex.bind(this));\n};\n\n/**\n * Query a feature by it's properties\n * @param {any} query an object that describes the properties of a query\n */\nFeatureQuery.prototype.getFeature = function getFeature(query) {\n if (!this.font) return { FAIL: `No font was found`};\n if (!this.features.hasOwnProperty(query.script)) {\n this.getScriptFeatures(query.script);\n }\n const scriptFeatures = this.features[query.script];\n if (!scriptFeatures) return (\n { FAIL: `No feature for script ${query.script}`}\n );\n if (!scriptFeatures.tags[query.tag]) return null;\n return this.features[query.script].tags[query.tag];\n};\n\nexport default FeatureQuery;\nexport { FeatureQuery, SubstitutionAction };\n","/**\n * Arabic word context checkers\n */\n\nimport { isArabicChar } from '../../../char';\n\nfunction arabicWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? arabic first char\n (prevChar === null && isArabicChar(char)) ||\n // ? arabic char preceded with a non arabic char\n (!isArabicChar(prevChar) && isArabicChar(char))\n );\n}\n\nfunction arabicWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last arabic char\n (nextChar === null) ||\n // ? next char is not arabic\n (!isArabicChar(nextChar))\n );\n}\n\nexport default {\n startCheck: arabicWordStartCheck,\n endCheck: arabicWordEndCheck\n};\n","/**\n * Arabic sentence context checkers\n */\n\nimport { isArabicChar, isWhiteSpace, isTashkeelArabicChar } from '../../../char';\n\nfunction arabicSentenceStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? an arabic char preceded with a non arabic char\n (isArabicChar(char) || isTashkeelArabicChar(char)) &&\n !isArabicChar(prevChar)\n );\n}\n\nfunction arabicSentenceEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n switch (true) {\n case nextChar === null:\n return true;\n case (!isArabicChar(nextChar) && !isTashkeelArabicChar(nextChar)):\n const nextIsWhitespace = isWhiteSpace(nextChar);\n if (!nextIsWhitespace) return true;\n if (nextIsWhitespace) {\n let arabicCharAhead = false;\n arabicCharAhead = (\n contextParams.lookahead.some(\n c => isArabicChar(c) || isTashkeelArabicChar(c)\n )\n );\n if (!arabicCharAhead) return true;\n }\n break;\n default:\n return false;\n }\n}\n\nexport default {\n startCheck: arabicSentenceStartCheck,\n endCheck: arabicSentenceEndCheck\n};\n","import { SubstitutionAction } from './featureQuery';\n\n/**\n * Apply single substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat1(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply single substitution format 2\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction singleSubstitutionFormat2(action, tokens, index) {\n tokens[index].setState(action.tag, action.substitution);\n}\n\n/**\n * Apply chaining context substitution format 3\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction chainingSubstitutionFormat3(action, tokens, index) {\n action.substitution.forEach((subst, offset) => {\n const token = tokens[index + offset];\n token.setState(action.tag, subst);\n });\n}\n\n/**\n * Apply ligature substitution format 1\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction ligatureSubstitutionFormat1(action, tokens, index) {\n let token = tokens[index];\n token.setState(action.tag, action.substitution.ligGlyph);\n const compsCount = action.substitution.components.length;\n for (let i = 0; i < compsCount; i++) {\n token = tokens[index + i + 1];\n token.setState('deleted', true);\n }\n}\n\n/**\n * Supported substitutions\n */\nconst SUBSTITUTIONS = {\n 11: singleSubstitutionFormat1,\n 12: singleSubstitutionFormat2,\n 63: chainingSubstitutionFormat3,\n 41: ligatureSubstitutionFormat1\n};\n\n/**\n * Apply substitutions to a list of tokens\n * @param {Array} substitutions substitutions\n * @param {any} tokens a list of tokens\n * @param {number} index token index\n */\nfunction applySubstitution(action, tokens, index) {\n if (action instanceof SubstitutionAction && SUBSTITUTIONS[action.id]) {\n SUBSTITUTIONS[action.id](action, tokens, index);\n }\n}\n\nexport default applySubstitution;\n","/**\n * Apply Arabic presentation forms to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport { isIsolatedArabicChar, isTashkeelArabicChar } from '../../char';\nimport { SubstitutionAction } from '../featureQuery';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Check if a char can be connected to it's preceding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectPrev(charContextParams) {\n let backtrack = [].concat(charContextParams.backtrack);\n for (let i = backtrack.length - 1; i >= 0; i--) {\n const prevChar = backtrack[i];\n const isolated = isIsolatedArabicChar(prevChar);\n const tashkeel = isTashkeelArabicChar(prevChar);\n if (!isolated && !tashkeel) return true;\n if (isolated) return false;\n }\n return false;\n}\n\n/**\n * Check if a char can be connected to it's proceeding char\n * @param {ContextParams} charContextParams context params of a char\n */\nfunction willConnectNext(charContextParams) {\n if (isIsolatedArabicChar(charContextParams.current)) return false;\n for (let i = 0; i < charContextParams.lookahead.length; i++) {\n const nextChar = charContextParams.lookahead[i];\n const tashkeel = isTashkeelArabicChar(nextChar);\n if (!tashkeel) return true;\n }\n return false;\n}\n\n/**\n * Apply arabic presentation forms to a list of tokens\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicPresentationForms(range) {\n const script = 'arab';\n const tags = this.featuresTags[script];\n const tokens = this.tokenizer.getRangeTokens(range);\n if (tokens.length === 1) return;\n let contextParams = new ContextParams(\n tokens.map(token => token.getState('glyphIndex')\n ), 0);\n const charContextParams = new ContextParams(\n tokens.map(token => token.char\n ), 0);\n tokens.forEach((token, index) => {\n if (isTashkeelArabicChar(token.char)) return;\n contextParams.setCurrentIndex(index);\n charContextParams.setCurrentIndex(index);\n let CONNECT = 0; // 2 bits 00 (10: can connect next) (01: can connect prev)\n if (willConnectPrev(charContextParams)) CONNECT |= 1;\n if (willConnectNext(charContextParams)) CONNECT |= 2;\n let tag;\n switch (CONNECT) {\n case 1: (tag = 'fina'); break;\n case 2: (tag = 'init'); break;\n case 3: (tag = 'medi'); break;\n }\n if (tags.indexOf(tag) === -1) return;\n let substitutions = this.query.lookupFeature({\n tag, script, contextParams\n });\n if (substitutions instanceof Error) return console.info(substitutions.message);\n substitutions.forEach((action, index) => {\n if (action instanceof SubstitutionAction) {\n applySubstitution(action, tokens, index);\n contextParams.context[index] = action.substitution;\n }\n });\n });\n}\n\nexport default arabicPresentationForms;\nexport { arabicPresentationForms };\n","/**\n * Apply Arabic required ligatures feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction arabicRequiredLigatures(range) {\n const script = 'arab';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'rlig', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default arabicRequiredLigatures;\nexport { arabicRequiredLigatures };\n","/**\n * Latin word context checkers\n */\n\nimport { isLatinChar } from '../../../char';\n\nfunction latinWordStartCheck(contextParams) {\n const char = contextParams.current;\n const prevChar = contextParams.get(-1);\n return (\n // ? latin first char\n (prevChar === null && isLatinChar(char)) ||\n // ? latin char preceded with a non latin char\n (!isLatinChar(prevChar) && isLatinChar(char))\n );\n}\n\nfunction latinWordEndCheck(contextParams) {\n const nextChar = contextParams.get(1);\n return (\n // ? last latin char\n (nextChar === null) ||\n // ? next char is not latin\n (!isLatinChar(nextChar))\n );\n}\n\nexport default {\n startCheck: latinWordStartCheck,\n endCheck: latinWordEndCheck\n};\n","/**\n * Apply Latin ligature feature to a range of tokens\n */\n\nimport { ContextParams } from '../../tokenizer';\nimport applySubstitution from '../applySubstitution';\n\n/**\n * Update context params\n * @param {any} tokens a list of tokens\n * @param {number} index current item index\n */\nfunction getContextParams(tokens, index) {\n const context = tokens.map(token => token.activeState.value);\n return new ContextParams(context, index || 0);\n}\n\n/**\n * Apply Arabic required ligatures to a context range\n * @param {ContextRange} range a range of tokens\n */\nfunction latinLigature(range) {\n const script = 'latn';\n let tokens = this.tokenizer.getRangeTokens(range);\n let contextParams = getContextParams(tokens);\n contextParams.context.forEach((glyphIndex, index) => {\n contextParams.setCurrentIndex(index);\n let substitutions = this.query.lookupFeature({\n tag: 'liga', script, contextParams\n });\n if (substitutions.length) {\n substitutions.forEach(\n action => applySubstitution(action, tokens, index)\n );\n contextParams = getContextParams(tokens);\n }\n });\n}\n\nexport default latinLigature;\n","/**\n * Infer bidirectional properties for a given text and apply\n * the corresponding layout rules.\n */\n\nimport Tokenizer from './tokenizer';\nimport FeatureQuery from './features/featureQuery';\nimport arabicWordCheck from './features/arab/contextCheck/arabicWord';\nimport arabicSentenceCheck from './features/arab/contextCheck/arabicSentence';\nimport arabicPresentationForms from './features/arab/arabicPresentationForms';\nimport arabicRequiredLigatures from './features/arab/arabicRequiredLigatures';\nimport latinWordCheck from './features/latn/contextCheck/latinWord';\nimport latinLigature from './features/latn/latinLigatures';\n\n/**\n * Create Bidi. features\n * @param {string} baseDir text base direction. value either 'ltr' or 'rtl'\n */\nfunction Bidi(baseDir) {\n this.baseDir = baseDir || 'ltr';\n this.tokenizer = new Tokenizer();\n this.featuresTags = {};\n}\n\n/**\n * Sets Bidi text\n * @param {string} text a text input\n */\nBidi.prototype.setText = function (text) {\n this.text = text;\n};\n\n/**\n * Store essential context checks:\n * arabic word check for applying gsub features\n * arabic sentence check for adjusting arabic layout\n */\nBidi.prototype.contextChecks = ({\n latinWordCheck,\n arabicWordCheck,\n arabicSentenceCheck\n});\n\n/**\n * Register arabic word check\n */\nfunction registerContextChecker(checkId) {\n const check = this.contextChecks[`${checkId}Check`];\n return this.tokenizer.registerContextChecker(\n checkId, check.startCheck, check.endCheck\n );\n}\n\n/**\n * Perform pre tokenization procedure then\n * tokenize text input\n */\nfunction tokenizeText() {\n registerContextChecker.call(this, 'latinWord');\n registerContextChecker.call(this, 'arabicWord');\n registerContextChecker.call(this, 'arabicSentence');\n return this.tokenizer.tokenize(this.text);\n}\n\n/**\n * Reverse arabic sentence layout\n * TODO: check base dir before applying adjustments - priority low\n */\nfunction reverseArabicSentences() {\n const ranges = this.tokenizer.getContextRanges('arabicSentence');\n ranges.forEach(range => {\n let rangeTokens = this.tokenizer.getRangeTokens(range);\n this.tokenizer.replaceRange(\n range.startIndex,\n range.endOffset,\n rangeTokens.reverse()\n );\n });\n}\n\n/**\n * Register supported features tags\n * @param {script} script script tag\n * @param {Array} tags features tags list\n */\nBidi.prototype.registerFeatures = function (script, tags) {\n const supportedTags = tags.filter(\n tag => this.query.supports({script, tag})\n );\n if (!this.featuresTags.hasOwnProperty(script)) {\n this.featuresTags[script] = supportedTags;\n } else {\n this.featuresTags[script] =\n this.featuresTags[script].concat(supportedTags);\n }\n};\n\n/**\n * Apply GSUB features\n * @param {Array} tagsList a list of features tags\n * @param {string} script a script tag\n * @param {Font} font opentype font instance\n */\nBidi.prototype.applyFeatures = function (font, features) {\n if (!font) throw new Error(\n 'No valid font was provided to apply features'\n );\n if (!this.query) this.query = new FeatureQuery(font);\n for (let f = 0; f < features.length; f++) {\n const feature = features[f];\n if (!this.query.supports({script: feature.script})) continue;\n this.registerFeatures(feature.script, feature.tags);\n }\n};\n\n/**\n * Register a state modifier\n * @param {string} modifierId state modifier id\n * @param {function} condition a predicate function that returns true or false\n * @param {function} modifier a modifier function to set token state\n */\nBidi.prototype.registerModifier = function (modifierId, condition, modifier) {\n this.tokenizer.registerModifier(modifierId, condition, modifier);\n};\n\n/**\n * Check if 'glyphIndex' is registered\n */\nfunction checkGlyphIndexStatus() {\n if (this.tokenizer.registeredModifiers.indexOf('glyphIndex') === -1) {\n throw new Error(\n 'glyphIndex modifier is required to apply ' +\n 'arabic presentation features.'\n );\n }\n}\n\n/**\n * Apply arabic presentation forms features\n */\nfunction applyArabicPresentationForms() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicPresentationForms.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyArabicRequireLigatures() {\n const script = 'arab';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('rlig') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('arabicWord');\n ranges.forEach(range => {\n arabicRequiredLigatures.call(this, range);\n });\n}\n\n/**\n * Apply required arabic ligatures\n */\nfunction applyLatinLigatures() {\n const script = 'latn';\n if (!this.featuresTags.hasOwnProperty(script)) return;\n const tags = this.featuresTags[script];\n if (tags.indexOf('liga') === -1) return;\n checkGlyphIndexStatus.call(this);\n const ranges = this.tokenizer.getContextRanges('latinWord');\n ranges.forEach(range => {\n latinLigature.call(this, range);\n });\n}\n\n/**\n * Check if a context is registered\n * @param {string} contextId context id\n */\nBidi.prototype.checkContextReady = function (contextId) {\n return !!this.tokenizer.getContext(contextId);\n};\n\n/**\n * Apply features to registered contexts\n */\nBidi.prototype.applyFeaturesToContexts = function () {\n if (this.checkContextReady('arabicWord')) {\n applyArabicPresentationForms.call(this);\n applyArabicRequireLigatures.call(this);\n }\n if (this.checkContextReady('latinWord')) {\n applyLatinLigatures.call(this);\n }\n if (this.checkContextReady('arabicSentence')) {\n reverseArabicSentences.call(this);\n }\n};\n\n/**\n * process text input\n * @param {string} text an input text\n */\nBidi.prototype.processText = function(text) {\n if (!this.text || this.text !== text) {\n this.setText(text);\n tokenizeText.call(this);\n this.applyFeaturesToContexts();\n }\n};\n\n/**\n * Process a string of text to identify and adjust\n * bidirectional text entities.\n * @param {string} text input text\n */\nBidi.prototype.getBidiText = function (text) {\n this.processText(text);\n return this.tokenizer.getText();\n};\n\n/**\n * Get the current state index of each token\n * @param {text} text an input text\n */\nBidi.prototype.getTextGlyphs = function (text) {\n this.processText(text);\n let indexes = [];\n for (let i = 0; i < this.tokenizer.tokens.length; i++) {\n const token = this.tokenizer.tokens[i];\n if (token.state.deleted) continue;\n const index = token.activeState.value;\n indexes.push(Array.isArray(index) ? index[0] : index);\n }\n return indexes;\n};\n\nexport default Bidi;\n","// The Font object\n\nimport Path from './path';\nimport { DefaultEncoding } from './encoding';\nimport glyphset from './glyphset';\nimport Position from './position';\nimport Substitution from './substitution';\nimport { checkArgument } from './util';\nimport HintingTrueType from './hintingtt';\nimport Bidi from './bidi';\n\n/**\n * @typedef FontOptions\n * @type Object\n * @property {Boolean} empty - whether to create a new empty font\n * @property {string} familyName\n * @property {string} styleName\n * @property {string=} fullName\n * @property {string=} postScriptName\n * @property {string=} designer\n * @property {string=} designerURL\n * @property {string=} manufacturer\n * @property {string=} manufacturerURL\n * @property {string=} license\n * @property {string=} licenseURL\n * @property {string=} version\n * @property {string=} description\n * @property {string=} copyright\n * @property {string=} trademark\n * @property {Number} unitsPerEm\n * @property {Number} ascender\n * @property {Number} descender\n * @property {Number} createdTimestamp\n * @property {string=} weightClass\n * @property {string=} widthClass\n * @property {string=} fsSelection\n */\n\n/**\n * A Font represents a loaded OpenType font file.\n * It contains a set of glyphs and methods to draw text on a drawing context,\n * or to get a path representing the text.\n * @exports opentype.Font\n * @class\n * @param {FontOptions}\n * @constructor\n */\nfunction Font(options) {\n options = options || {};\n options.tables = options.tables || {};\n\n if (!options.empty) {\n // Check that we've provided the minimum set of names.\n checkArgument(\n options.familyName,\n 'When creating a new Font object, familyName is required.'\n );\n checkArgument(\n options.styleName,\n 'When creating a new Font object, styleName is required.'\n );\n checkArgument(\n options.unitsPerEm,\n 'When creating a new Font object, unitsPerEm is required.'\n );\n checkArgument(\n options.ascender,\n 'When creating a new Font object, ascender is required.'\n );\n checkArgument(\n options.descender <= 0,\n 'When creating a new Font object, negative descender value is required.'\n );\n\n this.unitsPerEm = options.unitsPerEm || 1000;\n this.ascender = options.ascender;\n this.descender = options.descender;\n this.createdTimestamp = options.createdTimestamp;\n this.tables = Object.assign(options.tables, {\n os2: Object.assign(\n {\n usWeightClass:\n options.weightClass || this.usWeightClasses.MEDIUM,\n usWidthClass:\n options.widthClass || this.usWidthClasses.MEDIUM,\n fsSelection:\n options.fsSelection || this.fsSelectionValues.REGULAR,\n },\n options.tables.os2\n ),\n });\n }\n\n this.supported = true; // Deprecated: parseBuffer will throw an error if font is not supported.\n this.glyphs = new glyphset.GlyphSet(this, options.glyphs || []);\n this.encoding = new DefaultEncoding(this);\n this.position = new Position(this);\n this.substitution = new Substitution(this);\n this.tables = this.tables || {};\n\n // needed for low memory mode only.\n this._push = null;\n this._hmtxTableData = {};\n\n Object.defineProperty(this, 'hinting', {\n get: function () {\n if (this._hinting) return this._hinting;\n if (this.outlinesFormat === 'truetype') {\n return (this._hinting = new HintingTrueType(this));\n }\n },\n });\n}\n\n/**\n * Check if the font has a glyph for the given character.\n * @param {string}\n * @return {Boolean}\n */\nFont.prototype.hasChar = function (c) {\n return this.encoding.charToGlyphIndex(c) !== null;\n};\n\n/**\n * Convert the given character to a single glyph index.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {Number}\n */\nFont.prototype.charToGlyphIndex = function (s) {\n return this.encoding.charToGlyphIndex(s);\n};\n\n/**\n * Convert the given character to a single Glyph object.\n * Note that this function assumes that there is a one-to-one mapping between\n * the given character and a glyph; for complex scripts this might not be the case.\n * @param {string}\n * @return {opentype.Glyph}\n */\nFont.prototype.charToGlyph = function (c) {\n const glyphIndex = this.charToGlyphIndex(c);\n let glyph = this.glyphs.get(glyphIndex);\n if (!glyph) {\n // .notdef\n glyph = this.glyphs.get(0);\n }\n\n return glyph;\n};\n\n/**\n * Update features\n * @param {any} options features options\n */\nFont.prototype.updateFeatures = function (options) {\n // TODO: update all features options not only 'latn'.\n return this.defaultRenderOptions.features.map((feature) => {\n if (feature.script === 'latn') {\n return {\n script: 'latn',\n tags: feature.tags.filter((tag) => options[tag]),\n };\n } else {\n return feature;\n }\n });\n};\n\n/**\n * Convert the given text to a list of Glyph objects.\n * Note that there is no strict one-to-one mapping between characters and\n * glyphs, so the list of returned glyphs can be larger or smaller than the\n * length of the given string.\n * @param {string}\n * @param {GlyphRenderOptions} [options]\n * @return {opentype.Glyph[]}\n */\nFont.prototype.stringToGlyphs = function (s, options) {\n const bidi = new Bidi();\n\n // Create and register 'glyphIndex' state modifier\n const charToGlyphIndexMod = (token) => this.charToGlyphIndex(token.char);\n bidi.registerModifier('glyphIndex', null, charToGlyphIndexMod);\n\n // roll-back to default features\n let features = options\n ? this.updateFeatures(options.features)\n : this.defaultRenderOptions.features;\n\n bidi.applyFeatures(this, features);\n\n const indexes = bidi.getTextGlyphs(s);\n\n let length = indexes.length;\n\n // convert glyph indexes to glyph objects\n const glyphs = new Array(length);\n const notdef = this.glyphs.get(0);\n for (let i = 0; i < length; i += 1) {\n glyphs[i] = this.glyphs.get(indexes[i]) || notdef;\n }\n return glyphs;\n};\n\n/**\n * Retrieve the value of the kerning pair between the left glyph (or its index)\n * and the right glyph (or its index). If no kerning pair is found, return 0.\n * The kerning value gets added to the advance width when calculating the spacing\n * between glyphs.\n * For GPOS kerning, this method uses the default script and language, which covers\n * most use cases. To have greater control, use font.position.getKerningValue .\n * @param {opentype.Glyph} leftGlyph\n * @param {opentype.Glyph} rightGlyph\n * @return {Number}\n */\nFont.prototype.getKerningValue = function (leftGlyph, rightGlyph) {\n leftGlyph = leftGlyph.index || leftGlyph;\n rightGlyph = rightGlyph.index || rightGlyph;\n const gposKerning = this.position.defaultKerningTables;\n if (gposKerning) {\n return this.position.getKerningValue(\n gposKerning,\n leftGlyph,\n rightGlyph\n );\n }\n // \"kern\" table\n return this.kerningPairs[leftGlyph + ',' + rightGlyph] || 0;\n};\n\n/**\n * @typedef GlyphRenderOptions\n * @type Object\n * @property {string} [script] - script used to determine which features to apply. By default, 'DFLT' or 'latn' is used.\n * See https://www.microsoft.com/typography/otspec/scripttags.htm\n * @property {string} [language='dflt'] - language system used to determine which features to apply.\n * See https://www.microsoft.com/typography/developers/opentype/languagetags.aspx\n * @property {boolean} [kerning=true] - whether to include kerning values\n * @property {object} [features] - OpenType Layout feature tags. Used to enable or disable the features of the given script/language system.\n * See https://www.microsoft.com/typography/otspec/featuretags.htm\n */\nFont.prototype.defaultRenderOptions = {\n kerning: true,\n features: [\n /**\n * these 4 features are required to render Arabic text properly\n * and shouldn't be turned off when rendering arabic text.\n */\n { script: 'arab', tags: ['init', 'medi', 'fina', 'rlig'] },\n { script: 'latn', tags: ['liga', 'rlig'] },\n ],\n};\n\n/**\n * Helper function that invokes the given callback for each glyph in the given text.\n * The callback gets `(glyph, x, y, fontSize, options)`.* @param {string} text\n * @param {string} text - The text to apply.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @param {Function} callback\n */\nFont.prototype.forEachGlyph = function (\n text,\n x,\n y,\n fontSize,\n options,\n callback\n) {\n x = x !== undefined ? x : 0;\n y = y !== undefined ? y : 0;\n fontSize = fontSize !== undefined ? fontSize : 72;\n options = Object.assign({}, this.defaultRenderOptions, options);\n const fontScale = (1 / this.unitsPerEm) * fontSize;\n const glyphs = this.stringToGlyphs(text, options);\n let kerningLookups;\n if (options.kerning) {\n const script = options.script || this.position.getDefaultScriptName();\n kerningLookups = this.position.getKerningTables(\n script,\n options.language\n );\n }\n for (let i = 0; i < glyphs.length; i += 1) {\n const glyph = glyphs[i];\n callback.call(this, glyph, x, y, fontSize, options);\n if (glyph.advanceWidth) {\n x += glyph.advanceWidth * fontScale;\n }\n\n if (options.kerning && i < glyphs.length - 1) {\n // We should apply position adjustment lookups in a more generic way.\n // Here we only use the xAdvance value.\n const kerningValue = kerningLookups\n ? this.position.getKerningValue(\n kerningLookups,\n glyph.index,\n glyphs[i + 1].index\n )\n : this.getKerningValue(glyph, glyphs[i + 1]);\n x += kerningValue * fontScale;\n }\n\n if (options.letterSpacing) {\n x += options.letterSpacing * fontSize;\n } else if (options.tracking) {\n x += (options.tracking / 1000) * fontSize;\n }\n }\n return x;\n};\n\n/**\n * Create a Path object that represents the given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path}\n */\nFont.prototype.getPath = function (text, x, y, fontSize, options) {\n const fullPath = new Path();\n this.forEachGlyph(\n text,\n x,\n y,\n fontSize,\n options,\n function (glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n fullPath.extend(glyphPath);\n }\n );\n return fullPath;\n};\n\n/**\n * Create an array of Path objects that represent the glyphs of a given text.\n * @param {string} text - The text to create.\n * @param {number} [x=0] - Horizontal position of the beginning of the text.\n * @param {number} [y=0] - Vertical position of the *baseline* of the text.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return {opentype.Path[]}\n */\nFont.prototype.getPaths = function (text, x, y, fontSize, options) {\n const glyphPaths = [];\n this.forEachGlyph(\n text,\n x,\n y,\n fontSize,\n options,\n function (glyph, gX, gY, gFontSize) {\n const glyphPath = glyph.getPath(gX, gY, gFontSize, options, this);\n glyphPaths.push(glyphPath);\n }\n );\n\n return glyphPaths;\n};\n\n/**\n * Returns the advance width of a text.\n *\n * This is something different than Path.getBoundingBox() as for example a\n * suffixed whitespace increases the advanceWidth but not the bounding box\n * or an overhanging letter like a calligraphic 'f' might have a quite larger\n * bounding box than its advance width.\n *\n * This corresponds to canvas2dContext.measureText(text).width\n *\n * @param {string} text - The text to create.\n * @param {number} [fontSize=72] - Font size in pixels. We scale the glyph units by `1 / unitsPerEm * fontSize`.\n * @param {GlyphRenderOptions=} options\n * @return advance width\n */\nFont.prototype.getAdvanceWidth = function (text, fontSize, options) {\n return this.forEachGlyph(text, 0, 0, fontSize, options, function () {});\n};\n\n/**\n * @private\n */\nFont.prototype.fsSelectionValues = {\n ITALIC: 0x001, //1\n UNDERSCORE: 0x002, //2\n NEGATIVE: 0x004, //4\n OUTLINED: 0x008, //8\n STRIKEOUT: 0x010, //16\n BOLD: 0x020, //32\n REGULAR: 0x040, //64\n USER_TYPO_METRICS: 0x080, //128\n WWS: 0x100, //256\n OBLIQUE: 0x200, //512\n};\n\n/**\n * @private\n */\nFont.prototype.usWidthClasses = {\n ULTRA_CONDENSED: 1,\n EXTRA_CONDENSED: 2,\n CONDENSED: 3,\n SEMI_CONDENSED: 4,\n MEDIUM: 5,\n SEMI_EXPANDED: 6,\n EXPANDED: 7,\n EXTRA_EXPANDED: 8,\n ULTRA_EXPANDED: 9,\n};\n\n/**\n * @private\n */\nFont.prototype.usWeightClasses = {\n THIN: 100,\n EXTRA_LIGHT: 200,\n LIGHT: 300,\n NORMAL: 400,\n MEDIUM: 500,\n SEMI_BOLD: 600,\n BOLD: 700,\n EXTRA_BOLD: 800,\n BLACK: 900,\n};\n\nexport default Font;\n","// The `cmap` table stores the mappings from characters to glyphs.\n// https://www.microsoft.com/typography/OTSPEC/cmap.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseCmapTableFormat12(cmap, p) {\n //Skip reserved.\n p.parseUShort();\n\n // Length in bytes of the sub-tables.\n cmap.length = p.parseULong();\n cmap.language = p.parseULong();\n\n let groupCount;\n cmap.groupCount = groupCount = p.parseULong();\n cmap.glyphIndexMap = {};\n\n for (let i = 0; i < groupCount; i += 1) {\n const startCharCode = p.parseULong();\n const endCharCode = p.parseULong();\n let startGlyphId = p.parseULong();\n\n for (let c = startCharCode; c <= endCharCode; c += 1) {\n cmap.glyphIndexMap[c] = startGlyphId;\n startGlyphId++;\n }\n }\n}\n\nfunction parseCmapTableFormat4(cmap, p, data, start, offset) {\n // Length in bytes of the sub-tables.\n cmap.length = p.parseUShort();\n cmap.language = p.parseUShort();\n\n // segCount is stored x 2.\n let segCount;\n cmap.segCount = segCount = p.parseUShort() >> 1;\n\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n\n // The \"unrolled\" mapping from character codes to glyph indices.\n cmap.glyphIndexMap = {};\n const endCountParser = new parse.Parser(data, start + offset + 14);\n const startCountParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 2\n );\n const idDeltaParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 4\n );\n const idRangeOffsetParser = new parse.Parser(\n data,\n start + offset + 16 + segCount * 6\n );\n let glyphIndexOffset = start + offset + 16 + segCount * 8;\n for (let i = 0; i < segCount - 1; i += 1) {\n let glyphIndex;\n const endCount = endCountParser.parseUShort();\n const startCount = startCountParser.parseUShort();\n const idDelta = idDeltaParser.parseShort();\n const idRangeOffset = idRangeOffsetParser.parseUShort();\n for (let c = startCount; c <= endCount; c += 1) {\n if (idRangeOffset !== 0) {\n // The idRangeOffset is relative to the current position in the idRangeOffset array.\n // Take the current offset in the idRangeOffset array.\n glyphIndexOffset =\n idRangeOffsetParser.offset +\n idRangeOffsetParser.relativeOffset -\n 2;\n\n // Add the value of the idRangeOffset, which will move us into the glyphIndex array.\n glyphIndexOffset += idRangeOffset;\n\n // Then add the character index of the current segment, multiplied by 2 for USHORTs.\n glyphIndexOffset += (c - startCount) * 2;\n glyphIndex = parse.getUShort(data, glyphIndexOffset);\n if (glyphIndex !== 0) {\n glyphIndex = (glyphIndex + idDelta) & 0xffff;\n }\n } else {\n glyphIndex = (c + idDelta) & 0xffff;\n }\n\n cmap.glyphIndexMap[c] = glyphIndex;\n }\n }\n}\n\n// Parse the `cmap` table. This table stores the mappings from characters to glyphs.\n// There are many available formats, but we only support the Windows format 4 and 12.\n// This function returns a `CmapEncoding` object or null if no supported format could be found.\nfunction parseCmapTable(data, start) {\n const cmap = {};\n cmap.version = parse.getUShort(data, start);\n check.argument(cmap.version === 0, 'cmap table version should be 0.');\n\n // The cmap table can contain many sub-tables, each with their own format.\n // We're only interested in a \"platform 0\" (Unicode format) and \"platform 3\" (Windows format) table.\n cmap.numTables = parse.getUShort(data, start + 2);\n let offset = -1;\n for (let i = cmap.numTables - 1; i >= 0; i -= 1) {\n const platformId = parse.getUShort(data, start + 4 + i * 8);\n const encodingId = parse.getUShort(data, start + 4 + i * 8 + 2);\n if (\n (platformId === 3 &&\n (encodingId === 0 || encodingId === 1 || encodingId === 10)) ||\n (platformId === 0 &&\n (encodingId === 0 ||\n encodingId === 1 ||\n encodingId === 2 ||\n encodingId === 3 ||\n encodingId === 4))\n ) {\n offset = parse.getULong(data, start + 4 + i * 8 + 4);\n break;\n }\n }\n\n if (offset === -1) {\n // There is no cmap table in the font that we support.\n throw new Error('No valid cmap sub-tables found.');\n }\n\n const p = new parse.Parser(data, start + offset);\n cmap.format = p.parseUShort();\n\n if (cmap.format === 12) {\n parseCmapTableFormat12(cmap, p);\n } else if (cmap.format === 4) {\n parseCmapTableFormat4(cmap, p, data, start, offset);\n } else {\n throw new Error(\n 'Only format 4 and 12 cmap tables are supported (found format ' +\n cmap.format +\n ').'\n );\n }\n\n return cmap;\n}\n\nexport default { parse: parseCmapTable };\n","// The `CFF` table contains the glyph outlines in PostScript format.\n// https://www.microsoft.com/typography/OTSPEC/cff.htm\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/cff.pdf\n// http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/type2.pdf\n\nimport {\n CffEncoding,\n cffStandardEncoding,\n cffExpertEncoding,\n cffStandardStrings,\n} from '../encoding';\nimport glyphset from '../glyphset';\nimport parse from '../parse';\nimport Path from '../path';\n\n// Subroutines are encoded using the negative half of the number space.\n// See type 2 chapter 4.7 \"Subroutine operators\".\nfunction calcCFFSubroutineBias(subrs) {\n let bias;\n if (subrs.length < 1240) {\n bias = 107;\n } else if (subrs.length < 33900) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n return bias;\n}\n\n// Parse a `CFF` INDEX array.\n// An index array consists of a list of offsets, then a list of objects at those offsets.\nfunction parseCFFIndex(data, start, conversionFn) {\n const offsets = [];\n const objects = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n for (let i = 0; i < offsets.length - 1; i += 1) {\n let value = parse.getBytes(\n data,\n objectOffset + offsets[i],\n objectOffset + offsets[i + 1]\n );\n if (conversionFn) {\n value = conversionFn(value);\n }\n\n objects.push(value);\n }\n\n return { objects: objects, startOffset: start, endOffset: endOffset };\n}\n\nfunction parseCFFIndexLowMemory(data, start) {\n const offsets = [];\n const count = parse.getCard16(data, start);\n let objectOffset;\n let endOffset;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n let pos = start + 3;\n for (let i = 0; i < count + 1; i += 1) {\n offsets.push(parse.getOffset(data, pos, offsetSize));\n pos += offsetSize;\n }\n\n // The total size of the index array is 4 header bytes + the value of the last offset.\n endOffset = objectOffset + offsets[count];\n } else {\n endOffset = start + 2;\n }\n\n return { offsets: offsets, startOffset: start, endOffset: endOffset };\n}\nfunction getCffIndexObject(i, offsets, data, start, conversionFn) {\n const count = parse.getCard16(data, start);\n let objectOffset = 0;\n if (count !== 0) {\n const offsetSize = parse.getByte(data, start + 2);\n objectOffset = start + (count + 1) * offsetSize + 2;\n }\n\n let value = parse.getBytes(\n data,\n objectOffset + offsets[i],\n objectOffset + offsets[i + 1]\n );\n if (conversionFn) {\n value = conversionFn(value);\n }\n return value;\n}\n\n// Parse a `CFF` DICT real value.\nfunction parseFloatOperand(parser) {\n let s = '';\n const eof = 15;\n const lookup = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '.',\n 'E',\n 'E-',\n null,\n '-',\n ];\n while (true) {\n const b = parser.parseByte();\n const n1 = b >> 4;\n const n2 = b & 15;\n\n if (n1 === eof) {\n break;\n }\n\n s += lookup[n1];\n\n if (n2 === eof) {\n break;\n }\n\n s += lookup[n2];\n }\n\n return parseFloat(s);\n}\n\n// Parse a `CFF` DICT operand.\nfunction parseOperand(parser, b0) {\n let b1;\n let b2;\n let b3;\n let b4;\n if (b0 === 28) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n return (b1 << 8) | b2;\n }\n\n if (b0 === 29) {\n b1 = parser.parseByte();\n b2 = parser.parseByte();\n b3 = parser.parseByte();\n b4 = parser.parseByte();\n return (b1 << 24) | (b2 << 16) | (b3 << 8) | b4;\n }\n\n if (b0 === 30) {\n return parseFloatOperand(parser);\n }\n\n if (b0 >= 32 && b0 <= 246) {\n return b0 - 139;\n }\n\n if (b0 >= 247 && b0 <= 250) {\n b1 = parser.parseByte();\n return (b0 - 247) * 256 + b1 + 108;\n }\n\n if (b0 >= 251 && b0 <= 254) {\n b1 = parser.parseByte();\n return -(b0 - 251) * 256 - b1 - 108;\n }\n\n throw new Error('Invalid b0 ' + b0);\n}\n\n// Convert the entries returned by `parseDict` to a proper dictionary.\n// If a value is a list of one, it is unpacked.\nfunction entriesToObject(entries) {\n const o = {};\n for (let i = 0; i < entries.length; i += 1) {\n const key = entries[i][0];\n const values = entries[i][1];\n let value;\n if (values.length === 1) {\n value = values[0];\n } else {\n value = values;\n }\n\n if (o.hasOwnProperty(key) && !isNaN(o[key])) {\n throw new Error('Object ' + o + ' already has key ' + key);\n }\n\n o[key] = value;\n }\n\n return o;\n}\n\n// Parse a `CFF` DICT object.\n// A dictionary contains key-value pairs in a compact tokenized format.\nfunction parseCFFDict(data, start, size) {\n start = start !== undefined ? start : 0;\n const parser = new parse.Parser(data, start);\n const entries = [];\n let operands = [];\n size = size !== undefined ? size : data.length;\n\n while (parser.relativeOffset < size) {\n let op = parser.parseByte();\n\n // The first byte for each dict item distinguishes between operator (key) and operand (value).\n // Values <= 21 are operators.\n if (op <= 21) {\n // Two-byte operators have an initial escape byte of 12.\n if (op === 12) {\n op = 1200 + parser.parseByte();\n }\n\n entries.push([op, operands]);\n operands = [];\n } else {\n // Since the operands (values) come before the operators (keys), we store all operands in a list\n // until we encounter an operator.\n operands.push(parseOperand(parser, op));\n }\n }\n\n return entriesToObject(entries);\n}\n\n// Given a String Index (SID), return the value of the string.\n// Strings below index 392 are standard CFF strings and are not encoded in the font.\nfunction getCFFString(strings, index) {\n if (index <= 390) {\n index = cffStandardStrings[index];\n } else {\n index = strings[index - 391];\n }\n\n return index;\n}\n\n// Interpret a dictionary and return a new dictionary with readable keys and values for missing entries.\n// This function takes `meta` which is a list of objects containing `operand`, `name` and `default`.\nfunction interpretDict(dict, meta, strings) {\n const newDict = {};\n let value;\n\n // Because we also want to include missing values, we start out from the meta list\n // and lookup values in the dict.\n for (let i = 0; i < meta.length; i += 1) {\n const m = meta[i];\n\n if (Array.isArray(m.type)) {\n const values = [];\n values.length = m.type.length;\n for (let j = 0; j < m.type.length; j++) {\n value = dict[m.op] !== undefined ? dict[m.op][j] : undefined;\n if (value === undefined) {\n value =\n m.value !== undefined && m.value[j] !== undefined\n ? m.value[j]\n : null;\n }\n if (m.type[j] === 'SID') {\n value = getCFFString(strings, value);\n }\n values[j] = value;\n }\n newDict[m.name] = values;\n } else {\n value = dict[m.op];\n if (value === undefined) {\n value = m.value !== undefined ? m.value : null;\n }\n\n if (m.type === 'SID') {\n value = getCFFString(strings, value);\n }\n newDict[m.name] = value;\n }\n }\n\n return newDict;\n}\n\n// Parse the CFF header.\nfunction parseCFFHeader(data, start) {\n const header = {};\n header.formatMajor = parse.getCard8(data, start);\n header.formatMinor = parse.getCard8(data, start + 1);\n header.size = parse.getCard8(data, start + 2);\n header.offsetSize = parse.getCard8(data, start + 3);\n header.startOffset = start;\n header.endOffset = start + 4;\n return header;\n}\n\nconst TOP_DICT_META = [\n { name: 'version', op: 0, type: 'SID' },\n { name: 'notice', op: 1, type: 'SID' },\n { name: 'copyright', op: 1200, type: 'SID' },\n { name: 'fullName', op: 2, type: 'SID' },\n { name: 'familyName', op: 3, type: 'SID' },\n { name: 'weight', op: 4, type: 'SID' },\n { name: 'isFixedPitch', op: 1201, type: 'number', value: 0 },\n { name: 'italicAngle', op: 1202, type: 'number', value: 0 },\n { name: 'underlinePosition', op: 1203, type: 'number', value: -100 },\n { name: 'underlineThickness', op: 1204, type: 'number', value: 50 },\n { name: 'paintType', op: 1205, type: 'number', value: 0 },\n { name: 'charstringType', op: 1206, type: 'number', value: 2 },\n {\n name: 'fontMatrix',\n op: 1207,\n type: ['real', 'real', 'real', 'real', 'real', 'real'],\n value: [0.001, 0, 0, 0.001, 0, 0],\n },\n { name: 'uniqueId', op: 13, type: 'number' },\n {\n name: 'fontBBox',\n op: 5,\n type: ['number', 'number', 'number', 'number'],\n value: [0, 0, 0, 0],\n },\n { name: 'strokeWidth', op: 1208, type: 'number', value: 0 },\n { name: 'xuid', op: 14, type: [], value: null },\n { name: 'charset', op: 15, type: 'offset', value: 0 },\n { name: 'encoding', op: 16, type: 'offset', value: 0 },\n { name: 'charStrings', op: 17, type: 'offset', value: 0 },\n { name: 'private', op: 18, type: ['number', 'offset'], value: [0, 0] },\n { name: 'ros', op: 1230, type: ['SID', 'SID', 'number'] },\n { name: 'cidFontVersion', op: 1231, type: 'number', value: 0 },\n { name: 'cidFontRevision', op: 1232, type: 'number', value: 0 },\n { name: 'cidFontType', op: 1233, type: 'number', value: 0 },\n { name: 'cidCount', op: 1234, type: 'number', value: 8720 },\n { name: 'uidBase', op: 1235, type: 'number' },\n { name: 'fdArray', op: 1236, type: 'offset' },\n { name: 'fdSelect', op: 1237, type: 'offset' },\n { name: 'fontName', op: 1238, type: 'SID' },\n];\n\nconst PRIVATE_DICT_META = [\n { name: 'subrs', op: 19, type: 'offset', value: 0 },\n { name: 'defaultWidthX', op: 20, type: 'number', value: 0 },\n { name: 'nominalWidthX', op: 21, type: 'number', value: 0 },\n];\n\n// Parse the CFF top dictionary. A CFF table can contain multiple fonts, each with their own top dictionary.\n// The top dictionary contains the essential metadata for the font, together with the private dictionary.\nfunction parseCFFTopDict(data, strings) {\n const dict = parseCFFDict(data, 0, data.byteLength);\n return interpretDict(dict, TOP_DICT_META, strings);\n}\n\n// Parse the CFF private dictionary. We don't fully parse out all the values, only the ones we need.\nfunction parseCFFPrivateDict(data, start, size, strings) {\n const dict = parseCFFDict(data, start, size);\n return interpretDict(dict, PRIVATE_DICT_META, strings);\n}\n\n// Returns a list of \"Top DICT\"s found using an INDEX list.\n// Used to read both the usual high-level Top DICTs and also the FDArray\n// discovered inside CID-keyed fonts. When a Top DICT has a reference to\n// a Private DICT that is read and saved into the Top DICT.\n//\n// In addition to the expected/optional values as outlined in TOP_DICT_META\n// the following values might be saved into the Top DICT.\n//\n// _subrs [] array of local CFF subroutines from Private DICT\n// _subrsBias bias value computed from number of subroutines\n// (see calcCFFSubroutineBias() and parseCFFCharstring())\n// _defaultWidthX default widths for CFF characters\n// _nominalWidthX bias added to width embedded within glyph description\n//\n// _privateDict saved copy of parsed Private DICT from Top DICT\nfunction gatherCFFTopDicts(data, start, cffIndex, strings) {\n const topDictArray = [];\n for (let iTopDict = 0; iTopDict < cffIndex.length; iTopDict += 1) {\n const topDictData = new DataView(\n new Uint8Array(cffIndex[iTopDict]).buffer\n );\n const topDict = parseCFFTopDict(topDictData, strings);\n topDict._subrs = [];\n topDict._subrsBias = 0;\n topDict._defaultWidthX = 0;\n topDict._nominalWidthX = 0;\n const privateSize = topDict.private[0];\n const privateOffset = topDict.private[1];\n if (privateSize !== 0 && privateOffset !== 0) {\n const privateDict = parseCFFPrivateDict(\n data,\n privateOffset + start,\n privateSize,\n strings\n );\n topDict._defaultWidthX = privateDict.defaultWidthX;\n topDict._nominalWidthX = privateDict.nominalWidthX;\n if (privateDict.subrs !== 0) {\n const subrOffset = privateOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset + start);\n topDict._subrs = subrIndex.objects;\n topDict._subrsBias = calcCFFSubroutineBias(topDict._subrs);\n }\n topDict._privateDict = privateDict;\n }\n topDictArray.push(topDict);\n }\n return topDictArray;\n}\n\n// Parse the CFF charset table, which contains internal names for all the glyphs.\n// This function will return a list of glyph names.\n// See Adobe TN #5176 chapter 13, \"Charsets\".\nfunction parseCFFCharset(data, start, nGlyphs, strings) {\n let sid;\n let count;\n const parser = new parse.Parser(data, start);\n\n // The .notdef glyph is not included, so subtract 1.\n nGlyphs -= 1;\n const charset = ['.notdef'];\n\n const format = parser.parseCard8();\n if (format === 0) {\n for (let i = 0; i < nGlyphs; i += 1) {\n sid = parser.parseSID();\n charset.push(getCFFString(strings, sid));\n }\n } else if (format === 1) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard8();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else if (format === 2) {\n while (charset.length <= nGlyphs) {\n sid = parser.parseSID();\n count = parser.parseCard16();\n for (let i = 0; i <= count; i += 1) {\n charset.push(getCFFString(strings, sid));\n sid += 1;\n }\n }\n } else {\n throw new Error('Unknown charset format ' + format);\n }\n\n return charset;\n}\n\n// Parse the CFF encoding data. Only one encoding can be specified per font.\n// See Adobe TN #5176 chapter 12, \"Encodings\".\nfunction parseCFFEncoding(data, start, charset) {\n let code;\n const enc = {};\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n const nCodes = parser.parseCard8();\n for (let i = 0; i < nCodes; i += 1) {\n code = parser.parseCard8();\n enc[code] = i;\n }\n } else if (format === 1) {\n const nRanges = parser.parseCard8();\n code = 1;\n for (let i = 0; i < nRanges; i += 1) {\n const first = parser.parseCard8();\n const nLeft = parser.parseCard8();\n for (let j = first; j <= first + nLeft; j += 1) {\n enc[j] = code;\n code += 1;\n }\n }\n } else {\n throw new Error('Unknown encoding format ' + format);\n }\n\n return new CffEncoding(enc, charset);\n}\n\n// Take in charstring code and return a Glyph object.\n// The encoding is described in the Type 2 Charstring Format\n// https://www.microsoft.com/typography/OTSPEC/charstr2.htm\nfunction parseCFFCharstring(font, glyph, code) {\n let c1x;\n let c1y;\n let c2x;\n let c2y;\n const p = new Path();\n const stack = [];\n let nStems = 0;\n let haveWidth = false;\n let open = false;\n let x = 0;\n let y = 0;\n let subrs;\n let subrsBias;\n let defaultWidthX;\n let nominalWidthX;\n if (font.isCIDFont) {\n const fdIndex = font.tables.cff.topDict._fdSelect[glyph.index];\n const fdDict = font.tables.cff.topDict._fdArray[fdIndex];\n subrs = fdDict._subrs;\n subrsBias = fdDict._subrsBias;\n defaultWidthX = fdDict._defaultWidthX;\n nominalWidthX = fdDict._nominalWidthX;\n } else {\n subrs = font.tables.cff.topDict._subrs;\n subrsBias = font.tables.cff.topDict._subrsBias;\n defaultWidthX = font.tables.cff.topDict._defaultWidthX;\n nominalWidthX = font.tables.cff.topDict._nominalWidthX;\n }\n let width = defaultWidthX;\n\n function newContour(x, y) {\n if (open) {\n p.closePath();\n }\n\n p.moveTo(x, y);\n open = true;\n }\n\n function parseStems() {\n let hasWidthArg;\n\n // The number of stem operators on the stack is always even.\n // If the value is uneven, that means a width is specified.\n hasWidthArg = stack.length % 2 !== 0;\n if (hasWidthArg && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n }\n\n nStems += stack.length >> 1;\n stack.length = 0;\n haveWidth = true;\n }\n\n function parse(code) {\n let b1;\n let b2;\n let b3;\n let b4;\n let codeIndex;\n let subrCode;\n let jpx;\n let jpy;\n let c3x;\n let c3y;\n let c4x;\n let c4y;\n\n let i = 0;\n while (i < code.length) {\n let v = code[i];\n i += 1;\n switch (v) {\n case 1: // hstem\n parseStems();\n break;\n case 3: // vstem\n parseStems();\n break;\n case 4: // vmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n newContour(x, y);\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n p.lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n\n x += stack.shift();\n p.lineTo(x, y);\n }\n\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 10: // callsubr\n codeIndex = stack.pop() + subrsBias;\n subrCode = subrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 11: // return\n return;\n case 12: // flex operators\n v = code[i];\n i += 1;\n switch (v) {\n case 35: // flex\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 dx6 dy6 fd flex (12 35) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n y = c4y + stack.shift(); // dy6\n stack.shift(); // flex depth\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 34: // hflex\n // |- dx1 dx2 dy2 dx3 dx4 dx5 dx6 hflex (12 34) |-\n c1x = x + stack.shift(); // dx1\n c1y = y; // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = y; // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 36: // hflex1\n // |- dx1 dy1 dx2 dy2 dx3 dx4 dx5 dy5 dx6 hflex1 (12 36) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y; // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = c2y; // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n x = c4x + stack.shift(); // dx6\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n case 37: // flex1\n // |- dx1 dy1 dx2 dy2 dx3 dy3 dx4 dy4 dx5 dy5 d6 flex1 (12 37) |-\n c1x = x + stack.shift(); // dx1\n c1y = y + stack.shift(); // dy1\n c2x = c1x + stack.shift(); // dx2\n c2y = c1y + stack.shift(); // dy2\n jpx = c2x + stack.shift(); // dx3\n jpy = c2y + stack.shift(); // dy3\n c3x = jpx + stack.shift(); // dx4\n c3y = jpy + stack.shift(); // dy4\n c4x = c3x + stack.shift(); // dx5\n c4y = c3y + stack.shift(); // dy5\n if (Math.abs(c4x - x) > Math.abs(c4y - y)) {\n x = c4x + stack.shift();\n } else {\n y = c4y + stack.shift();\n }\n\n p.curveTo(c1x, c1y, c2x, c2y, jpx, jpy);\n p.curveTo(c3x, c3y, c4x, c4y, x, y);\n break;\n default:\n console.log(\n 'Glyph ' +\n glyph.index +\n ': unknown operator ' +\n 1200 +\n v\n );\n stack.length = 0;\n }\n break;\n case 14: // endchar\n if (stack.length > 0 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n if (open) {\n p.closePath();\n open = false;\n }\n\n break;\n case 18: // hstemhm\n parseStems();\n break;\n case 19: // hintmask\n case 20: // cntrmask\n parseStems();\n i += (nStems + 7) >> 3;\n break;\n case 21: // rmoveto\n if (stack.length > 2 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n y += stack.pop();\n x += stack.pop();\n newContour(x, y);\n break;\n case 22: // hmoveto\n if (stack.length > 1 && !haveWidth) {\n width = stack.shift() + nominalWidthX;\n haveWidth = true;\n }\n\n x += stack.pop();\n newContour(x, y);\n break;\n case 23: // vstemhm\n parseStems();\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n p.lineTo(x, y);\n }\n\n c1x = x + stack.shift();\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x;\n y = c2y + stack.shift();\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y;\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 28: // shortint\n b1 = code[i];\n b2 = code[i + 1];\n stack.push(((b1 << 24) | (b2 << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n codeIndex = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[codeIndex];\n if (subrCode) {\n parse(subrCode);\n }\n\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n c1x = x + stack.shift();\n c1y = y;\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n y = c2y + stack.shift();\n x = c2x + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n if (stack.length === 0) {\n break;\n }\n\n c1x = x;\n c1y = y + stack.shift();\n c2x = c1x + stack.shift();\n c2y = c1y + stack.shift();\n x = c2x + stack.shift();\n y = c2y + (stack.length === 1 ? stack.shift() : 0);\n p.curveTo(c1x, c1y, c2x, c2y, x, y);\n }\n\n break;\n default:\n if (v < 32) {\n console.log(\n 'Glyph ' + glyph.index + ': unknown operator ' + v\n );\n } else if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n b1 = code[i];\n i += 1;\n stack.push((v - 247) * 256 + b1 + 108);\n } else if (v < 255) {\n b1 = code[i];\n i += 1;\n stack.push(-(v - 251) * 256 - b1 - 108);\n } else {\n b1 = code[i];\n b2 = code[i + 1];\n b3 = code[i + 2];\n b4 = code[i + 3];\n i += 4;\n stack.push(\n ((b1 << 24) | (b2 << 16) | (b3 << 8) | b4) / 65536\n );\n }\n }\n }\n }\n\n parse(code);\n\n glyph.advanceWidth = width;\n return p;\n}\n\nfunction parseCFFFDSelect(data, start, nGlyphs, fdArrayCount) {\n const fdSelect = [];\n let fdIndex;\n const parser = new parse.Parser(data, start);\n const format = parser.parseCard8();\n if (format === 0) {\n // Simple list of nGlyphs elements\n for (let iGid = 0; iGid < nGlyphs; iGid++) {\n fdIndex = parser.parseCard8();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\n 'CFF table CID Font FDSelect has bad FD index value ' +\n fdIndex +\n ' (FD count ' +\n fdArrayCount +\n ')'\n );\n }\n fdSelect.push(fdIndex);\n }\n } else if (format === 3) {\n // Ranges\n const nRanges = parser.parseCard16();\n let first = parser.parseCard16();\n if (first !== 0) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad initial GID ' +\n first\n );\n }\n let next;\n for (let iRange = 0; iRange < nRanges; iRange++) {\n fdIndex = parser.parseCard8();\n next = parser.parseCard16();\n if (fdIndex >= fdArrayCount) {\n throw new Error(\n 'CFF table CID Font FDSelect has bad FD index value ' +\n fdIndex +\n ' (FD count ' +\n fdArrayCount +\n ')'\n );\n }\n if (next > nGlyphs) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad GID ' +\n next\n );\n }\n for (; first < next; first++) {\n fdSelect.push(fdIndex);\n }\n first = next;\n }\n if (next !== nGlyphs) {\n throw new Error(\n 'CFF Table CID Font FDSelect format 3 range has bad final GID ' +\n next\n );\n }\n } else {\n throw new Error(\n 'CFF Table CID Font FDSelect table has unsupported format ' + format\n );\n }\n return fdSelect;\n}\n\n// Parse the `CFF` table, which contains the glyph outlines in PostScript format.\nfunction parseCFFTable(data, start, font, opt) {\n font.tables.cff = {};\n const header = parseCFFHeader(data, start);\n const nameIndex = parseCFFIndex(\n data,\n header.endOffset,\n parse.bytesToString\n );\n const topDictIndex = parseCFFIndex(data, nameIndex.endOffset);\n const stringIndex = parseCFFIndex(\n data,\n topDictIndex.endOffset,\n parse.bytesToString\n );\n const globalSubrIndex = parseCFFIndex(data, stringIndex.endOffset);\n font.gsubrs = globalSubrIndex.objects;\n font.gsubrsBias = calcCFFSubroutineBias(font.gsubrs);\n\n const topDictArray = gatherCFFTopDicts(\n data,\n start,\n topDictIndex.objects,\n stringIndex.objects\n );\n if (topDictArray.length !== 1) {\n throw new Error(\n \"CFF table has too many fonts in 'FontSet' - count of fonts NameIndex.length = \" +\n topDictArray.length\n );\n }\n\n const topDict = topDictArray[0];\n font.tables.cff.topDict = topDict;\n\n if (topDict._privateDict) {\n font.defaultWidthX = topDict._privateDict.defaultWidthX;\n font.nominalWidthX = topDict._privateDict.nominalWidthX;\n }\n\n if (topDict.ros[0] !== undefined && topDict.ros[1] !== undefined) {\n font.isCIDFont = true;\n }\n\n if (font.isCIDFont) {\n let fdArrayOffset = topDict.fdArray;\n let fdSelectOffset = topDict.fdSelect;\n if (fdArrayOffset === 0 || fdSelectOffset === 0) {\n throw new Error(\n 'Font is marked as a CID font, but FDArray and/or FDSelect information is missing'\n );\n }\n fdArrayOffset += start;\n const fdArrayIndex = parseCFFIndex(data, fdArrayOffset);\n const fdArray = gatherCFFTopDicts(\n data,\n start,\n fdArrayIndex.objects,\n stringIndex.objects\n );\n topDict._fdArray = fdArray;\n fdSelectOffset += start;\n topDict._fdSelect = parseCFFFDSelect(\n data,\n fdSelectOffset,\n font.numGlyphs,\n fdArray.length\n );\n }\n\n const privateDictOffset = start + topDict.private[1];\n const privateDict = parseCFFPrivateDict(\n data,\n privateDictOffset,\n topDict.private[0],\n stringIndex.objects\n );\n font.defaultWidthX = privateDict.defaultWidthX;\n font.nominalWidthX = privateDict.nominalWidthX;\n\n if (privateDict.subrs !== 0) {\n const subrOffset = privateDictOffset + privateDict.subrs;\n const subrIndex = parseCFFIndex(data, subrOffset);\n font.subrs = subrIndex.objects;\n font.subrsBias = calcCFFSubroutineBias(font.subrs);\n } else {\n font.subrs = [];\n font.subrsBias = 0;\n }\n\n // Offsets in the top dict are relative to the beginning of the CFF data, so add the CFF start offset.\n let charStringsIndex;\n if (opt.lowMemory) {\n charStringsIndex = parseCFFIndexLowMemory(\n data,\n start + topDict.charStrings\n );\n font.nGlyphs = charStringsIndex.offsets.length;\n } else {\n charStringsIndex = parseCFFIndex(data, start + topDict.charStrings);\n font.nGlyphs = charStringsIndex.objects.length;\n }\n\n const charset = parseCFFCharset(\n data,\n start + topDict.charset,\n font.nGlyphs,\n stringIndex.objects\n );\n if (topDict.encoding === 0) {\n // Standard encoding\n font.cffEncoding = new CffEncoding(cffStandardEncoding, charset);\n } else if (topDict.encoding === 1) {\n // Expert encoding\n font.cffEncoding = new CffEncoding(cffExpertEncoding, charset);\n } else {\n font.cffEncoding = parseCFFEncoding(\n data,\n start + topDict.encoding,\n charset\n );\n }\n\n // Prefer the CMAP encoding to the CFF encoding.\n font.encoding = font.encoding || font.cffEncoding;\n\n font.glyphs = new glyphset.GlyphSet(font);\n if (opt.lowMemory) {\n font._push = function (i) {\n const charString = getCffIndexObject(\n i,\n charStringsIndex.offsets,\n data,\n start + topDict.charStrings\n );\n font.glyphs.push(\n i,\n glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)\n );\n };\n } else {\n for (let i = 0; i < font.nGlyphs; i += 1) {\n const charString = charStringsIndex.objects[i];\n font.glyphs.push(\n i,\n glyphset.cffGlyphLoader(font, i, parseCFFCharstring, charString)\n );\n }\n }\n}\n\nexport default { parse: parseCFFTable };\n","// The `fvar` table stores font variation axes and instances.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseFvarAxis(data, start, names) {\n const axis = {};\n const p = new parse.Parser(data, start);\n axis.tag = p.parseTag();\n axis.minValue = p.parseFixed();\n axis.defaultValue = p.parseFixed();\n axis.maxValue = p.parseFixed();\n p.skip('uShort', 1); // reserved for flags; no values defined\n axis.name = names[p.parseUShort()] || {};\n return axis;\n}\n\nfunction parseFvarInstance(data, start, axes, names) {\n const inst = {};\n const p = new parse.Parser(data, start);\n inst.name = names[p.parseUShort()] || {};\n p.skip('uShort', 1); // reserved for flags; no values defined\n\n inst.coordinates = {};\n for (let i = 0; i < axes.length; ++i) {\n inst.coordinates[axes[i].tag] = p.parseFixed();\n }\n\n return inst;\n}\n\nfunction parseFvarTable(data, start, names) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(\n tableVersion === 0x00010000,\n 'Unsupported fvar table version.'\n );\n const offsetToData = p.parseOffset16();\n // Skip countSizePairs.\n p.skip('uShort', 1);\n const axisCount = p.parseUShort();\n const axisSize = p.parseUShort();\n const instanceCount = p.parseUShort();\n const instanceSize = p.parseUShort();\n\n const axes = [];\n for (let i = 0; i < axisCount; i++) {\n axes.push(\n parseFvarAxis(data, start + offsetToData + i * axisSize, names)\n );\n }\n\n const instances = [];\n const instanceStart = start + offsetToData + axisCount * axisSize;\n for (let j = 0; j < instanceCount; j++) {\n instances.push(\n parseFvarInstance(\n data,\n instanceStart + j * instanceSize,\n axes,\n names\n )\n );\n }\n\n return { axes: axes, instances: instances };\n}\n\nexport default { parse: parseFvarTable };\n","// The `GDEF` table contains various glyph properties\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gdef\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nvar attachList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n attachPoints: this.parseList(Parser.pointer(Parser.uShortList))\n };\n};\n\nvar caretValue = function() {\n var format = this.parseUShort();\n check.argument(format === 1 || format === 2 || format === 3,\n 'Unsupported CaretValue table version.');\n if (format === 1) {\n return { coordinate: this.parseShort() };\n } else if (format === 2) {\n return { pointindex: this.parseShort() };\n } else if (format === 3) {\n // Device / Variation Index tables unsupported\n return { coordinate: this.parseShort() };\n }\n};\n\nvar ligGlyph = function() {\n return this.parseList(Parser.pointer(caretValue));\n};\n\nvar ligCaretList = function() {\n return {\n coverage: this.parsePointer(Parser.coverage),\n ligGlyphs: this.parseList(Parser.pointer(ligGlyph))\n };\n};\n\nvar markGlyphSets = function() {\n this.parseUShort(); // Version\n return this.parseList(Parser.pointer(Parser.coverage));\n};\n\nfunction parseGDEFTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(tableVersion === 1 || tableVersion === 1.2 || tableVersion === 1.3,\n 'Unsupported GDEF table version.');\n var gdef = {\n version: tableVersion,\n classDef: p.parsePointer(Parser.classDef),\n attachList: p.parsePointer(attachList),\n ligCaretList: p.parsePointer(ligCaretList),\n markAttachClassDef: p.parsePointer(Parser.classDef)\n };\n if (tableVersion >= 1.2) {\n gdef.markGlyphSets = p.parsePointer(markGlyphSets);\n }\n return gdef;\n}\nexport default { parse: parseGDEFTable };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nconst subtableParsers = new Array(10); // subtableParsers[0] is unused\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-1-single-adjustment-positioning-subtable\n// this = Parser instance\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const posformat = this.parseUShort();\n if (posformat === 1) {\n return {\n posFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n value: this.parseValueRecord(),\n };\n } else if (posformat === 2) {\n return {\n posFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n values: this.parseValueRecordList(),\n };\n }\n check.assert(\n false,\n '0x' +\n start.toString(16) +\n ': GPOS lookup type 1 format must be 1 or 2.'\n );\n};\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos#lookup-type-2-pair-adjustment-positioning-subtable\nsubtableParsers[2] = function parseLookup2() {\n const start = this.offset + this.relativeOffset;\n const posFormat = this.parseUShort();\n check.assert(\n posFormat === 1 || posFormat === 2,\n '0x' +\n start.toString(16) +\n ': GPOS lookup type 2 format must be 1 or 2.'\n );\n const coverage = this.parsePointer(Parser.coverage);\n const valueFormat1 = this.parseUShort();\n const valueFormat2 = this.parseUShort();\n if (posFormat === 1) {\n // Adjustments for Glyph Pairs\n return {\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n pairSets: this.parseList(\n Parser.pointer(\n Parser.list(function () {\n return {\n // pairValueRecord\n secondGlyph: this.parseUShort(),\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2),\n };\n })\n )\n ),\n };\n } else if (posFormat === 2) {\n const classDef1 = this.parsePointer(Parser.classDef);\n const classDef2 = this.parsePointer(Parser.classDef);\n const class1Count = this.parseUShort();\n const class2Count = this.parseUShort();\n return {\n // Class Pair Adjustment\n posFormat: posFormat,\n coverage: coverage,\n valueFormat1: valueFormat1,\n valueFormat2: valueFormat2,\n classDef1: classDef1,\n classDef2: classDef2,\n class1Count: class1Count,\n class2Count: class2Count,\n classRecords: this.parseList(\n class1Count,\n Parser.list(class2Count, function () {\n return {\n value1: this.parseValueRecord(valueFormat1),\n value2: this.parseValueRecord(valueFormat2),\n };\n })\n ),\n };\n }\n};\n\nsubtableParsers[3] = function parseLookup3() {\n return { error: 'GPOS Lookup 3 not supported' };\n};\nsubtableParsers[4] = function parseLookup4() {\n return { error: 'GPOS Lookup 4 not supported' };\n};\nsubtableParsers[5] = function parseLookup5() {\n return { error: 'GPOS Lookup 5 not supported' };\n};\nsubtableParsers[6] = function parseLookup6() {\n return { error: 'GPOS Lookup 6 not supported' };\n};\nsubtableParsers[7] = function parseLookup7() {\n return { error: 'GPOS Lookup 7 not supported' };\n};\nsubtableParsers[8] = function parseLookup8() {\n return { error: 'GPOS Lookup 8 not supported' };\n};\nsubtableParsers[9] = function parseLookup9() {\n return { error: 'GPOS Lookup 9 not supported' };\n};\n\n// https://docs.microsoft.com/en-us/typography/opentype/spec/gpos\nfunction parseGposTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(\n tableVersion === 1 || tableVersion === 1.1,\n 'Unsupported GPOS table version ' + tableVersion\n );\n\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList(),\n };\n }\n}\n\nexport default { parse: parseGposTable };\n","// The `GSUB` table contains ligatures, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\n\nimport check from '../check';\nimport { Parser } from '../parse';\n\nconst subtableParsers = new Array(9); // subtableParsers[0] is unused\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#SS\nsubtableParsers[1] = function parseLookup1() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n deltaGlyphId: this.parseUShort(),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n substitute: this.parseOffset16List(),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 1 format must be 1 or 2.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#MS\nsubtableParsers[2] = function parseLookup2() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Multiple Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n sequences: this.parseListOfLists(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#AS\nsubtableParsers[3] = function parseLookup3() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Alternate Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n alternateSets: this.parseListOfLists(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#LS\nsubtableParsers[4] = function parseLookup4() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB ligature table identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ligatureSets: this.parseListOfLists(function () {\n return {\n ligGlyph: this.parseUShort(),\n components: this.parseUShortList(this.parseUShort() - 1),\n };\n }),\n };\n};\n\nconst lookupRecordDesc = {\n sequenceIndex: Parser.uShort,\n lookupListIndex: Parser.uShort,\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CSF\nsubtableParsers[5] = function parseLookup5() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n\n if (substFormat === 1) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n ruleSets: this.parseListOfLists(function () {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n input: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(\n substCount,\n lookupRecordDesc\n ),\n };\n }),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n classDef: this.parsePointer(Parser.classDef),\n classSets: this.parseListOfLists(function () {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n classes: this.parseUShortList(glyphCount - 1),\n lookupRecords: this.parseRecordList(\n substCount,\n lookupRecordDesc\n ),\n };\n }),\n };\n } else if (substFormat === 3) {\n const glyphCount = this.parseUShort();\n const substCount = this.parseUShort();\n return {\n substFormat: substFormat,\n coverages: this.parseList(\n glyphCount,\n Parser.pointer(Parser.coverage)\n ),\n lookupRecords: this.parseRecordList(substCount, lookupRecordDesc),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 5 format must be 1, 2 or 3.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#CC\nsubtableParsers[6] = function parseLookup6() {\n const start = this.offset + this.relativeOffset;\n const substFormat = this.parseUShort();\n if (substFormat === 1) {\n return {\n substFormat: 1,\n coverage: this.parsePointer(Parser.coverage),\n chainRuleSets: this.parseListOfLists(function () {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }),\n };\n } else if (substFormat === 2) {\n return {\n substFormat: 2,\n coverage: this.parsePointer(Parser.coverage),\n backtrackClassDef: this.parsePointer(Parser.classDef),\n inputClassDef: this.parsePointer(Parser.classDef),\n lookaheadClassDef: this.parsePointer(Parser.classDef),\n chainClassSet: this.parseListOfLists(function () {\n return {\n backtrack: this.parseUShortList(),\n input: this.parseUShortList(this.parseShort() - 1),\n lookahead: this.parseUShortList(),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }),\n };\n } else if (substFormat === 3) {\n return {\n substFormat: 3,\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n inputCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookupRecords: this.parseRecordList(lookupRecordDesc),\n };\n }\n check.assert(\n false,\n '0x' + start.toString(16) + ': lookup type 6 format must be 1, 2 or 3.'\n );\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#ES\nsubtableParsers[7] = function parseLookup7() {\n // Extension Substitution subtable\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Extension Substitution subtable identifier-format must be 1'\n );\n const extensionLookupType = this.parseUShort();\n const extensionParser = new Parser(\n this.data,\n this.offset + this.parseULong()\n );\n return {\n substFormat: 1,\n lookupType: extensionLookupType,\n extension: subtableParsers[extensionLookupType].call(extensionParser),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/GSUB.htm#RCCS\nsubtableParsers[8] = function parseLookup8() {\n const substFormat = this.parseUShort();\n check.argument(\n substFormat === 1,\n 'GSUB Reverse Chaining Contextual Single Substitution Subtable identifier-format must be 1'\n );\n return {\n substFormat: substFormat,\n coverage: this.parsePointer(Parser.coverage),\n backtrackCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n lookaheadCoverage: this.parseList(Parser.pointer(Parser.coverage)),\n substitutes: this.parseUShortList(),\n };\n};\n\n// https://www.microsoft.com/typography/OTSPEC/gsub.htm\nfunction parseGsubTable(data, start) {\n start = start || 0;\n const p = new Parser(data, start);\n const tableVersion = p.parseVersion(1);\n check.argument(\n tableVersion === 1 || tableVersion === 1.1,\n 'Unsupported GSUB table version.'\n );\n if (tableVersion === 1) {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n };\n } else {\n return {\n version: tableVersion,\n scripts: p.parseScriptList(),\n features: p.parseFeatureList(),\n lookups: p.parseLookupList(subtableParsers),\n variations: p.parseFeatureVariationsList(),\n };\n }\n}\n\nexport default { parse: parseGsubTable };\n","// The `head` table contains global information about the font.\n// https://www.microsoft.com/typography/OTSPEC/head.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\n// Parse the header `head` table\nfunction parseHeadTable(data, start) {\n const head = {};\n const p = new parse.Parser(data, start);\n head.version = p.parseVersion();\n head.fontRevision = Math.round(p.parseFixed() * 1000) / 1000;\n head.checkSumAdjustment = p.parseULong();\n head.magicNumber = p.parseULong();\n check.argument(\n head.magicNumber === 0x5f0f3cf5,\n 'Font header has wrong magic number.'\n );\n head.flags = p.parseUShort();\n head.unitsPerEm = p.parseUShort();\n head.created = p.parseLongDateTime();\n head.modified = p.parseLongDateTime();\n head.xMin = p.parseShort();\n head.yMin = p.parseShort();\n head.xMax = p.parseShort();\n head.yMax = p.parseShort();\n head.macStyle = p.parseUShort();\n head.lowestRecPPEM = p.parseUShort();\n head.fontDirectionHint = p.parseShort();\n head.indexToLocFormat = p.parseShort();\n head.glyphDataFormat = p.parseShort();\n return head;\n}\n\nexport default { parse: parseHeadTable };\n","// The `hhea` table contains information for horizontal layout.\n// https://www.microsoft.com/typography/OTSPEC/hhea.htm\n\nimport parse from '../parse';\n\n// Parse the horizontal header `hhea` table\nfunction parseHheaTable(data, start) {\n const hhea = {};\n const p = new parse.Parser(data, start);\n hhea.version = p.parseVersion();\n hhea.ascender = p.parseShort();\n hhea.descender = p.parseShort();\n hhea.lineGap = p.parseShort();\n hhea.advanceWidthMax = p.parseUShort();\n hhea.minLeftSideBearing = p.parseShort();\n hhea.minRightSideBearing = p.parseShort();\n hhea.xMaxExtent = p.parseShort();\n hhea.caretSlopeRise = p.parseShort();\n hhea.caretSlopeRun = p.parseShort();\n hhea.caretOffset = p.parseShort();\n p.relativeOffset += 8;\n hhea.metricDataFormat = p.parseShort();\n hhea.numberOfHMetrics = p.parseUShort();\n return hhea;\n}\n\nexport default { parse: parseHheaTable };\n","// The `hmtx` table contains the horizontal metrics for all glyphs.\n// https://www.microsoft.com/typography/OTSPEC/hmtx.htm\n\nimport parse from '../parse';\n\nfunction parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs) {\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n const glyph = glyphs.get(i);\n glyph.advanceWidth = advanceWidth;\n glyph.leftSideBearing = leftSideBearing;\n }\n}\n\nfunction parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs) {\n font._hmtxTableData = {};\n\n let advanceWidth;\n let leftSideBearing;\n const p = new parse.Parser(data, start);\n for (let i = 0; i < numGlyphs; i += 1) {\n // If the font is monospaced, only one entry is needed. This last entry applies to all subsequent glyphs.\n if (i < numMetrics) {\n advanceWidth = p.parseUShort();\n leftSideBearing = p.parseShort();\n }\n\n font._hmtxTableData[i] = {\n advanceWidth: advanceWidth,\n leftSideBearing: leftSideBearing,\n };\n }\n}\n\n// Parse the `hmtx` table, which contains the horizontal metrics for all glyphs.\n// This function augments the glyph array, adding the advanceWidth and leftSideBearing to each glyph.\nfunction parseHmtxTable(font, data, start, numMetrics, numGlyphs, glyphs, opt) {\n if (opt.lowMemory)\n parseHmtxTableOnLowMemory(font, data, start, numMetrics, numGlyphs);\n else parseHmtxTableAll(data, start, numMetrics, numGlyphs, glyphs);\n}\n\nexport default { parse: parseHmtxTable };\n","// The `kern` table contains kerning pairs.\n// Note that some fonts use the GPOS OpenType layout table to specify kerning.\n// https://www.microsoft.com/typography/OTSPEC/kern.htm\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseWindowsKernTable(p) {\n const pairs = {};\n // Skip nTables.\n p.skip('uShort');\n const subtableVersion = p.parseUShort();\n check.argument(subtableVersion === 0, 'Unsupported kern sub-table version.');\n // Skip subtableLength, subtableCoverage\n p.skip('uShort', 2);\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n return pairs;\n}\n\nfunction parseMacKernTable(p) {\n const pairs = {};\n // The Mac kern table stores the version as a fixed (32 bits) but we only loaded the first 16 bits.\n // Skip the rest.\n p.skip('uShort');\n const nTables = p.parseULong();\n //check.argument(nTables === 1, 'Only 1 subtable is supported (got ' + nTables + ').');\n if (nTables > 1) {\n console.warn('Only the first kern subtable is supported.');\n }\n p.skip('uLong');\n const coverage = p.parseUShort();\n const subtableVersion = coverage & 0xFF;\n p.skip('uShort');\n if (subtableVersion === 0) {\n const nPairs = p.parseUShort();\n // Skip searchRange, entrySelector, rangeShift.\n p.skip('uShort', 3);\n for (let i = 0; i < nPairs; i += 1) {\n const leftIndex = p.parseUShort();\n const rightIndex = p.parseUShort();\n const value = p.parseShort();\n pairs[leftIndex + ',' + rightIndex] = value;\n }\n }\n return pairs;\n}\n\n// Parse the `kern` table which contains kerning pairs.\nfunction parseKernTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseUShort();\n if (tableVersion === 0) {\n return parseWindowsKernTable(p);\n } else if (tableVersion === 1) {\n return parseMacKernTable(p);\n } else {\n throw new Error('Unsupported kern table version (' + tableVersion + ').');\n }\n}\n\nexport default { parse: parseKernTable };\n","// The `ltag` table stores IETF BCP-47 language tags. It allows supporting\n// languages for which TrueType does not assign a numeric code.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html\n// http://www.w3.org/International/articles/language-tags/\n// http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry\n\nimport check from '../check';\nimport parse from '../parse';\n\nfunction parseLtagTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported ltag table version.');\n // The 'ltag' specification does not define any flags; skip the field.\n p.skip('uLong', 1);\n const numTags = p.parseULong();\n\n const tags = [];\n for (let i = 0; i < numTags; i++) {\n let tag = '';\n const offset = start + p.parseUShort();\n const length = p.parseUShort();\n for (let j = offset; j < offset + length; ++j) {\n tag += String.fromCharCode(data.getInt8(j));\n }\n\n tags.push(tag);\n }\n\n return tags;\n}\n\nexport default { parse: parseLtagTable };\n","// The `loca` table stores the offsets to the locations of the glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/loca.htm\n\nimport parse from '../parse';\n\n// Parse the `loca` table. This table stores the offsets to the locations of the glyphs in the font,\n// relative to the beginning of the glyphData table.\n// The number of glyphs stored in the `loca` table is specified in the `maxp` table (under numGlyphs)\n// The loca table has two versions: a short version where offsets are stored as uShorts, and a long\n// version where offsets are stored as uLongs. The `head` table specifies which version to use\n// (under indexToLocFormat).\nfunction parseLocaTable(data, start, numGlyphs, shortVersion) {\n const p = new parse.Parser(data, start);\n const parseFn = shortVersion ? p.parseUShort : p.parseULong;\n // There is an extra entry after the last index element to compute the length of the last glyph.\n // That's why we use numGlyphs + 1.\n const glyphOffsets = [];\n for (let i = 0; i < numGlyphs + 1; i += 1) {\n let glyphOffset = parseFn.call(p);\n if (shortVersion) {\n // The short table version stores the actual offset divided by 2.\n glyphOffset *= 2;\n }\n\n glyphOffsets.push(glyphOffset);\n }\n\n return glyphOffsets;\n}\n\nexport default { parse: parseLocaTable };\n","// The `maxp` table establishes the memory requirements for the font.\n// We need it just to get the number of glyphs in the font.\n// https://www.microsoft.com/typography/OTSPEC/maxp.htm\n\nimport parse from '../parse';\n\n// Parse the maximum profile `maxp` table.\nfunction parseMaxpTable(data, start) {\n const maxp = {};\n const p = new parse.Parser(data, start);\n maxp.version = p.parseVersion();\n maxp.numGlyphs = p.parseUShort();\n if (maxp.version === 1.0) {\n maxp.maxPoints = p.parseUShort();\n maxp.maxContours = p.parseUShort();\n maxp.maxCompositePoints = p.parseUShort();\n maxp.maxCompositeContours = p.parseUShort();\n maxp.maxZones = p.parseUShort();\n maxp.maxTwilightPoints = p.parseUShort();\n maxp.maxStorage = p.parseUShort();\n maxp.maxFunctionDefs = p.parseUShort();\n maxp.maxInstructionDefs = p.parseUShort();\n maxp.maxStackElements = p.parseUShort();\n maxp.maxSizeOfInstructions = p.parseUShort();\n maxp.maxComponentElements = p.parseUShort();\n maxp.maxComponentDepth = p.parseUShort();\n }\n\n return maxp;\n}\n\nexport default { parse: parseMaxpTable };\n","// The `OS/2` table contains metrics required in OpenType fonts.\n// https://www.microsoft.com/typography/OTSPEC/os2.htm\n\nimport parse from '../parse';\n\n// Parse the OS/2 and Windows metrics `OS/2` table\nfunction parseOS2Table(data, start) {\n const os2 = {};\n const p = new parse.Parser(data, start);\n os2.version = p.parseUShort();\n os2.xAvgCharWidth = p.parseShort();\n os2.usWeightClass = p.parseUShort();\n os2.usWidthClass = p.parseUShort();\n os2.fsType = p.parseUShort();\n os2.ySubscriptXSize = p.parseShort();\n os2.ySubscriptYSize = p.parseShort();\n os2.ySubscriptXOffset = p.parseShort();\n os2.ySubscriptYOffset = p.parseShort();\n os2.ySuperscriptXSize = p.parseShort();\n os2.ySuperscriptYSize = p.parseShort();\n os2.ySuperscriptXOffset = p.parseShort();\n os2.ySuperscriptYOffset = p.parseShort();\n os2.yStrikeoutSize = p.parseShort();\n os2.yStrikeoutPosition = p.parseShort();\n os2.sFamilyClass = p.parseShort();\n os2.panose = [];\n for (let i = 0; i < 10; i++) {\n os2.panose[i] = p.parseByte();\n }\n\n os2.ulUnicodeRange1 = p.parseULong();\n os2.ulUnicodeRange2 = p.parseULong();\n os2.ulUnicodeRange3 = p.parseULong();\n os2.ulUnicodeRange4 = p.parseULong();\n os2.achVendID = String.fromCharCode(\n p.parseByte(),\n p.parseByte(),\n p.parseByte(),\n p.parseByte()\n );\n os2.fsSelection = p.parseUShort();\n os2.usFirstCharIndex = p.parseUShort();\n os2.usLastCharIndex = p.parseUShort();\n os2.sTypoAscender = p.parseShort();\n os2.sTypoDescender = p.parseShort();\n os2.sTypoLineGap = p.parseShort();\n os2.usWinAscent = p.parseUShort();\n os2.usWinDescent = p.parseUShort();\n if (os2.version >= 1) {\n os2.ulCodePageRange1 = p.parseULong();\n os2.ulCodePageRange2 = p.parseULong();\n }\n\n if (os2.version >= 2) {\n os2.sxHeight = p.parseShort();\n os2.sCapHeight = p.parseShort();\n os2.usDefaultChar = p.parseUShort();\n os2.usBreakChar = p.parseUShort();\n os2.usMaxContent = p.parseUShort();\n }\n\n return os2;\n}\n\nexport default { parse: parseOS2Table };\n","// The `post` table stores additional PostScript information, such as glyph names.\n// https://www.microsoft.com/typography/OTSPEC/post.htm\n\nimport parse from '../parse';\n\n// Parse the PostScript `post` table\nfunction parsePostTable(data, start) {\n const post = {};\n const p = new parse.Parser(data, start);\n post.version = p.parseVersion();\n post.italicAngle = p.parseFixed();\n post.underlinePosition = p.parseShort();\n post.underlineThickness = p.parseShort();\n post.isFixedPitch = p.parseULong();\n post.minMemType42 = p.parseULong();\n post.maxMemType42 = p.parseULong();\n post.minMemType1 = p.parseULong();\n post.maxMemType1 = p.parseULong();\n post.names = [];\n switch (post.version) {\n case 1:\n break;\n case 2:\n post.numberOfGlyphs = p.parseUShort();\n post.glyphNameIndex = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.glyphNameIndex[i] = p.parseUShort();\n }\n break;\n case 2.5:\n post.numberOfGlyphs = p.parseUShort();\n post.offset = new Array(post.numberOfGlyphs);\n for (let i = 0; i < post.numberOfGlyphs; i++) {\n post.offset[i] = p.parseChar();\n }\n break;\n }\n return post;\n}\n\nexport default { parse: parsePostTable };\n","// Data types used in the OpenType font file.\n// All OpenType fonts use Motorola-style byte ordering (Big Endian)\n\nimport check from './check';\n\nconst LIMIT16 = 32768; // The limit at which a 16-bit number switches signs == 2^15\nconst LIMIT32 = 2147483648; // The limit at which a 32-bit number switches signs == 2 ^ 31\n\n/**\n * @exports opentype.decode\n * @class\n */\nconst decode = {};\n/**\n * @exports opentype.encode\n * @class\n */\nconst encode = {};\n/**\n * @exports opentype.sizeOf\n * @class\n */\nconst sizeOf = {};\n\n// Return a function that always returns the same value.\nfunction constant(v) {\n return function() {\n return v;\n };\n}\n\n// OpenType data types //////////////////////////////////////////////////////\n\n/**\n * Convert an 8-bit unsigned integer to a list of 1 byte.\n * @param {number}\n * @returns {Array}\n */\nencode.BYTE = function(v) {\n check.argument(v >= 0 && v <= 255, 'Byte value should be between 0 and 255.');\n return [v];\n};\n/**\n * @constant\n * @type {number}\n */\nsizeOf.BYTE = constant(1);\n\n/**\n * Convert a 8-bit signed integer to a list of 1 byte.\n * @param {string}\n * @returns {Array}\n */\nencode.CHAR = function(v) {\n return [v.charCodeAt(0)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.CHAR = constant(1);\n\n/**\n * Convert an ASCII string to a list of bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n v = '';\n console.warn('Undefined CHARARRAY encountered and treated as an empty string. This is probably caused by a missing glyph name.');\n }\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n b[i] = v.charCodeAt(i);\n }\n\n return b;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARARRAY = function(v) {\n if (typeof v === 'undefined') {\n return 0;\n }\n return v.length;\n};\n\n/**\n * Convert a 16-bit unsigned integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.USHORT = function(v) {\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.USHORT = constant(2);\n\n/**\n * Convert a 16-bit signed integer to a list of 2 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.SHORT = function(v) {\n // Two's complement\n if (v >= LIMIT16) {\n v = -(2 * LIMIT16 - v);\n }\n\n return [(v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.SHORT = constant(2);\n\n/**\n * Convert a 24-bit unsigned integer to a list of 3 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.UINT24 = function(v) {\n return [(v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.UINT24 = constant(3);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.ULONG = function(v) {\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.ULONG = constant(4);\n\n/**\n * Convert a 32-bit unsigned integer to a list of 4 bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.LONG = function(v) {\n // Two's complement\n if (v >= LIMIT32) {\n v = -(2 * LIMIT32 - v);\n }\n\n return [(v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONG = constant(4);\n\nencode.FIXED = encode.ULONG;\nsizeOf.FIXED = sizeOf.ULONG;\n\nencode.FWORD = encode.SHORT;\nsizeOf.FWORD = sizeOf.SHORT;\n\nencode.UFWORD = encode.USHORT;\nsizeOf.UFWORD = sizeOf.USHORT;\n\n/**\n * Convert a 32-bit Apple Mac timestamp integer to a list of 8 bytes, 64-bit timestamp.\n * @param {number}\n * @returns {Array}\n */\nencode.LONGDATETIME = function(v) {\n return [0, 0, 0, 0, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.LONGDATETIME = constant(8);\n\n/**\n * Convert a 4-char tag to a list of 4 bytes.\n * @param {string}\n * @returns {Array}\n */\nencode.TAG = function(v) {\n check.argument(v.length === 4, 'Tag should be exactly 4 ASCII characters.');\n return [v.charCodeAt(0),\n v.charCodeAt(1),\n v.charCodeAt(2),\n v.charCodeAt(3)];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.TAG = constant(4);\n\n// CFF data types ///////////////////////////////////////////////////////////\n\nencode.Card8 = encode.BYTE;\nsizeOf.Card8 = sizeOf.BYTE;\n\nencode.Card16 = encode.USHORT;\nsizeOf.Card16 = sizeOf.USHORT;\n\nencode.OffSize = encode.BYTE;\nsizeOf.OffSize = sizeOf.BYTE;\n\nencode.SID = encode.USHORT;\nsizeOf.SID = sizeOf.USHORT;\n\n// Convert a numeric operand or charstring number to a variable-size list of bytes.\n/**\n * Convert a numeric operand or charstring number to a variable-size list of bytes.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER = function(v) {\n if (v >= -107 && v <= 107) {\n return [v + 139];\n } else if (v >= 108 && v <= 1131) {\n v = v - 108;\n return [(v >> 8) + 247, v & 0xFF];\n } else if (v >= -1131 && v <= -108) {\n v = -v - 108;\n return [(v >> 8) + 251, v & 0xFF];\n } else if (v >= -32768 && v <= 32767) {\n return encode.NUMBER16(v);\n } else {\n return encode.NUMBER32(v);\n }\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.NUMBER = function(v) {\n return encode.NUMBER(v).length;\n};\n\n/**\n * Convert a signed number between -32768 and +32767 to a three-byte value.\n * This ensures we always use three bytes, but is not the most compact format.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER16 = function(v) {\n return [28, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER16 = constant(3);\n\n/**\n * Convert a signed number between -(2^31) and +(2^31-1) to a five-byte value.\n * This is useful if you want to be sure you always use four bytes,\n * at the expense of wasting a few bytes for smaller numbers.\n * @param {number}\n * @returns {Array}\n */\nencode.NUMBER32 = function(v) {\n return [29, (v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF];\n};\n\n/**\n * @constant\n * @type {number}\n */\nsizeOf.NUMBER32 = constant(5);\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.REAL = function(v) {\n let value = v.toString();\n\n // Some numbers use an epsilon to encode the value. (e.g. JavaScript will store 0.0000001 as 1e-7)\n // This code converts it back to a number without the epsilon.\n const m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n const epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(v * epsilon) / epsilon).toString();\n }\n\n let nibbles = '';\n for (let i = 0, ii = value.length; i < ii; i += 1) {\n const c = value[i];\n if (c === 'e') {\n nibbles += value[++i] === '-' ? 'c' : 'b';\n } else if (c === '.') {\n nibbles += 'a';\n } else if (c === '-') {\n nibbles += 'e';\n } else {\n nibbles += c;\n }\n }\n\n nibbles += (nibbles.length & 1) ? 'f' : 'ff';\n const out = [30];\n for (let i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n\n return out;\n};\n\n/**\n * @param {number}\n * @returns {number}\n */\nsizeOf.REAL = function(v) {\n return encode.REAL(v).length;\n};\n\nencode.NAME = encode.CHARARRAY;\nsizeOf.NAME = sizeOf.CHARARRAY;\n\nencode.STRING = encode.CHARARRAY;\nsizeOf.STRING = sizeOf.CHARARRAY;\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF8 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes;\n for (let j = 0; j < numChars; j++, offset += 1) {\n codePoints[j] = data.getUint8(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * @param {DataView} data\n * @param {number} offset\n * @param {number} numBytes\n * @returns {string}\n */\ndecode.UTF16 = function(data, offset, numBytes) {\n const codePoints = [];\n const numChars = numBytes / 2;\n for (let j = 0; j < numChars; j++, offset += 2) {\n codePoints[j] = data.getUint16(offset);\n }\n\n return String.fromCharCode.apply(null, codePoints);\n};\n\n/**\n * Convert a JavaScript string to UTF16-BE.\n * @param {string}\n * @returns {Array}\n */\nencode.UTF16 = function(v) {\n const b = [];\n for (let i = 0; i < v.length; i += 1) {\n const codepoint = v.charCodeAt(i);\n b[b.length] = (codepoint >> 8) & 0xFF;\n b[b.length] = codepoint & 0xFF;\n }\n\n return b;\n};\n\n/**\n * @param {string}\n * @returns {number}\n */\nsizeOf.UTF16 = function(v) {\n return v.length * 2;\n};\n\n// Data for converting old eight-bit Macintosh encodings to Unicode.\n// This representation is optimized for decoding; encoding is slower\n// and needs more memory. The assumption is that all opentype.js users\n// want to open fonts, but saving a font will be comparatively rare\n// so it can be more expensive. Keyed by IANA character set name.\n//\n// Python script for generating these strings:\n//\n// s = u''.join([chr(c).decode('mac_greek') for c in range(128, 256)])\n// print(s.encode('utf-8'))\n/**\n * @private\n */\nconst eightBitMacEncodings = {\n 'x-mac-croatian': // Python: 'mac_croatian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø' +\n '¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊©⁄€‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ',\n 'x-mac-cyrillic': // Python: 'mac_cyrillic'\n 'АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњ' +\n 'јЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю',\n 'x-mac-gaelic': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/GAELIC.TXT\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØḂ±≤≥ḃĊċḊḋḞḟĠġṀæø' +\n 'ṁṖṗɼƒſṠ«»… ÀÃÕŒœ–—“”‘’ṡẛÿŸṪ€‹›Ŷŷṫ·Ỳỳ⁊ÂÊÁËÈÍÎÏÌÓÔ♣ÒÚÛÙıÝýŴŵẄẅẀẁẂẃ',\n 'x-mac-greek': // Python: 'mac_greek'\n 'Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦€ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩ' +\n 'άΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ\\u00AD',\n 'x-mac-icelandic': // Python: 'mac_iceland'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-inuit': // http://unicode.org/Public/MAPPINGS/VENDORS/APPLE/INUIT.TXT\n 'ᐃᐄᐅᐆᐊᐋᐱᐲᐳᐴᐸᐹᑉᑎᑏᑐᑑᑕᑖᑦᑭᑮᑯᑰᑲᑳᒃᒋᒌᒍᒎᒐᒑ°ᒡᒥᒦ•¶ᒧ®©™ᒨᒪᒫᒻᓂᓃᓄᓅᓇᓈᓐᓯᓰᓱᓲᓴᓵᔅᓕᓖᓗ' +\n 'ᓘᓚᓛᓪᔨᔩᔪᔫᔭ… ᔮᔾᕕᕖᕗ–—“”‘’ᕘᕙᕚᕝᕆᕇᕈᕉᕋᕌᕐᕿᖀᖁᖂᖃᖄᖅᖏᖐᖑᖒᖓᖔᖕᙱᙲᙳᙴᙵᙶᖖᖠᖡᖢᖣᖤᖥᖦᕼŁł',\n 'x-mac-ce': // Python: 'mac_latin2'\n 'ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅ' +\n 'ņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ',\n macintosh: // Python: 'mac_roman'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-romanian': // Python: 'mac_romanian'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂȘ∞±≤≥¥µ∂∑∏π∫ªºΩăș' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄€‹›Țț‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ',\n 'x-mac-turkish': // Python: 'mac_turkish'\n 'ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø' +\n '¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙˆ˜¯˘˙˚¸˝˛ˇ'\n};\n\n/**\n * Decodes an old-style Macintosh string. Returns either a Unicode JavaScript\n * string, or 'undefined' if the encoding is unsupported. For example, we do\n * not support Chinese, Japanese or Korean because these would need large\n * mapping tables.\n * @param {DataView} dataView\n * @param {number} offset\n * @param {number} dataLength\n * @param {string} encoding\n * @returns {string}\n */\ndecode.MACSTRING = function(dataView, offset, dataLength, encoding) {\n const table = eightBitMacEncodings[encoding];\n if (table === undefined) {\n return undefined;\n }\n\n let result = '';\n for (let i = 0; i < dataLength; i++) {\n const c = dataView.getUint8(offset + i);\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c <= 0x7F) {\n result += String.fromCharCode(c);\n } else {\n result += table[c & 0x7F];\n }\n }\n\n return result;\n};\n\n// Helper function for encode.MACSTRING. Returns a dictionary for mapping\n// Unicode character codes to their 8-bit MacOS equivalent. This table\n// is not exactly a super cheap data structure, but we do not care because\n// encoding Macintosh strings is only rarely needed in typical applications.\nconst macEncodingTableCache = typeof WeakMap === 'function' && new WeakMap();\nlet macEncodingCacheKeys;\nconst getMacEncodingTable = function (encoding) {\n // Since we use encoding as a cache key for WeakMap, it has to be\n // a String object and not a literal. And at least on NodeJS 2.10.1,\n // WeakMap requires that the same String instance is passed for cache hits.\n if (!macEncodingCacheKeys) {\n macEncodingCacheKeys = {};\n for (let e in eightBitMacEncodings) {\n /*jshint -W053 */ // Suppress \"Do not use String as a constructor.\"\n macEncodingCacheKeys[e] = new String(e);\n }\n }\n\n const cacheKey = macEncodingCacheKeys[encoding];\n if (cacheKey === undefined) {\n return undefined;\n }\n\n // We can't do \"if (cache.has(key)) {return cache.get(key)}\" here:\n // since garbage collection may run at any time, it could also kick in\n // between the calls to cache.has() and cache.get(). In that case,\n // we would return 'undefined' even though we do support the encoding.\n if (macEncodingTableCache) {\n const cachedTable = macEncodingTableCache.get(cacheKey);\n if (cachedTable !== undefined) {\n return cachedTable;\n }\n }\n\n const decodingTable = eightBitMacEncodings[encoding];\n if (decodingTable === undefined) {\n return undefined;\n }\n\n const encodingTable = {};\n for (let i = 0; i < decodingTable.length; i++) {\n encodingTable[decodingTable.charCodeAt(i)] = i + 0x80;\n }\n\n if (macEncodingTableCache) {\n macEncodingTableCache.set(cacheKey, encodingTable);\n }\n\n return encodingTable;\n};\n\n/**\n * Encodes an old-style Macintosh string. Returns a byte array upon success.\n * If the requested encoding is unsupported, or if the input string contains\n * a character that cannot be expressed in the encoding, the function returns\n * 'undefined'.\n * @param {string} str\n * @param {string} encoding\n * @returns {Array}\n */\nencode.MACSTRING = function(str, encoding) {\n const table = getMacEncodingTable(encoding);\n if (table === undefined) {\n return undefined;\n }\n\n const result = [];\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n\n // In all eight-bit Mac encodings, the characters 0x00..0x7F are\n // mapped to U+0000..U+007F; we only need to look up the others.\n if (c >= 0x80) {\n c = table[c];\n if (c === undefined) {\n // str contains a Unicode character that cannot be encoded\n // in the requested encoding.\n return undefined;\n }\n }\n result[i] = c;\n // result.push(c);\n }\n\n return result;\n};\n\n/**\n * @param {string} str\n * @param {string} encoding\n * @returns {number}\n */\nsizeOf.MACSTRING = function(str, encoding) {\n const b = encode.MACSTRING(str, encoding);\n if (b !== undefined) {\n return b.length;\n } else {\n return 0;\n }\n};\n\n// Helper for encode.VARDELTAS\nfunction isByteEncodable(value) {\n return value >= -128 && value <= 127;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsZeroes(deltas, pos, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n while (pos < numDeltas && runLength < 64 && deltas[pos] === 0) {\n ++pos;\n ++runLength;\n }\n result.push(0x80 | (runLength - 1));\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsBytes(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n if (!isByteEncodable(value)) {\n break;\n }\n\n // Within a byte-encoded run of deltas, a single zero is best\n // stored literally as 0x00 value. However, if we have two or\n // more zeroes in a sequence, it is better to start a new run.\n // Fore example, the sequence of deltas [15, 15, 0, 15, 15]\n // becomes 6 bytes (04 0F 0F 00 0F 0F) when storing the zero\n // within the current run, but 7 bytes (01 0F 0F 80 01 0F 0F)\n // when starting a new run.\n if (value === 0 && pos + 1 < numDeltas && deltas[pos + 1] === 0) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(runLength - 1);\n for (let i = offset; i < pos; ++i) {\n result.push((deltas[i] + 256) & 0xff);\n }\n return pos;\n}\n\n// Helper for encode.VARDELTAS\nfunction encodeVarDeltaRunAsWords(deltas, offset, result) {\n let runLength = 0;\n const numDeltas = deltas.length;\n let pos = offset;\n while (pos < numDeltas && runLength < 64) {\n const value = deltas[pos];\n\n // Within a word-encoded run of deltas, it is easiest to start\n // a new run (with a different encoding) whenever we encounter\n // a zero value. For example, the sequence [0x6666, 0, 0x7777]\n // needs 7 bytes when storing the zero inside the current run\n // (42 66 66 00 00 77 77), and equally 7 bytes when starting a\n // new run (40 66 66 80 40 77 77).\n if (value === 0) {\n break;\n }\n\n // Within a word-encoded run of deltas, a single value in the\n // range (-128..127) should be encoded within the current run\n // because it is more compact. For example, the sequence\n // [0x6666, 2, 0x7777] becomes 7 bytes when storing the value\n // literally (42 66 66 00 02 77 77), but 8 bytes when starting\n // a new run (40 66 66 00 02 40 77 77).\n if (isByteEncodable(value) && pos + 1 < numDeltas && isByteEncodable(deltas[pos + 1])) {\n break;\n }\n\n ++pos;\n ++runLength;\n }\n result.push(0x40 | (runLength - 1));\n for (let i = offset; i < pos; ++i) {\n const val = deltas[i];\n result.push(((val + 0x10000) >> 8) & 0xff, (val + 0x100) & 0xff);\n }\n return pos;\n}\n\n/**\n * Encode a list of variation adjustment deltas.\n *\n * Variation adjustment deltas are used in ‘gvar’ and ‘cvar’ tables.\n * They indicate how points (in ‘gvar’) or values (in ‘cvar’) get adjusted\n * when generating instances of variation fonts.\n *\n * @see https://www.microsoft.com/typography/otspec/gvar.htm\n * @see https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6gvar.html\n * @param {Array}\n * @return {Array}\n */\nencode.VARDELTAS = function(deltas) {\n let pos = 0;\n const result = [];\n while (pos < deltas.length) {\n const value = deltas[pos];\n if (value === 0) {\n pos = encodeVarDeltaRunAsZeroes(deltas, pos, result);\n } else if (value >= -128 && value <= 127) {\n pos = encodeVarDeltaRunAsBytes(deltas, pos, result);\n } else {\n pos = encodeVarDeltaRunAsWords(deltas, pos, result);\n }\n }\n return result;\n};\n\n// Convert a list of values to a CFF INDEX structure.\n// The values should be objects containing name / type / value.\n/**\n * @param {Array} l\n * @returns {Array}\n */\nencode.INDEX = function(l) {\n //var offset, offsets, offsetEncoder, encodedOffsets, encodedOffset, data,\n // i, v;\n // Because we have to know which data type to use to encode the offsets,\n // we have to go through the values twice: once to encode the data and\n // calculate the offsets, then again to encode the offsets using the fitting data type.\n let offset = 1; // First offset is always 1.\n const offsets = [offset];\n const data = [];\n for (let i = 0; i < l.length; i += 1) {\n const v = encode.OBJECT(l[i]);\n Array.prototype.push.apply(data, v);\n offset += v.length;\n offsets.push(offset);\n }\n\n if (data.length === 0) {\n return [0, 0];\n }\n\n const encodedOffsets = [];\n const offSize = (1 + Math.floor(Math.log(offset) / Math.log(2)) / 8) | 0;\n const offsetEncoder = [undefined, encode.BYTE, encode.USHORT, encode.UINT24, encode.ULONG][offSize];\n for (let i = 0; i < offsets.length; i += 1) {\n const encodedOffset = offsetEncoder(offsets[i]);\n Array.prototype.push.apply(encodedOffsets, encodedOffset);\n }\n\n return Array.prototype.concat(encode.Card16(l.length),\n encode.OffSize(offSize),\n encodedOffsets,\n data);\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.INDEX = function(v) {\n return encode.INDEX(v).length;\n};\n\n/**\n * Convert an object to a CFF DICT structure.\n * The keys should be numeric.\n * The values should be objects containing name / type / value.\n * @param {Object} m\n * @returns {Array}\n */\nencode.DICT = function(m) {\n let d = [];\n const keys = Object.keys(m);\n const length = keys.length;\n\n for (let i = 0; i < length; i += 1) {\n // Object.keys() return string keys, but our keys are always numeric.\n const k = parseInt(keys[i], 0);\n const v = m[k];\n // Value comes before the key.\n d = d.concat(encode.OPERAND(v.value, v.type));\n d = d.concat(encode.OPERATOR(k));\n }\n\n return d;\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.DICT = function(m) {\n return encode.DICT(m).length;\n};\n\n/**\n * @param {number}\n * @returns {Array}\n */\nencode.OPERATOR = function(v) {\n if (v < 1200) {\n return [v];\n } else {\n return [12, v - 1200];\n }\n};\n\n/**\n * @param {Array} v\n * @param {string}\n * @returns {Array}\n */\nencode.OPERAND = function(v, type) {\n let d = [];\n if (Array.isArray(type)) {\n for (let i = 0; i < type.length; i += 1) {\n check.argument(v.length === type.length, 'Not enough arguments given for type' + type);\n d = d.concat(encode.OPERAND(v[i], type[i]));\n }\n } else {\n if (type === 'SID') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'offset') {\n // We make it easy for ourselves and always encode offsets as\n // 4 bytes. This makes offset calculation for the top dict easier.\n d = d.concat(encode.NUMBER32(v));\n } else if (type === 'number') {\n d = d.concat(encode.NUMBER(v));\n } else if (type === 'real') {\n d = d.concat(encode.REAL(v));\n } else {\n throw new Error('Unknown operand type ' + type);\n // FIXME Add support for booleans\n }\n }\n\n return d;\n};\n\nencode.OP = encode.BYTE;\nsizeOf.OP = sizeOf.BYTE;\n\n// memoize charstring encoding using WeakMap if available\nconst wmm = typeof WeakMap === 'function' && new WeakMap();\n\n/**\n * Convert a list of CharString operations to bytes.\n * @param {Array}\n * @returns {Array}\n */\nencode.CHARSTRING = function(ops) {\n // See encode.MACSTRING for why we don't do \"if (wmm && wmm.has(ops))\".\n if (wmm) {\n const cachedValue = wmm.get(ops);\n if (cachedValue !== undefined) {\n return cachedValue;\n }\n }\n\n let d = [];\n const length = ops.length;\n\n for (let i = 0; i < length; i += 1) {\n const op = ops[i];\n d = d.concat(encode[op.type](op.value));\n }\n\n if (wmm) {\n wmm.set(ops, d);\n }\n\n return d;\n};\n\n/**\n * @param {Array}\n * @returns {number}\n */\nsizeOf.CHARSTRING = function(ops) {\n return encode.CHARSTRING(ops).length;\n};\n\n// Utility functions ////////////////////////////////////////////////////////\n\n/**\n * Convert an object containing name / type / value to bytes.\n * @param {Object}\n * @returns {Array}\n */\nencode.OBJECT = function(v) {\n const encodingFunction = encode[v.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for type ' + v.type);\n return encodingFunction(v.value);\n};\n\n/**\n * @param {Object}\n * @returns {number}\n */\nsizeOf.OBJECT = function(v) {\n const sizeOfFunction = sizeOf[v.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for type ' + v.type);\n return sizeOfFunction(v.value);\n};\n\n/**\n * Convert a table object to bytes.\n * A table contains a list of fields containing the metadata (name, type and default value).\n * The table itself has the field values set as attributes.\n * @param {opentype.Table}\n * @returns {Array}\n */\nencode.TABLE = function(table) {\n let d = [];\n const length = table.fields.length;\n const subtables = [];\n const subtableOffsets = [];\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const encodingFunction = encode[field.type];\n check.argument(encodingFunction !== undefined, 'No encoding function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n const bytes = encodingFunction(value);\n\n if (field.type === 'TABLE') {\n subtableOffsets.push(d.length);\n d = d.concat([0, 0]);\n subtables.push(bytes);\n } else {\n d = d.concat(bytes);\n }\n }\n\n for (let i = 0; i < subtables.length; i += 1) {\n const o = subtableOffsets[i];\n const offset = d.length;\n check.argument(offset < 65536, 'Table ' + table.tableName + ' too big.');\n d[o] = offset >> 8;\n d[o + 1] = offset & 0xff;\n d = d.concat(subtables[i]);\n }\n\n return d;\n};\n\n/**\n * @param {opentype.Table}\n * @returns {number}\n */\nsizeOf.TABLE = function(table) {\n let numBytes = 0;\n const length = table.fields.length;\n\n for (let i = 0; i < length; i += 1) {\n const field = table.fields[i];\n const sizeOfFunction = sizeOf[field.type];\n check.argument(sizeOfFunction !== undefined, 'No sizeOf function for field type ' + field.type + ' (' + field.name + ')');\n let value = table[field.name];\n if (value === undefined) {\n value = field.value;\n }\n\n numBytes += sizeOfFunction(value);\n\n // Subtables take 2 more bytes for offsets.\n if (field.type === 'TABLE') {\n numBytes += 2;\n }\n }\n\n return numBytes;\n};\n\nencode.RECORD = encode.TABLE;\nsizeOf.RECORD = sizeOf.TABLE;\n\n// Merge in a list of bytes.\nencode.LITERAL = function(v) {\n return v;\n};\n\nsizeOf.LITERAL = function(v) {\n return v.length;\n};\n\nexport { decode, encode, sizeOf };\n","// The `GPOS` table contains kerning pairs, among other things.\n// https://www.microsoft.com/typography/OTSPEC/gpos.htm\n\nimport check from '../check';\nimport { decode } from '../types';\nimport parse from '../parse';\n\n// Parse the metadata `meta` table.\n// https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6meta.html\nfunction parseMetaTable(data, start) {\n const p = new parse.Parser(data, start);\n const tableVersion = p.parseULong();\n check.argument(tableVersion === 1, 'Unsupported META table version.');\n p.parseULong(); // flags - currently unused and set to 0\n p.parseULong(); // tableOffset\n const numDataMaps = p.parseULong();\n\n const tags = {};\n for (let i = 0; i < numDataMaps; i++) {\n const tag = p.parseTag();\n const dataOffset = p.parseULong();\n const dataLength = p.parseULong();\n const text = decode.UTF8(data, start + dataOffset, dataLength);\n\n tags[tag] = text;\n }\n return tags;\n}\n\nexport default { parse: parseMetaTable };\n","// opentype.js\n// https://github.com/opentypejs/opentype.js\n// (c) 2015 Frederik De Bleser\n// opentype.js may be freely distributed under the MIT license.\n\n/* global DataView, Uint8Array */\n\nimport { inflateSync } from 'fflate';\nimport Font from './font';\nimport Glyph from './glyph';\nimport { CmapEncoding, addGlyphNames } from './encoding';\nimport parse from './parse';\nimport Path from './path';\nimport cmap from './tables/cmap';\nimport cff from './tables/cff';\nimport fvar from './tables/fvar';\nimport glyf from './tables/glyf';\nimport gdef from './tables/gdef';\nimport gpos from './tables/gpos';\nimport gsub from './tables/gsub';\nimport head from './tables/head';\nimport hhea from './tables/hhea';\nimport hmtx from './tables/hmtx';\nimport kern from './tables/kern';\nimport ltag from './tables/ltag';\nimport loca from './tables/loca';\nimport maxp from './tables/maxp';\nimport os2 from './tables/os2';\nimport post from './tables/post';\nimport meta from './tables/meta';\n\n/**\n * The opentype library.\n * @namespace opentype\n */\n\n// Table Directory Entries //////////////////////////////////////////////\n/**\n * Parses OpenType table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseOpenTypeTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 12;\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const checksum = parse.getULong(data, p + 4);\n const offset = parse.getULong(data, p + 8);\n const length = parse.getULong(data, p + 12);\n tableEntries.push({\n tag: tag,\n checksum: checksum,\n offset: offset,\n length: length,\n compression: false,\n });\n p += 16;\n }\n\n return tableEntries;\n}\n\n/**\n * Parses WOFF table entries.\n * @param {DataView}\n * @param {Number}\n * @return {Object[]}\n */\nfunction parseWOFFTableEntries(data, numTables) {\n const tableEntries = [];\n let p = 44; // offset to the first table directory entry.\n for (let i = 0; i < numTables; i += 1) {\n const tag = parse.getTag(data, p);\n const offset = parse.getULong(data, p + 4);\n const compLength = parse.getULong(data, p + 8);\n const origLength = parse.getULong(data, p + 12);\n let compression;\n if (compLength < origLength) {\n compression = 'WOFF';\n } else {\n compression = false;\n }\n\n tableEntries.push({\n tag: tag,\n offset: offset,\n compression: compression,\n compressedLength: compLength,\n length: origLength,\n });\n p += 20;\n }\n\n return tableEntries;\n}\n\n/**\n * @typedef TableData\n * @type Object\n * @property {DataView} data - The DataView\n * @property {number} offset - The data offset.\n */\n\n/**\n * @param {DataView}\n * @param {Object}\n * @return {TableData}\n */\nfunction uncompressTable(data, tableEntry) {\n if (tableEntry.compression === 'WOFF') {\n const inBuffer = new Uint8Array(\n data.buffer,\n tableEntry.offset + 2,\n tableEntry.compressedLength - 2\n );\n const outBuffer = new Uint8Array(tableEntry.length);\n inflateSync(inBuffer, outBuffer);\n if (outBuffer.byteLength !== tableEntry.length) {\n throw new Error(\n 'Decompression error: ' +\n tableEntry.tag +\n ` decompressed length doesn't match recorded length`\n );\n }\n\n const view = new DataView(outBuffer.buffer, 0);\n return { data: view, offset: 0 };\n } else {\n return { data: data, offset: tableEntry.offset };\n }\n}\n\n// Public API ///////////////////////////////////////////////////////////\n\n/**\n * Parse the OpenType file data (as an ArrayBuffer) and return a Font object.\n * Throws an error if the font could not be parsed.\n * @param {ArrayBuffer}\n * @param {Object} opt - options for parsing\n * @return {opentype.Font}\n */\nfunction parseBuffer(buffer, opt) {\n opt = opt === undefined || opt === null ? {} : opt;\n\n let indexToLocFormat;\n\n // Since the constructor can also be called to create new fonts from scratch, we indicate this\n // should be an empty font that we'll fill with our own data.\n const font = new Font({ empty: true });\n\n // OpenType fonts use big endian byte ordering.\n // We can't rely on typed array view types, because they operate with the endianness of the host computer.\n // Instead we use DataViews where we can specify endianness.\n const data = new DataView(buffer, 0);\n let numTables;\n let tableEntries = [];\n const signature = parse.getTag(data, 0);\n if (\n signature === String.fromCharCode(0, 1, 0, 0) ||\n signature === 'true' ||\n signature === 'typ1'\n ) {\n font.outlinesFormat = 'truetype';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'OTTO') {\n font.outlinesFormat = 'cff';\n numTables = parse.getUShort(data, 4);\n tableEntries = parseOpenTypeTableEntries(data, numTables);\n } else if (signature === 'wOFF') {\n const flavor = parse.getTag(data, 4);\n if (flavor === String.fromCharCode(0, 1, 0, 0)) {\n font.outlinesFormat = 'truetype';\n } else if (flavor === 'OTTO') {\n font.outlinesFormat = 'cff';\n } else {\n throw new Error('Unsupported OpenType flavor ' + signature);\n }\n\n numTables = parse.getUShort(data, 12);\n tableEntries = parseWOFFTableEntries(data, numTables);\n } else {\n throw new Error('Unsupported OpenType signature ' + signature);\n }\n\n let cffTableEntry;\n let fvarTableEntry;\n let glyfTableEntry;\n let gdefTableEntry;\n let gposTableEntry;\n let gsubTableEntry;\n let hmtxTableEntry;\n let kernTableEntry;\n let locaTableEntry;\n let metaTableEntry;\n let p;\n\n for (let i = 0; i < numTables; i += 1) {\n const tableEntry = tableEntries[i];\n let table;\n switch (tableEntry.tag) {\n case 'cmap':\n table = uncompressTable(data, tableEntry);\n font.tables.cmap = cmap.parse(table.data, table.offset);\n font.encoding = new CmapEncoding(font.tables.cmap);\n break;\n case 'cvt ':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.cvt = p.parseShortList(tableEntry.length / 2);\n break;\n case 'fvar':\n fvarTableEntry = tableEntry;\n break;\n case 'fpgm':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.fpgm = p.parseByteList(tableEntry.length);\n break;\n case 'head':\n table = uncompressTable(data, tableEntry);\n font.tables.head = head.parse(table.data, table.offset);\n font.unitsPerEm = font.tables.head.unitsPerEm;\n indexToLocFormat = font.tables.head.indexToLocFormat;\n break;\n case 'hhea':\n table = uncompressTable(data, tableEntry);\n font.tables.hhea = hhea.parse(table.data, table.offset);\n font.ascender = font.tables.hhea.ascender;\n font.descender = font.tables.hhea.descender;\n font.numberOfHMetrics = font.tables.hhea.numberOfHMetrics;\n break;\n case 'hmtx':\n hmtxTableEntry = tableEntry;\n break;\n case 'ltag':\n table = uncompressTable(data, tableEntry);\n ltagTable = ltag.parse(table.data, table.offset);\n break;\n case 'maxp':\n table = uncompressTable(data, tableEntry);\n font.tables.maxp = maxp.parse(table.data, table.offset);\n font.numGlyphs = font.tables.maxp.numGlyphs;\n break;\n case 'OS/2':\n table = uncompressTable(data, tableEntry);\n font.tables.os2 = os2.parse(table.data, table.offset);\n break;\n case 'post':\n table = uncompressTable(data, tableEntry);\n font.tables.post = post.parse(table.data, table.offset);\n break;\n case 'prep':\n table = uncompressTable(data, tableEntry);\n p = new parse.Parser(table.data, table.offset);\n font.tables.prep = p.parseByteList(tableEntry.length);\n break;\n case 'glyf':\n glyfTableEntry = tableEntry;\n break;\n case 'loca':\n locaTableEntry = tableEntry;\n break;\n case 'CFF ':\n cffTableEntry = tableEntry;\n break;\n case 'kern':\n kernTableEntry = tableEntry;\n break;\n case 'GDEF':\n gdefTableEntry = tableEntry;\n break;\n case 'GPOS':\n gposTableEntry = tableEntry;\n break;\n case 'GSUB':\n gsubTableEntry = tableEntry;\n break;\n case 'meta':\n metaTableEntry = tableEntry;\n break;\n }\n }\n\n if (glyfTableEntry && locaTableEntry) {\n const shortVersion = indexToLocFormat === 0;\n const locaTable = uncompressTable(data, locaTableEntry);\n const locaOffsets = loca.parse(\n locaTable.data,\n locaTable.offset,\n font.numGlyphs,\n shortVersion\n );\n const glyfTable = uncompressTable(data, glyfTableEntry);\n font.glyphs = glyf.parse(\n glyfTable.data,\n glyfTable.offset,\n locaOffsets,\n font,\n opt\n );\n } else if (cffTableEntry) {\n const cffTable = uncompressTable(data, cffTableEntry);\n cff.parse(cffTable.data, cffTable.offset, font, opt);\n } else {\n throw new Error(`Font doesn't contain TrueType or CFF outlines.`);\n }\n\n const hmtxTable = uncompressTable(data, hmtxTableEntry);\n hmtx.parse(\n font,\n hmtxTable.data,\n hmtxTable.offset,\n font.numberOfHMetrics,\n font.numGlyphs,\n font.glyphs,\n opt\n );\n addGlyphNames(font, opt);\n\n if (kernTableEntry) {\n const kernTable = uncompressTable(data, kernTableEntry);\n font.kerningPairs = kern.parse(kernTable.data, kernTable.offset);\n } else {\n font.kerningPairs = {};\n }\n\n if (gdefTableEntry) {\n const gdefTable = uncompressTable(data, gdefTableEntry);\n font.tables.gdef = gdef.parse(gdefTable.data, gdefTable.offset);\n }\n\n if (gposTableEntry) {\n const gposTable = uncompressTable(data, gposTableEntry);\n font.tables.gpos = gpos.parse(gposTable.data, gposTable.offset);\n font.position.init();\n }\n\n if (gsubTableEntry) {\n const gsubTable = uncompressTable(data, gsubTableEntry);\n font.tables.gsub = gsub.parse(gsubTable.data, gsubTable.offset);\n }\n\n if (fvarTableEntry) {\n const fvarTable = uncompressTable(data, fvarTableEntry);\n font.tables.fvar = fvar.parse(\n fvarTable.data,\n fvarTable.offset,\n font.names\n );\n }\n\n if (metaTableEntry) {\n const metaTable = uncompressTable(data, metaTableEntry);\n font.tables.meta = meta.parse(metaTable.data, metaTable.offset);\n font.metas = font.tables.meta;\n }\n\n return font;\n}\n\nfunction load() {}\nfunction loadSync() {}\n\nexport {\n Font,\n Glyph,\n Path,\n parse as _parse,\n parseBuffer as parse,\n load,\n loadSync,\n};\n","export async function getYogaModule() {\n const { default: initYoga } = await import('yoga-wasm-web/asm')\n return initYoga()\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(value) {\n value = `${value}`;\n if (value === \"0\") {\n return \"0\";\n }\n // Flip sign of numbers\n if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n }\n if (value.includes(\"var(\") || value.includes(\"calc(\")) {\n return `calc(${value} * -1)`;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _default = [\n \"preflight\",\n \"container\",\n \"accessibility\",\n \"pointerEvents\",\n \"visibility\",\n \"position\",\n \"inset\",\n \"isolation\",\n \"zIndex\",\n \"order\",\n \"gridColumn\",\n \"gridColumnStart\",\n \"gridColumnEnd\",\n \"gridRow\",\n \"gridRowStart\",\n \"gridRowEnd\",\n \"float\",\n \"clear\",\n \"margin\",\n \"boxSizing\",\n \"display\",\n \"aspectRatio\",\n \"height\",\n \"maxHeight\",\n \"minHeight\",\n \"width\",\n \"minWidth\",\n \"maxWidth\",\n \"flex\",\n \"flexShrink\",\n \"flexGrow\",\n \"flexBasis\",\n \"tableLayout\",\n \"borderCollapse\",\n \"borderSpacing\",\n \"transformOrigin\",\n \"translate\",\n \"rotate\",\n \"skew\",\n \"scale\",\n \"transform\",\n \"animation\",\n \"cursor\",\n \"touchAction\",\n \"userSelect\",\n \"resize\",\n \"scrollSnapType\",\n \"scrollSnapAlign\",\n \"scrollSnapStop\",\n \"scrollMargin\",\n \"scrollPadding\",\n \"listStylePosition\",\n \"listStyleType\",\n \"appearance\",\n \"columns\",\n \"breakBefore\",\n \"breakInside\",\n \"breakAfter\",\n \"gridAutoColumns\",\n \"gridAutoFlow\",\n \"gridAutoRows\",\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"flexDirection\",\n \"flexWrap\",\n \"placeContent\",\n \"placeItems\",\n \"alignContent\",\n \"alignItems\",\n \"justifyContent\",\n \"justifyItems\",\n \"gap\",\n \"space\",\n \"divideWidth\",\n \"divideStyle\",\n \"divideColor\",\n \"divideOpacity\",\n \"placeSelf\",\n \"alignSelf\",\n \"justifySelf\",\n \"overflow\",\n \"overscrollBehavior\",\n \"scrollBehavior\",\n \"textOverflow\",\n \"whitespace\",\n \"wordBreak\",\n \"borderRadius\",\n \"borderWidth\",\n \"borderStyle\",\n \"borderColor\",\n \"borderOpacity\",\n \"backgroundColor\",\n \"backgroundOpacity\",\n \"backgroundImage\",\n \"gradientColorStops\",\n \"boxDecorationBreak\",\n \"backgroundSize\",\n \"backgroundAttachment\",\n \"backgroundClip\",\n \"backgroundPosition\",\n \"backgroundRepeat\",\n \"backgroundOrigin\",\n \"fill\",\n \"stroke\",\n \"strokeWidth\",\n \"objectFit\",\n \"objectPosition\",\n \"padding\",\n \"textAlign\",\n \"textIndent\",\n \"verticalAlign\",\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"textTransform\",\n \"fontStyle\",\n \"fontVariantNumeric\",\n \"lineHeight\",\n \"letterSpacing\",\n \"textColor\",\n \"textOpacity\",\n \"textDecoration\",\n \"textDecorationColor\",\n \"textDecorationStyle\",\n \"textDecorationThickness\",\n \"textUnderlineOffset\",\n \"fontSmoothing\",\n \"placeholderColor\",\n \"placeholderOpacity\",\n \"caretColor\",\n \"accentColor\",\n \"opacity\",\n \"backgroundBlendMode\",\n \"mixBlendMode\",\n \"boxShadow\",\n \"boxShadowColor\",\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineOffset\",\n \"outlineColor\",\n \"ringWidth\",\n \"ringColor\",\n \"ringOpacity\",\n \"ringOffsetWidth\",\n \"ringOffsetColor\",\n \"blur\",\n \"brightness\",\n \"contrast\",\n \"dropShadow\",\n \"grayscale\",\n \"hueRotate\",\n \"invert\",\n \"saturate\",\n \"sepia\",\n \"filter\",\n \"backdropBlur\",\n \"backdropBrightness\",\n \"backdropContrast\",\n \"backdropGrayscale\",\n \"backdropHueRotate\",\n \"backdropInvert\",\n \"backdropOpacity\",\n \"backdropSaturate\",\n \"backdropSepia\",\n \"backdropFilter\",\n \"transitionProperty\",\n \"transitionDelay\",\n \"transitionDuration\",\n \"transitionTimingFunction\",\n \"willChange\",\n \"content\"\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nfunction _default(pluginConfig, plugins) {\n if (pluginConfig === undefined) {\n return plugins;\n }\n const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n ...new Set(plugins.filter((pluginName)=>{\n return pluginConfig !== false && pluginConfig[pluginName] !== false;\n }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n return pluginConfig[pluginName] !== false;\n }))), \n ];\n return pluginNames;\n}\n","/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n content: [],\n presets: [],\n darkMode: 'media', // or 'class'\n theme: {\n screens: {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n },\n colors: ({ colors }) => ({\n inherit: colors.inherit,\n current: colors.current,\n transparent: colors.transparent,\n black: colors.black,\n white: colors.white,\n slate: colors.slate,\n gray: colors.gray,\n zinc: colors.zinc,\n neutral: colors.neutral,\n stone: colors.stone,\n red: colors.red,\n orange: colors.orange,\n amber: colors.amber,\n yellow: colors.yellow,\n lime: colors.lime,\n green: colors.green,\n emerald: colors.emerald,\n teal: colors.teal,\n cyan: colors.cyan,\n sky: colors.sky,\n blue: colors.blue,\n indigo: colors.indigo,\n violet: colors.violet,\n purple: colors.purple,\n fuchsia: colors.fuchsia,\n pink: colors.pink,\n rose: colors.rose,\n }),\n columns: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n '3xs': '16rem',\n '2xs': '18rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n },\n spacing: {\n px: '1px',\n 0: '0px',\n 0.5: '0.125rem',\n 1: '0.25rem',\n 1.5: '0.375rem',\n 2: '0.5rem',\n 2.5: '0.625rem',\n 3: '0.75rem',\n 3.5: '0.875rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n 11: '2.75rem',\n 12: '3rem',\n 14: '3.5rem',\n 16: '4rem',\n 20: '5rem',\n 24: '6rem',\n 28: '7rem',\n 32: '8rem',\n 36: '9rem',\n 40: '10rem',\n 44: '11rem',\n 48: '12rem',\n 52: '13rem',\n 56: '14rem',\n 60: '15rem',\n 64: '16rem',\n 72: '18rem',\n 80: '20rem',\n 96: '24rem',\n },\n animation: {\n none: 'none',\n spin: 'spin 1s linear infinite',\n ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n bounce: 'bounce 1s infinite',\n },\n aspectRatio: {\n auto: 'auto',\n square: '1 / 1',\n video: '16 / 9',\n },\n backdropBlur: ({ theme }) => theme('blur'),\n backdropBrightness: ({ theme }) => theme('brightness'),\n backdropContrast: ({ theme }) => theme('contrast'),\n backdropGrayscale: ({ theme }) => theme('grayscale'),\n backdropHueRotate: ({ theme }) => theme('hueRotate'),\n backdropInvert: ({ theme }) => theme('invert'),\n backdropOpacity: ({ theme }) => theme('opacity'),\n backdropSaturate: ({ theme }) => theme('saturate'),\n backdropSepia: ({ theme }) => theme('sepia'),\n backgroundColor: ({ theme }) => theme('colors'),\n backgroundImage: {\n none: 'none',\n 'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n 'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n 'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n 'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n 'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n 'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n 'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n 'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n },\n backgroundOpacity: ({ theme }) => theme('opacity'),\n backgroundPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n backgroundSize: {\n auto: 'auto',\n cover: 'cover',\n contain: 'contain',\n },\n blur: {\n 0: '0',\n none: '0',\n sm: '4px',\n DEFAULT: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n '2xl': '40px',\n '3xl': '64px',\n },\n brightness: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n borderColor: ({ theme }) => ({\n ...theme('colors'),\n DEFAULT: theme('colors.gray.200', 'currentColor'),\n }),\n borderOpacity: ({ theme }) => theme('opacity'),\n borderRadius: {\n none: '0px',\n sm: '0.125rem',\n DEFAULT: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n borderSpacing: ({ theme }) => ({\n ...theme('spacing'),\n }),\n borderWidth: {\n DEFAULT: '1px',\n 0: '0px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n boxShadow: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n none: 'none',\n },\n boxShadowColor: ({ theme }) => theme('colors'),\n caretColor: ({ theme }) => theme('colors'),\n accentColor: ({ theme }) => ({\n ...theme('colors'),\n auto: 'auto',\n }),\n contrast: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 100: '1',\n 125: '1.25',\n 150: '1.5',\n 200: '2',\n },\n container: {},\n content: {\n none: 'none',\n },\n cursor: {\n auto: 'auto',\n default: 'default',\n pointer: 'pointer',\n wait: 'wait',\n text: 'text',\n move: 'move',\n help: 'help',\n 'not-allowed': 'not-allowed',\n none: 'none',\n 'context-menu': 'context-menu',\n progress: 'progress',\n cell: 'cell',\n crosshair: 'crosshair',\n 'vertical-text': 'vertical-text',\n alias: 'alias',\n copy: 'copy',\n 'no-drop': 'no-drop',\n grab: 'grab',\n grabbing: 'grabbing',\n 'all-scroll': 'all-scroll',\n 'col-resize': 'col-resize',\n 'row-resize': 'row-resize',\n 'n-resize': 'n-resize',\n 'e-resize': 'e-resize',\n 's-resize': 's-resize',\n 'w-resize': 'w-resize',\n 'ne-resize': 'ne-resize',\n 'nw-resize': 'nw-resize',\n 'se-resize': 'se-resize',\n 'sw-resize': 'sw-resize',\n 'ew-resize': 'ew-resize',\n 'ns-resize': 'ns-resize',\n 'nesw-resize': 'nesw-resize',\n 'nwse-resize': 'nwse-resize',\n 'zoom-in': 'zoom-in',\n 'zoom-out': 'zoom-out',\n },\n divideColor: ({ theme }) => theme('borderColor'),\n divideOpacity: ({ theme }) => theme('borderOpacity'),\n divideWidth: ({ theme }) => theme('borderWidth'),\n dropShadow: {\n sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n none: '0 0 #0000',\n },\n fill: ({ theme }) => theme('colors'),\n grayscale: {\n 0: '0',\n DEFAULT: '100%',\n },\n hueRotate: {\n 0: '0deg',\n 15: '15deg',\n 30: '30deg',\n 60: '60deg',\n 90: '90deg',\n 180: '180deg',\n },\n invert: {\n 0: '0',\n DEFAULT: '100%',\n },\n flex: {\n 1: '1 1 0%',\n auto: '1 1 auto',\n initial: '0 1 auto',\n none: 'none',\n },\n flexBasis: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n }),\n flexGrow: {\n 0: '0',\n DEFAULT: '1',\n },\n flexShrink: {\n 0: '0',\n DEFAULT: '1',\n },\n fontFamily: {\n sans: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n mono: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n fontSize: {\n xs: ['0.75rem', { lineHeight: '1rem' }],\n sm: ['0.875rem', { lineHeight: '1.25rem' }],\n base: ['1rem', { lineHeight: '1.5rem' }],\n lg: ['1.125rem', { lineHeight: '1.75rem' }],\n xl: ['1.25rem', { lineHeight: '1.75rem' }],\n '2xl': ['1.5rem', { lineHeight: '2rem' }],\n '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n '5xl': ['3rem', { lineHeight: '1' }],\n '6xl': ['3.75rem', { lineHeight: '1' }],\n '7xl': ['4.5rem', { lineHeight: '1' }],\n '8xl': ['6rem', { lineHeight: '1' }],\n '9xl': ['8rem', { lineHeight: '1' }],\n },\n fontWeight: {\n thin: '100',\n extralight: '200',\n light: '300',\n normal: '400',\n medium: '500',\n semibold: '600',\n bold: '700',\n extrabold: '800',\n black: '900',\n },\n gap: ({ theme }) => theme('spacing'),\n gradientColorStops: ({ theme }) => theme('colors'),\n gridAutoColumns: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridAutoRows: {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n },\n gridColumn: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-7': 'span 7 / span 7',\n 'span-8': 'span 8 / span 8',\n 'span-9': 'span 9 / span 9',\n 'span-10': 'span 10 / span 10',\n 'span-11': 'span 11 / span 11',\n 'span-12': 'span 12 / span 12',\n 'span-full': '1 / -1',\n },\n gridColumnEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridColumnStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n 13: '13',\n },\n gridRow: {\n auto: 'auto',\n 'span-1': 'span 1 / span 1',\n 'span-2': 'span 2 / span 2',\n 'span-3': 'span 3 / span 3',\n 'span-4': 'span 4 / span 4',\n 'span-5': 'span 5 / span 5',\n 'span-6': 'span 6 / span 6',\n 'span-full': '1 / -1',\n },\n gridRowStart: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridRowEnd: {\n auto: 'auto',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n },\n gridTemplateColumns: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n 7: 'repeat(7, minmax(0, 1fr))',\n 8: 'repeat(8, minmax(0, 1fr))',\n 9: 'repeat(9, minmax(0, 1fr))',\n 10: 'repeat(10, minmax(0, 1fr))',\n 11: 'repeat(11, minmax(0, 1fr))',\n 12: 'repeat(12, minmax(0, 1fr))',\n },\n gridTemplateRows: {\n none: 'none',\n 1: 'repeat(1, minmax(0, 1fr))',\n 2: 'repeat(2, minmax(0, 1fr))',\n 3: 'repeat(3, minmax(0, 1fr))',\n 4: 'repeat(4, minmax(0, 1fr))',\n 5: 'repeat(5, minmax(0, 1fr))',\n 6: 'repeat(6, minmax(0, 1fr))',\n },\n height: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n inset: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n keyframes: {\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n ping: {\n '75%, 100%': {\n transform: 'scale(2)',\n opacity: '0',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n bounce: {\n '0%, 100%': {\n transform: 'translateY(-25%)',\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n },\n '50%': {\n transform: 'none',\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n },\n },\n },\n letterSpacing: {\n tighter: '-0.05em',\n tight: '-0.025em',\n normal: '0em',\n wide: '0.025em',\n wider: '0.05em',\n widest: '0.1em',\n },\n lineHeight: {\n none: '1',\n tight: '1.25',\n snug: '1.375',\n normal: '1.5',\n relaxed: '1.625',\n loose: '2',\n 3: '.75rem',\n 4: '1rem',\n 5: '1.25rem',\n 6: '1.5rem',\n 7: '1.75rem',\n 8: '2rem',\n 9: '2.25rem',\n 10: '2.5rem',\n },\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n },\n margin: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n }),\n maxHeight: ({ theme }) => ({\n ...theme('spacing'),\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n maxWidth: ({ theme, breakpoints }) => ({\n none: 'none',\n 0: '0rem',\n xs: '20rem',\n sm: '24rem',\n md: '28rem',\n lg: '32rem',\n xl: '36rem',\n '2xl': '42rem',\n '3xl': '48rem',\n '4xl': '56rem',\n '5xl': '64rem',\n '6xl': '72rem',\n '7xl': '80rem',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n prose: '65ch',\n ...breakpoints(theme('screens')),\n }),\n minHeight: {\n 0: '0px',\n full: '100%',\n screen: '100vh',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n minWidth: {\n 0: '0px',\n full: '100%',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n },\n objectPosition: {\n bottom: 'bottom',\n center: 'center',\n left: 'left',\n 'left-bottom': 'left bottom',\n 'left-top': 'left top',\n right: 'right',\n 'right-bottom': 'right bottom',\n 'right-top': 'right top',\n top: 'top',\n },\n opacity: {\n 0: '0',\n 5: '0.05',\n 10: '0.1',\n 20: '0.2',\n 25: '0.25',\n 30: '0.3',\n 40: '0.4',\n 50: '0.5',\n 60: '0.6',\n 70: '0.7',\n 75: '0.75',\n 80: '0.8',\n 90: '0.9',\n 95: '0.95',\n 100: '1',\n },\n order: {\n first: '-9999',\n last: '9999',\n none: '0',\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 10: '10',\n 11: '11',\n 12: '12',\n },\n padding: ({ theme }) => theme('spacing'),\n placeholderColor: ({ theme }) => theme('colors'),\n placeholderOpacity: ({ theme }) => theme('opacity'),\n outlineColor: ({ theme }) => theme('colors'),\n outlineOffset: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n outlineWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringColor: ({ theme }) => ({\n DEFAULT: theme(`colors.blue.500`, '#3b82f6'),\n ...theme('colors'),\n }),\n ringOffsetColor: ({ theme }) => theme('colors'),\n ringOffsetWidth: {\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n ringOpacity: ({ theme }) => ({\n DEFAULT: '0.5',\n ...theme('opacity'),\n }),\n ringWidth: {\n DEFAULT: '3px',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n rotate: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n 45: '45deg',\n 90: '90deg',\n 180: '180deg',\n },\n saturate: {\n 0: '0',\n 50: '.5',\n 100: '1',\n 150: '1.5',\n 200: '2',\n },\n scale: {\n 0: '0',\n 50: '.5',\n 75: '.75',\n 90: '.9',\n 95: '.95',\n 100: '1',\n 105: '1.05',\n 110: '1.1',\n 125: '1.25',\n 150: '1.5',\n },\n scrollMargin: ({ theme }) => ({\n ...theme('spacing'),\n }),\n scrollPadding: ({ theme }) => theme('spacing'),\n sepia: {\n 0: '0',\n DEFAULT: '100%',\n },\n skew: {\n 0: '0deg',\n 1: '1deg',\n 2: '2deg',\n 3: '3deg',\n 6: '6deg',\n 12: '12deg',\n },\n space: ({ theme }) => ({\n ...theme('spacing'),\n }),\n stroke: ({ theme }) => theme('colors'),\n strokeWidth: {\n 0: '0',\n 1: '1',\n 2: '2',\n },\n textColor: ({ theme }) => theme('colors'),\n textDecorationColor: ({ theme }) => theme('colors'),\n textDecorationThickness: {\n auto: 'auto',\n 'from-font': 'from-font',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textUnderlineOffset: {\n auto: 'auto',\n 0: '0px',\n 1: '1px',\n 2: '2px',\n 4: '4px',\n 8: '8px',\n },\n textIndent: ({ theme }) => ({\n ...theme('spacing'),\n }),\n textOpacity: ({ theme }) => theme('opacity'),\n transformOrigin: {\n center: 'center',\n top: 'top',\n 'top-right': 'top right',\n right: 'right',\n 'bottom-right': 'bottom right',\n bottom: 'bottom',\n 'bottom-left': 'bottom left',\n left: 'left',\n 'top-left': 'top left',\n },\n transitionDelay: {\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionDuration: {\n DEFAULT: '150ms',\n 75: '75ms',\n 100: '100ms',\n 150: '150ms',\n 200: '200ms',\n 300: '300ms',\n 500: '500ms',\n 700: '700ms',\n 1000: '1000ms',\n },\n transitionProperty: {\n none: 'none',\n all: 'all',\n DEFAULT:\n 'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n opacity: 'opacity',\n shadow: 'box-shadow',\n transform: 'transform',\n },\n transitionTimingFunction: {\n DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n linear: 'linear',\n in: 'cubic-bezier(0.4, 0, 1, 1)',\n out: 'cubic-bezier(0, 0, 0.2, 1)',\n 'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n },\n translate: ({ theme }) => ({\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n full: '100%',\n }),\n width: ({ theme }) => ({\n auto: 'auto',\n ...theme('spacing'),\n '1/2': '50%',\n '1/3': '33.333333%',\n '2/3': '66.666667%',\n '1/4': '25%',\n '2/4': '50%',\n '3/4': '75%',\n '1/5': '20%',\n '2/5': '40%',\n '3/5': '60%',\n '4/5': '80%',\n '1/6': '16.666667%',\n '2/6': '33.333333%',\n '3/6': '50%',\n '4/6': '66.666667%',\n '5/6': '83.333333%',\n '1/12': '8.333333%',\n '2/12': '16.666667%',\n '3/12': '25%',\n '4/12': '33.333333%',\n '5/12': '41.666667%',\n '6/12': '50%',\n '7/12': '58.333333%',\n '8/12': '66.666667%',\n '9/12': '75%',\n '10/12': '83.333333%',\n '11/12': '91.666667%',\n full: '100%',\n screen: '100vw',\n min: 'min-content',\n max: 'max-content',\n fit: 'fit-content',\n }),\n willChange: {\n auto: 'auto',\n scroll: 'scroll-position',\n contents: 'contents',\n transform: 'transform',\n },\n zIndex: {\n auto: 'auto',\n 0: '0',\n 10: '10',\n 20: '20',\n 30: '30',\n 40: '40',\n 50: '50',\n },\n },\n variantOrder: [\n 'first',\n 'last',\n 'odd',\n 'even',\n 'visited',\n 'checked',\n 'empty',\n 'read-only',\n 'group-hover',\n 'group-focus',\n 'focus-within',\n 'hover',\n 'focus',\n 'focus-visible',\n 'active',\n 'disabled',\n ],\n plugins: [],\n}\n","export default {\n info(key, messages) {\n console.info(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n warn(key, messages) {\n console.warn(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n risk(key, messages) {\n console.error(...(Array.isArray(key) ? [key] : [messages, key]))\n },\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>_default\n});\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"../util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction warn({ version , from , to }) {\n _log.default.warn(`${from}-color-renamed`, [\n `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n \"Update your configuration file to silence this warning.\", \n ]);\n}\nconst _default = {\n inherit: \"inherit\",\n current: \"currentColor\",\n transparent: \"transparent\",\n black: \"#000\",\n white: \"#fff\",\n slate: {\n 50: \"#f8fafc\",\n 100: \"#f1f5f9\",\n 200: \"#e2e8f0\",\n 300: \"#cbd5e1\",\n 400: \"#94a3b8\",\n 500: \"#64748b\",\n 600: \"#475569\",\n 700: \"#334155\",\n 800: \"#1e293b\",\n 900: \"#0f172a\"\n },\n gray: {\n 50: \"#f9fafb\",\n 100: \"#f3f4f6\",\n 200: \"#e5e7eb\",\n 300: \"#d1d5db\",\n 400: \"#9ca3af\",\n 500: \"#6b7280\",\n 600: \"#4b5563\",\n 700: \"#374151\",\n 800: \"#1f2937\",\n 900: \"#111827\"\n },\n zinc: {\n 50: \"#fafafa\",\n 100: \"#f4f4f5\",\n 200: \"#e4e4e7\",\n 300: \"#d4d4d8\",\n 400: \"#a1a1aa\",\n 500: \"#71717a\",\n 600: \"#52525b\",\n 700: \"#3f3f46\",\n 800: \"#27272a\",\n 900: \"#18181b\"\n },\n neutral: {\n 50: \"#fafafa\",\n 100: \"#f5f5f5\",\n 200: \"#e5e5e5\",\n 300: \"#d4d4d4\",\n 400: \"#a3a3a3\",\n 500: \"#737373\",\n 600: \"#525252\",\n 700: \"#404040\",\n 800: \"#262626\",\n 900: \"#171717\"\n },\n stone: {\n 50: \"#fafaf9\",\n 100: \"#f5f5f4\",\n 200: \"#e7e5e4\",\n 300: \"#d6d3d1\",\n 400: \"#a8a29e\",\n 500: \"#78716c\",\n 600: \"#57534e\",\n 700: \"#44403c\",\n 800: \"#292524\",\n 900: \"#1c1917\"\n },\n red: {\n 50: \"#fef2f2\",\n 100: \"#fee2e2\",\n 200: \"#fecaca\",\n 300: \"#fca5a5\",\n 400: \"#f87171\",\n 500: \"#ef4444\",\n 600: \"#dc2626\",\n 700: \"#b91c1c\",\n 800: \"#991b1b\",\n 900: \"#7f1d1d\"\n },\n orange: {\n 50: \"#fff7ed\",\n 100: \"#ffedd5\",\n 200: \"#fed7aa\",\n 300: \"#fdba74\",\n 400: \"#fb923c\",\n 500: \"#f97316\",\n 600: \"#ea580c\",\n 700: \"#c2410c\",\n 800: \"#9a3412\",\n 900: \"#7c2d12\"\n },\n amber: {\n 50: \"#fffbeb\",\n 100: \"#fef3c7\",\n 200: \"#fde68a\",\n 300: \"#fcd34d\",\n 400: \"#fbbf24\",\n 500: \"#f59e0b\",\n 600: \"#d97706\",\n 700: \"#b45309\",\n 800: \"#92400e\",\n 900: \"#78350f\"\n },\n yellow: {\n 50: \"#fefce8\",\n 100: \"#fef9c3\",\n 200: \"#fef08a\",\n 300: \"#fde047\",\n 400: \"#facc15\",\n 500: \"#eab308\",\n 600: \"#ca8a04\",\n 700: \"#a16207\",\n 800: \"#854d0e\",\n 900: \"#713f12\"\n },\n lime: {\n 50: \"#f7fee7\",\n 100: \"#ecfccb\",\n 200: \"#d9f99d\",\n 300: \"#bef264\",\n 400: \"#a3e635\",\n 500: \"#84cc16\",\n 600: \"#65a30d\",\n 700: \"#4d7c0f\",\n 800: \"#3f6212\",\n 900: \"#365314\"\n },\n green: {\n 50: \"#f0fdf4\",\n 100: \"#dcfce7\",\n 200: \"#bbf7d0\",\n 300: \"#86efac\",\n 400: \"#4ade80\",\n 500: \"#22c55e\",\n 600: \"#16a34a\",\n 700: \"#15803d\",\n 800: \"#166534\",\n 900: \"#14532d\"\n },\n emerald: {\n 50: \"#ecfdf5\",\n 100: \"#d1fae5\",\n 200: \"#a7f3d0\",\n 300: \"#6ee7b7\",\n 400: \"#34d399\",\n 500: \"#10b981\",\n 600: \"#059669\",\n 700: \"#047857\",\n 800: \"#065f46\",\n 900: \"#064e3b\"\n },\n teal: {\n 50: \"#f0fdfa\",\n 100: \"#ccfbf1\",\n 200: \"#99f6e4\",\n 300: \"#5eead4\",\n 400: \"#2dd4bf\",\n 500: \"#14b8a6\",\n 600: \"#0d9488\",\n 700: \"#0f766e\",\n 800: \"#115e59\",\n 900: \"#134e4a\"\n },\n cyan: {\n 50: \"#ecfeff\",\n 100: \"#cffafe\",\n 200: \"#a5f3fc\",\n 300: \"#67e8f9\",\n 400: \"#22d3ee\",\n 500: \"#06b6d4\",\n 600: \"#0891b2\",\n 700: \"#0e7490\",\n 800: \"#155e75\",\n 900: \"#164e63\"\n },\n sky: {\n 50: \"#f0f9ff\",\n 100: \"#e0f2fe\",\n 200: \"#bae6fd\",\n 300: \"#7dd3fc\",\n 400: \"#38bdf8\",\n 500: \"#0ea5e9\",\n 600: \"#0284c7\",\n 700: \"#0369a1\",\n 800: \"#075985\",\n 900: \"#0c4a6e\"\n },\n blue: {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 900: \"#1e3a8a\"\n },\n indigo: {\n 50: \"#eef2ff\",\n 100: \"#e0e7ff\",\n 200: \"#c7d2fe\",\n 300: \"#a5b4fc\",\n 400: \"#818cf8\",\n 500: \"#6366f1\",\n 600: \"#4f46e5\",\n 700: \"#4338ca\",\n 800: \"#3730a3\",\n 900: \"#312e81\"\n },\n violet: {\n 50: \"#f5f3ff\",\n 100: \"#ede9fe\",\n 200: \"#ddd6fe\",\n 300: \"#c4b5fd\",\n 400: \"#a78bfa\",\n 500: \"#8b5cf6\",\n 600: \"#7c3aed\",\n 700: \"#6d28d9\",\n 800: \"#5b21b6\",\n 900: \"#4c1d95\"\n },\n purple: {\n 50: \"#faf5ff\",\n 100: \"#f3e8ff\",\n 200: \"#e9d5ff\",\n 300: \"#d8b4fe\",\n 400: \"#c084fc\",\n 500: \"#a855f7\",\n 600: \"#9333ea\",\n 700: \"#7e22ce\",\n 800: \"#6b21a8\",\n 900: \"#581c87\"\n },\n fuchsia: {\n 50: \"#fdf4ff\",\n 100: \"#fae8ff\",\n 200: \"#f5d0fe\",\n 300: \"#f0abfc\",\n 400: \"#e879f9\",\n 500: \"#d946ef\",\n 600: \"#c026d3\",\n 700: \"#a21caf\",\n 800: \"#86198f\",\n 900: \"#701a75\"\n },\n pink: {\n 50: \"#fdf2f8\",\n 100: \"#fce7f3\",\n 200: \"#fbcfe8\",\n 300: \"#f9a8d4\",\n 400: \"#f472b6\",\n 500: \"#ec4899\",\n 600: \"#db2777\",\n 700: \"#be185d\",\n 800: \"#9d174d\",\n 900: \"#831843\"\n },\n rose: {\n 50: \"#fff1f2\",\n 100: \"#ffe4e6\",\n 200: \"#fecdd3\",\n 300: \"#fda4af\",\n 400: \"#fb7185\",\n 500: \"#f43f5e\",\n 600: \"#e11d48\",\n 700: \"#be123c\",\n 800: \"#9f1239\",\n 900: \"#881337\"\n },\n get lightBlue () {\n warn({\n version: \"v2.2\",\n from: \"lightBlue\",\n to: \"sky\"\n });\n return this.sky;\n },\n get warmGray () {\n warn({\n version: \"v3.0\",\n from: \"warmGray\",\n to: \"stone\"\n });\n return this.stone;\n },\n get trueGray () {\n warn({\n version: \"v3.0\",\n from: \"trueGray\",\n to: \"neutral\"\n });\n return this.neutral;\n },\n get coolGray () {\n warn({\n version: \"v3.0\",\n from: \"coolGray\",\n to: \"gray\"\n });\n return this.gray;\n },\n get blueGray () {\n warn({\n version: \"v3.0\",\n from: \"blueGray\",\n to: \"slate\"\n });\n return this.slate;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n enumerable: true,\n get: ()=>defaults\n});\nfunction defaults(target, ...sources) {\n for (let source of sources){\n for(let k in source){\n var ref;\n if (!(target === null || target === void 0 ? void 0 : (ref = target.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(target, k))) {\n target[k] = source[k];\n }\n }\n for (let k1 of Object.getOwnPropertySymbols(source)){\n var ref1;\n if (!(target === null || target === void 0 ? void 0 : (ref1 = target.hasOwnProperty) === null || ref1 === void 0 ? void 0 : ref1.call(target, k1))) {\n target[k1] = source[k1];\n }\n }\n }\n return target;\n}\n","/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n enumerable: true,\n get: ()=>toPath\n});\nfunction toPath(path) {\n if (Array.isArray(path)) return path;\n let openBrackets = path.split(\"[\").length - 1;\n let closedBrackets = path.split(\"]\").length - 1;\n if (openBrackets !== closedBrackets) {\n throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n }\n return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n enumerable: true,\n get: ()=>normalizeConfig\n});\nconst _log = /*#__PURE__*/ _interopRequireWildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction normalizeConfig(config) {\n // Quick structure validation\n /**\n * type FilePath = string\n * type RawFile = { raw: string, extension?: string }\n * type ExtractorFn = (content: string) => Array\n * type TransformerFn = (content: string) => string\n *\n * type Content =\n * | Array\n * | {\n * files: Array,\n * extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n * transform?: TransformerFn | { [extension: string]: TransformerFn }\n * }\n */ let valid = (()=>{\n // `config.purge` should not exist anymore\n if (config.purge) {\n return false;\n }\n // `config.content` should exist\n if (!config.content) {\n return false;\n }\n // `config.content` should be an object or an array\n if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n return false;\n }\n // When `config.content` is an array, it should consist of FilePaths or RawFiles\n if (Array.isArray(config.content)) {\n return config.content.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n });\n }\n // When `config.content` is an object\n if (typeof config.content === \"object\" && config.content !== null) {\n // Only `files`, `extract` and `transform` can exist in `config.content`\n if (Object.keys(config.content).some((key)=>![\n \"files\",\n \"extract\",\n \"transform\"\n ].includes(key))) {\n return false;\n }\n // `config.content.files` should exist of FilePaths or RawFiles\n if (Array.isArray(config.content.files)) {\n if (!config.content.files.every((path)=>{\n // `path` can be a string\n if (typeof path === \"string\") return true;\n // `path` can be an object { raw: string, extension?: string }\n // `raw` must be a string\n if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n // `extension` (if provided) should also be a string\n if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n return false;\n }\n return true;\n })) {\n return false;\n }\n // `config.content.extract` is optional, and can be a Function or a Record\n if (typeof config.content.extract === \"object\") {\n for (let value of Object.values(config.content.extract)){\n if (typeof value !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n return false;\n }\n // `config.content.transform` is optional, and can be a Function or a Record\n if (typeof config.content.transform === \"object\") {\n for (let value1 of Object.values(config.content.transform)){\n if (typeof value1 !== \"function\") {\n return false;\n }\n }\n } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n return false;\n }\n }\n return true;\n }\n return false;\n })();\n if (!valid) {\n _log.default.warn(\"purge-deprecation\", [\n \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n \"Update your configuration file to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\", \n ]);\n }\n // Normalize the `safelist`\n config.safelist = (()=>{\n var ref;\n let { content , purge , safelist } = config;\n if (Array.isArray(safelist)) return safelist;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : (ref = purge.options) === null || ref === void 0 ? void 0 : ref.safelist)) return purge.options.safelist;\n return [];\n })();\n // Normalize prefix option\n if (typeof config.prefix === \"function\") {\n _log.default.warn(\"prefix-function\", [\n \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\", \n ]);\n config.prefix = \"\";\n } else {\n var _prefix;\n config.prefix = (_prefix = config.prefix) !== null && _prefix !== void 0 ? _prefix : \"\";\n }\n // Normalize the `content`\n config.content = {\n files: (()=>{\n let { content , purge } = config;\n if (Array.isArray(purge)) return purge;\n if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n if (Array.isArray(content)) return content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n return [];\n })(),\n extract: (()=>{\n let extract = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.extract) return config.purge.extract;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.extract) return config.content.extract;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.extract) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.extract.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.extract) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.extract.DEFAULT;\n if ((ref6 = config.purge) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.options) === null || ref7 === void 0 ? void 0 : ref7.extractors) return config.purge.options.extractors;\n if ((ref8 = config.content) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.options) === null || ref9 === void 0 ? void 0 : ref9.extractors) return config.content.options.extractors;\n return {};\n })();\n let extractors = {};\n let defaultExtractor = (()=>{\n var ref, ref1, ref2, ref3;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : (ref1 = ref.options) === null || ref1 === void 0 ? void 0 : ref1.defaultExtractor) {\n return config.purge.options.defaultExtractor;\n }\n if ((ref2 = config.content) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.options) === null || ref3 === void 0 ? void 0 : ref3.defaultExtractor) {\n return config.content.options.defaultExtractor;\n }\n return undefined;\n })();\n if (defaultExtractor !== undefined) {\n extractors.DEFAULT = defaultExtractor;\n }\n // Functions\n if (typeof extract === \"function\") {\n extractors.DEFAULT = extract;\n } else if (Array.isArray(extract)) {\n for (let { extensions , extractor } of extract !== null && extract !== void 0 ? extract : []){\n for (let extension of extensions){\n extractors[extension] = extractor;\n }\n }\n } else if (typeof extract === \"object\" && extract !== null) {\n Object.assign(extractors, extract);\n }\n return extractors;\n })(),\n transform: (()=>{\n let transform = (()=>{\n var ref, ref1, ref2, ref3, ref4, ref5;\n if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.transform) return config.purge.transform;\n if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.transform) return config.content.transform;\n if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.transform) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.transform.DEFAULT;\n if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.transform) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.transform.DEFAULT;\n return {};\n })();\n let transformers = {};\n if (typeof transform === \"function\") {\n transformers.DEFAULT = transform;\n }\n if (typeof transform === \"object\" && transform !== null) {\n Object.assign(transformers, transform);\n }\n return transformers;\n })()\n };\n // Validate globs to prevent bogus globs.\n // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n for (let file of config.content.files){\n if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n _log.default.warn(\"invalid-glob-braces\", [\n `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n ]);\n break;\n }\n }\n return config;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>isPlainObject\n});\nfunction isPlainObject(value) {\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n enumerable: true,\n get: ()=>cloneDeep\n});\nfunction cloneDeep(value) {\n if (Array.isArray(value)) {\n return value.map((child)=>cloneDeep(child));\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n k,\n cloneDeep(v)\n ]));\n }\n return value;\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n var lower = str.toLowerCase();\n var hex = '';\n var spaceTerminated = false;\n\n for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n spaceTerminated = code === 32;\n\n if (!valid) {\n break;\n }\n\n hex += lower[i];\n }\n\n if (hex.length === 0) {\n return undefined;\n }\n\n var codePoint = parseInt(hex, 16);\n var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n }\n\n return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n var needToProcess = CONTAINS_ESCAPE.test(str);\n\n if (!needToProcess) {\n return str;\n }\n\n var ret = \"\";\n\n for (var i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n if (gobbled !== undefined) {\n ret += gobbled[0];\n i += gobbled[1];\n continue;\n } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n if (str[i + 1] === \"\\\\\") {\n ret += \"\\\\\";\n i++;\n continue;\n } // if \\\\ is at the end of the string retain it\n // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n if (str.length === i + 1) {\n ret += str[i];\n }\n\n continue;\n }\n\n ret += str[i];\n }\n\n return ret;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n return undefined;\n }\n\n obj = obj[prop];\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n props[_key - 1] = arguments[_key];\n }\n\n while (props.length > 0) {\n var prop = props.shift();\n\n if (!obj[prop]) {\n obj[prop] = {};\n }\n\n obj = obj[prop];\n }\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n var s = \"\";\n var commentStart = str.indexOf(\"/*\");\n var lastEnd = 0;\n\n while (commentStart >= 0) {\n s = s + str.slice(lastEnd, commentStart);\n var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n if (commentEnd < 0) {\n return s;\n }\n\n lastEnd = commentEnd + 2;\n commentStart = str.indexOf(\"/*\", lastEnd);\n }\n\n s = s + str.slice(lastEnd);\n return s;\n}\n\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar cloneNode = function cloneNode(obj, parent) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) {\n continue;\n }\n\n var value = obj[i];\n var type = typeof value;\n\n if (i === 'parent' && type === 'object') {\n if (parent) {\n cloned[i] = parent;\n }\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n cloned[i] = cloneNode(value, cloned);\n }\n }\n\n return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n function Node(opts) {\n if (opts === void 0) {\n opts = {};\n }\n\n Object.assign(this, opts);\n this.spaces = this.spaces || {};\n this.spaces.before = this.spaces.before || '';\n this.spaces.after = this.spaces.after || '';\n }\n\n var _proto = Node.prototype;\n\n _proto.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n\n this.parent = undefined;\n return this;\n };\n\n _proto.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var index in arguments) {\n this.parent.insertBefore(this, arguments[index]);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n _proto.next = function next() {\n return this.parent.at(this.parent.index(this) + 1);\n };\n\n _proto.prev = function prev() {\n return this.parent.at(this.parent.index(this) - 1);\n };\n\n _proto.clone = function clone(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n var cloned = cloneNode(this);\n\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n\n return cloned;\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows non standard syntax to be appended to an existing property\n * by specifying the escaped value. By specifying the escaped value,\n * illegal characters are allowed to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped optional. the escaped value of the property.\n */\n ;\n\n _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n var originalValue = this[name];\n var originalEscaped = this.raws[name];\n this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (originalEscaped || valueEscaped !== value) {\n this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n } else {\n delete this.raws[name]; // delete any escaped value that was created by the setter.\n }\n }\n /**\n * Some non-standard syntax doesn't follow normal escaping rules for css.\n * This allows the escaped value to be specified directly, allowing illegal\n * characters to be directly inserted into css output.\n * @param {string} name the property to set\n * @param {any} value the unescaped value of the property\n * @param {string} valueEscaped the escaped value of the property.\n */\n ;\n\n _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n if (!this.raws) {\n this.raws = {};\n }\n\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n this.raws[name] = valueEscaped;\n }\n /**\n * When you want a value to passed through to CSS directly. This method\n * deletes the corresponding raw value causing the stringifier to fallback\n * to the unescaped value.\n * @param {string} name the property to set.\n * @param {any} value The value that is both escaped and unescaped.\n */\n ;\n\n _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n if (this.raws) {\n delete this.raws[name];\n }\n }\n /**\n *\n * @param {number} line The number (starting with 1)\n * @param {number} column The column number (starting with 1)\n */\n ;\n\n _proto.isAtPosition = function isAtPosition(line, column) {\n if (this.source && this.source.start && this.source.end) {\n if (this.source.start.line > line) {\n return false;\n }\n\n if (this.source.end.line < line) {\n return false;\n }\n\n if (this.source.start.line === line && this.source.start.column > column) {\n return false;\n }\n\n if (this.source.end.line === line && this.source.end.column < column) {\n return false;\n }\n\n return true;\n }\n\n return undefined;\n };\n\n _proto.stringifyProperty = function stringifyProperty(name) {\n return this.raws && this.raws[name] || this[name];\n };\n\n _proto.valueToString = function valueToString() {\n return String(this.stringifyProperty(\"value\"));\n };\n\n _proto.toString = function toString() {\n return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n };\n\n _createClass(Node, [{\n key: \"rawSpaceBefore\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces && this.spaces.before;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.before = raw;\n }\n }, {\n key: \"rawSpaceAfter\",\n get: function get() {\n var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n if (rawSpace === undefined) {\n rawSpace = this.spaces.after;\n }\n\n return rawSpace || \"\";\n },\n set: function set(raw) {\n (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n this.raws.spaces.after = raw;\n }\n }]);\n\n return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Container = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Container, _Node);\n\n function Container(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n\n if (!_this.nodes) {\n _this.nodes = [];\n }\n\n return _this;\n }\n\n var _proto = Container.prototype;\n\n _proto.append = function append(selector) {\n selector.parent = this;\n this.nodes.push(selector);\n return this;\n };\n\n _proto.prepend = function prepend(selector) {\n selector.parent = this;\n this.nodes.unshift(selector);\n return this;\n };\n\n _proto.at = function at(index) {\n return this.nodes[index];\n };\n\n _proto.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n }\n\n return this.nodes.indexOf(child);\n };\n\n _proto.removeChild = function removeChild(child) {\n child = this.index(child);\n this.at(child).parent = undefined;\n this.nodes.splice(child, 1);\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n _proto.removeAll = function removeAll() {\n for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n var node = _step.value;\n node.parent = undefined;\n }\n\n this.nodes = [];\n return this;\n };\n\n _proto.empty = function empty() {\n return this.removeAll();\n };\n\n _proto.insertAfter = function insertAfter(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex + 1, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (oldIndex <= index) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto.insertBefore = function insertBefore(oldNode, newNode) {\n newNode.parent = this;\n var oldIndex = this.index(oldNode);\n this.nodes.splice(oldIndex, 0, newNode);\n newNode.parent = this;\n var index;\n\n for (var id in this.indexes) {\n index = this.indexes[id];\n\n if (index <= oldIndex) {\n this.indexes[id] = index + 1;\n }\n }\n\n return this;\n };\n\n _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n var found = undefined;\n this.each(function (node) {\n if (node.atPosition) {\n var foundChild = node.atPosition(line, col);\n\n if (foundChild) {\n found = foundChild;\n return false;\n }\n } else if (node.isAtPosition(line, col)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Return the most specific node at the line and column number given.\n * The source location is based on the original parsed location, locations aren't\n * updated as selector nodes are mutated.\n * \n * Note that this location is relative to the location of the first character\n * of the selector, and not the location of the selector in the overall document\n * when used in conjunction with postcss.\n *\n * If not found, returns undefined.\n * @param {number} line The line number of the node to find. (1-based index)\n * @param {number} col The column number of the node to find. (1-based index)\n */\n ;\n\n _proto.atPosition = function atPosition(line, col) {\n if (this.isAtPosition(line, col)) {\n return this._findChildAtPosition(line, col) || this;\n } else {\n return undefined;\n }\n };\n\n _proto._inferEndPosition = function _inferEndPosition() {\n if (this.last && this.last.source && this.last.source.end) {\n this.source = this.source || {};\n this.source.end = this.source.end || {};\n Object.assign(this.source.end, this.last.source.end);\n }\n };\n\n _proto.each = function each(callback) {\n if (!this.lastEach) {\n this.lastEach = 0;\n }\n\n if (!this.indexes) {\n this.indexes = {};\n }\n\n this.lastEach++;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.length) {\n return undefined;\n }\n\n var index, result;\n\n while (this.indexes[id] < this.length) {\n index = this.indexes[id];\n result = callback(this.at(index), index);\n\n if (result === false) {\n break;\n }\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n if (result === false) {\n return false;\n }\n };\n\n _proto.walk = function walk(callback) {\n return this.each(function (node, i) {\n var result = callback(node, i);\n\n if (result !== false && node.length) {\n result = node.walk(callback);\n }\n\n if (result === false) {\n return false;\n }\n });\n };\n\n _proto.walkAttributes = function walkAttributes(callback) {\n var _this2 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ATTRIBUTE) {\n return callback.call(_this2, selector);\n }\n });\n };\n\n _proto.walkClasses = function walkClasses(callback) {\n var _this3 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.CLASS) {\n return callback.call(_this3, selector);\n }\n });\n };\n\n _proto.walkCombinators = function walkCombinators(callback) {\n var _this4 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMBINATOR) {\n return callback.call(_this4, selector);\n }\n });\n };\n\n _proto.walkComments = function walkComments(callback) {\n var _this5 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.COMMENT) {\n return callback.call(_this5, selector);\n }\n });\n };\n\n _proto.walkIds = function walkIds(callback) {\n var _this6 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.ID) {\n return callback.call(_this6, selector);\n }\n });\n };\n\n _proto.walkNesting = function walkNesting(callback) {\n var _this7 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.NESTING) {\n return callback.call(_this7, selector);\n }\n });\n };\n\n _proto.walkPseudos = function walkPseudos(callback) {\n var _this8 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.PSEUDO) {\n return callback.call(_this8, selector);\n }\n });\n };\n\n _proto.walkTags = function walkTags(callback) {\n var _this9 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.TAG) {\n return callback.call(_this9, selector);\n }\n });\n };\n\n _proto.walkUniversals = function walkUniversals(callback) {\n var _this10 = this;\n\n return this.walk(function (selector) {\n if (selector.type === types.UNIVERSAL) {\n return callback.call(_this10, selector);\n }\n });\n };\n\n _proto.split = function split(callback) {\n var _this11 = this;\n\n var current = [];\n return this.reduce(function (memo, node, index) {\n var split = callback.call(_this11, node);\n current.push(node);\n\n if (split) {\n memo.push(current);\n current = [];\n } else if (index === _this11.length - 1) {\n memo.push(current);\n }\n\n return memo;\n }, []);\n };\n\n _proto.map = function map(callback) {\n return this.nodes.map(callback);\n };\n\n _proto.reduce = function reduce(callback, memo) {\n return this.nodes.reduce(callback, memo);\n };\n\n _proto.every = function every(callback) {\n return this.nodes.every(callback);\n };\n\n _proto.some = function some(callback) {\n return this.nodes.some(callback);\n };\n\n _proto.filter = function filter(callback) {\n return this.nodes.filter(callback);\n };\n\n _proto.sort = function sort(callback) {\n return this.nodes.sort(callback);\n };\n\n _proto.toString = function toString() {\n return this.map(String).join('');\n };\n\n _createClass(Container, [{\n key: \"first\",\n get: function get() {\n return this.at(0);\n }\n }, {\n key: \"last\",\n get: function get() {\n return this.at(this.length - 1);\n }\n }, {\n key: \"length\",\n get: function get() {\n return this.nodes.length;\n }\n }]);\n\n return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Root = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Root, _Container);\n\n function Root(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.ROOT;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.toString = function toString() {\n var str = this.reduce(function (memo, selector) {\n memo.push(String(selector));\n return memo;\n }, []).join(',');\n return this.trailingComma ? str + ',' : str;\n };\n\n _proto.error = function error(message, options) {\n if (this._error) {\n return this._error(message, options);\n } else {\n return new Error(message);\n }\n };\n\n _createClass(Root, [{\n key: \"errorGenerator\",\n set: function set(handler) {\n this._error = handler;\n }\n }]);\n\n return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Selector = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Selector, _Container);\n\n function Selector(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.SELECTOR;\n return _this;\n }\n\n return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ClassName = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ClassName, _Node);\n\n function ClassName(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.CLASS;\n _this._constructed = true;\n return _this;\n }\n\n var _proto = ClassName.prototype;\n\n _proto.valueToString = function valueToString() {\n return '.' + _Node.prototype.valueToString.call(this);\n };\n\n _createClass(ClassName, [{\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(v) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped !== v) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.value = escaped;\n } else if (this.raws) {\n delete this.raws.value;\n }\n }\n\n this._value = v;\n }\n }]);\n\n return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Comment = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Comment, _Node);\n\n function Comment(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMMENT;\n return _this;\n }\n\n return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar ID = /*#__PURE__*/function (_Node) {\n _inheritsLoose(ID, _Node);\n\n function ID(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.ID;\n return _this;\n }\n\n var _proto = ID.prototype;\n\n _proto.valueToString = function valueToString() {\n return '#' + _Node.prototype.valueToString.call(this);\n };\n\n return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Namespace = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Namespace, _Node);\n\n function Namespace() {\n return _Node.apply(this, arguments) || this;\n }\n\n var _proto = Namespace.prototype;\n\n _proto.qualifiedName = function qualifiedName(value) {\n if (this.namespace) {\n return this.namespaceString + \"|\" + value;\n } else {\n return value;\n }\n };\n\n _proto.valueToString = function valueToString() {\n return this.qualifiedName(_Node.prototype.valueToString.call(this));\n };\n\n _createClass(Namespace, [{\n key: \"namespace\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n this._namespace = namespace;\n\n if (this.raws) {\n delete this.raws.namespace;\n }\n\n return;\n }\n\n var escaped = (0, _cssesc[\"default\"])(namespace, {\n isIdentifier: true\n });\n this._namespace = namespace;\n\n if (escaped !== namespace) {\n (0, _util.ensureObject)(this, \"raws\");\n this.raws.namespace = escaped;\n } else if (this.raws) {\n delete this.raws.namespace;\n }\n }\n }, {\n key: \"ns\",\n get: function get() {\n return this._namespace;\n },\n set: function set(namespace) {\n this.namespace = namespace;\n }\n }, {\n key: \"namespaceString\",\n get: function get() {\n if (this.namespace) {\n var ns = this.stringifyProperty(\"namespace\");\n\n if (ns === true) {\n return '';\n } else {\n return ns;\n }\n } else {\n return '';\n }\n }\n }]);\n\n return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Tag = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Tag, _Namespace);\n\n function Tag(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.TAG;\n return _this;\n }\n\n return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar String = /*#__PURE__*/function (_Node) {\n _inheritsLoose(String, _Node);\n\n function String(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.STRING;\n return _this;\n }\n\n return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Pseudo = /*#__PURE__*/function (_Container) {\n _inheritsLoose(Pseudo, _Container);\n\n function Pseudo(opts) {\n var _this;\n\n _this = _Container.call(this, opts) || this;\n _this.type = _types.PSEUDO;\n return _this;\n }\n\n var _proto = Pseudo.prototype;\n\n _proto.toString = function toString() {\n var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n };\n\n return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;","module.exports = function deprecate(fn, message) {\n return function (...args) {\n console.warn(message)\n return fn(...args)\n }\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n var deprecatedUsage = false;\n var quoteMark = null;\n var unescaped = value;\n var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n if (m) {\n quoteMark = m[1];\n unescaped = m[2];\n }\n\n unescaped = (0, _unesc[\"default\"])(unescaped);\n\n if (unescaped !== value) {\n deprecatedUsage = true;\n }\n\n return {\n deprecatedUsage: deprecatedUsage,\n unescaped: unescaped,\n quoteMark: quoteMark\n };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n if (opts.quoteMark !== undefined) {\n return opts;\n }\n\n if (opts.value === undefined) {\n return opts;\n }\n\n warnOfDeprecatedConstructor();\n\n var _unescapeValue = unescapeValue(opts.value),\n quoteMark = _unescapeValue.quoteMark,\n unescaped = _unescapeValue.unescaped;\n\n if (!opts.raws) {\n opts.raws = {};\n }\n\n if (opts.raws.value === undefined) {\n opts.raws.value = opts.value;\n }\n\n opts.value = unescaped;\n opts.quoteMark = quoteMark;\n return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Attribute, _Namespace);\n\n function Attribute(opts) {\n var _this;\n\n if (opts === void 0) {\n opts = {};\n }\n\n _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n _this.type = _types.ATTRIBUTE;\n _this.raws = _this.raws || {};\n Object.defineProperty(_this.raws, 'unquoted', {\n get: deprecate(function () {\n return _this.value;\n }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n set: deprecate(function () {\n return _this.value;\n }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n });\n _this._constructed = true;\n return _this;\n }\n /**\n * Returns the Attribute's value quoted such that it would be legal to use\n * in the value of a css file. The original value's quotation setting\n * used for stringification is left unchanged. See `setValue(value, options)`\n * if you want to control the quote settings of a new value for the attribute.\n *\n * You can also change the quotation used for the current value by setting quoteMark.\n *\n * Options:\n * * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n * option is not set, the original value for quoteMark will be used. If\n * indeterminate, a double quote is used. The legal values are:\n * * `null` - the value will be unquoted and characters will be escaped as necessary.\n * * `'` - the value will be quoted with a single quote and single quotes are escaped.\n * * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n * * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n * over the quoteMark option value.\n * * smart {boolean} - if true, will select a quote mark based on the value\n * and the other options specified here. See the `smartQuoteMark()`\n * method.\n **/\n\n\n var _proto = Attribute.prototype;\n\n _proto.getQuotedValue = function getQuotedValue(options) {\n if (options === void 0) {\n options = {};\n }\n\n var quoteMark = this._determineQuoteMark(options);\n\n var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n return escaped;\n };\n\n _proto._determineQuoteMark = function _determineQuoteMark(options) {\n return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n }\n /**\n * Set the unescaped value with the specified quotation options. The value\n * provided must not include any wrapping quote marks -- those quotes will\n * be interpreted as part of the value and escaped accordingly.\n */\n ;\n\n _proto.setValue = function setValue(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n this._value = value;\n this._quoteMark = this._determineQuoteMark(options);\n\n this._syncRawValue();\n }\n /**\n * Intelligently select a quoteMark value based on the value's contents. If\n * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n * mark will be picked that minimizes the number of escapes.\n *\n * If there's no clear winner, the quote mark from these options is used,\n * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n * true). If the quoteMark is unspecified, a double quote is used.\n *\n * @param options This takes the quoteMark and preferCurrentQuoteMark options\n * from the quoteValue method.\n */\n ;\n\n _proto.smartQuoteMark = function smartQuoteMark(options) {\n var v = this.value;\n var numSingleQuotes = v.replace(/[^']/g, '').length;\n var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n if (numSingleQuotes + numDoubleQuotes === 0) {\n var escaped = (0, _cssesc[\"default\"])(v, {\n isIdentifier: true\n });\n\n if (escaped === v) {\n return Attribute.NO_QUOTE;\n } else {\n var pref = this.preferredQuoteMark(options);\n\n if (pref === Attribute.NO_QUOTE) {\n // pick a quote mark that isn't none and see if it's smaller\n var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n var opts = CSSESC_QUOTE_OPTIONS[quote];\n var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n if (quoteValue.length < escaped.length) {\n return quote;\n }\n }\n\n return pref;\n }\n } else if (numDoubleQuotes === numSingleQuotes) {\n return this.preferredQuoteMark(options);\n } else if (numDoubleQuotes < numSingleQuotes) {\n return Attribute.DOUBLE_QUOTE;\n } else {\n return Attribute.SINGLE_QUOTE;\n }\n }\n /**\n * Selects the preferred quote mark based on the options and the current quote mark value.\n * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n * instead.\n */\n ;\n\n _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n if (quoteMark === undefined) {\n quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n }\n\n if (quoteMark === undefined) {\n quoteMark = Attribute.DOUBLE_QUOTE;\n }\n\n return quoteMark;\n };\n\n _proto._syncRawValue = function _syncRawValue() {\n var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n if (rawValue === this._value) {\n if (this.raws) {\n delete this.raws.value;\n }\n } else {\n this.raws.value = rawValue;\n }\n };\n\n _proto._handleEscapes = function _handleEscapes(prop, value) {\n if (this._constructed) {\n var escaped = (0, _cssesc[\"default\"])(value, {\n isIdentifier: true\n });\n\n if (escaped !== value) {\n this.raws[prop] = escaped;\n } else {\n delete this.raws[prop];\n }\n }\n };\n\n _proto._spacesFor = function _spacesFor(name) {\n var attrSpaces = {\n before: '',\n after: ''\n };\n var spaces = this.spaces[name] || {};\n var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n return Object.assign(attrSpaces, spaces, rawSpaces);\n };\n\n _proto._stringFor = function _stringFor(name, spaceName, concat) {\n if (spaceName === void 0) {\n spaceName = name;\n }\n\n if (concat === void 0) {\n concat = defaultAttrConcat;\n }\n\n var attrSpaces = this._spacesFor(spaceName);\n\n return concat(this.stringifyProperty(name), attrSpaces);\n }\n /**\n * returns the offset of the attribute part specified relative to the\n * start of the node of the output string.\n *\n * * \"ns\" - alias for \"namespace\"\n * * \"namespace\" - the namespace if it exists.\n * * \"attribute\" - the attribute name\n * * \"attributeNS\" - the start of the attribute or its namespace\n * * \"operator\" - the match operator of the attribute\n * * \"value\" - The value (string or identifier)\n * * \"insensitive\" - the case insensitivity flag;\n * @param part One of the possible values inside an attribute.\n * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n */\n ;\n\n _proto.offsetOf = function offsetOf(name) {\n var count = 1;\n\n var attributeSpaces = this._spacesFor(\"attribute\");\n\n count += attributeSpaces.before.length;\n\n if (name === \"namespace\" || name === \"ns\") {\n return this.namespace ? count : -1;\n }\n\n if (name === \"attributeNS\") {\n return count;\n }\n\n count += this.namespaceString.length;\n\n if (this.namespace) {\n count += 1;\n }\n\n if (name === \"attribute\") {\n return count;\n }\n\n count += this.stringifyProperty(\"attribute\").length;\n count += attributeSpaces.after.length;\n\n var operatorSpaces = this._spacesFor(\"operator\");\n\n count += operatorSpaces.before.length;\n var operator = this.stringifyProperty(\"operator\");\n\n if (name === \"operator\") {\n return operator ? count : -1;\n }\n\n count += operator.length;\n count += operatorSpaces.after.length;\n\n var valueSpaces = this._spacesFor(\"value\");\n\n count += valueSpaces.before.length;\n var value = this.stringifyProperty(\"value\");\n\n if (name === \"value\") {\n return value ? count : -1;\n }\n\n count += value.length;\n count += valueSpaces.after.length;\n\n var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n count += insensitiveSpaces.before.length;\n\n if (name === \"insensitive\") {\n return this.insensitive ? count : -1;\n }\n\n return -1;\n };\n\n _proto.toString = function toString() {\n var _this2 = this;\n\n var selector = [this.rawSpaceBefore, '['];\n selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n if (this.operator && (this.value || this.value === '')) {\n selector.push(this._stringFor('operator'));\n selector.push(this._stringFor('value'));\n selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n attrSpaces.before = \" \";\n }\n\n return defaultAttrConcat(attrValue, attrSpaces);\n }));\n }\n\n selector.push(']');\n selector.push(this.rawSpaceAfter);\n return selector.join('');\n };\n\n _createClass(Attribute, [{\n key: \"quoted\",\n get: function get() {\n var qm = this.quoteMark;\n return qm === \"'\" || qm === '\"';\n },\n set: function set(value) {\n warnOfDeprecatedQuotedAssignment();\n }\n /**\n * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n * returns `null` if the value is not quoted.\n * returns `undefined` if the quotation state is unknown (this can happen when\n * the attribute is constructed without specifying a quote mark.)\n */\n\n }, {\n key: \"quoteMark\",\n get: function get() {\n return this._quoteMark;\n }\n /**\n * Set the quote mark to be used by this attribute's value.\n * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n * value is updated accordingly.\n *\n * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n */\n ,\n set: function set(quoteMark) {\n if (!this._constructed) {\n this._quoteMark = quoteMark;\n return;\n }\n\n if (this._quoteMark !== quoteMark) {\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n }\n }\n }, {\n key: \"qualifiedAttribute\",\n get: function get() {\n return this.qualifiedName(this.raws.attribute || this.attribute);\n }\n }, {\n key: \"insensitiveFlag\",\n get: function get() {\n return this.insensitive ? 'i' : '';\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n }\n /**\n * Before 3.0, the value had to be set to an escaped value including any wrapped\n * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n * is unescaped during parsing and any quote marks are removed.\n *\n * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n * a deprecation warning is raised when the new value contains any characters that would\n * require escaping (including if it contains wrapped quotes).\n *\n * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n * how the new value is quoted.\n */\n ,\n set: function set(v) {\n if (this._constructed) {\n var _unescapeValue2 = unescapeValue(v),\n deprecatedUsage = _unescapeValue2.deprecatedUsage,\n unescaped = _unescapeValue2.unescaped,\n quoteMark = _unescapeValue2.quoteMark;\n\n if (deprecatedUsage) {\n warnOfDeprecatedValueAssignment();\n }\n\n if (unescaped === this._value && quoteMark === this._quoteMark) {\n return;\n }\n\n this._value = unescaped;\n this._quoteMark = quoteMark;\n\n this._syncRawValue();\n } else {\n this._value = v;\n }\n }\n }, {\n key: \"attribute\",\n get: function get() {\n return this._attribute;\n },\n set: function set(name) {\n this._handleEscapes(\"attribute\", name);\n\n this._attribute = name;\n }\n }]);\n\n return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n \"'\": {\n quotes: 'single',\n wrap: true\n },\n '\"': {\n quotes: 'double',\n wrap: true\n }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Universal = /*#__PURE__*/function (_Namespace) {\n _inheritsLoose(Universal, _Namespace);\n\n function Universal(opts) {\n var _this;\n\n _this = _Namespace.call(this, opts) || this;\n _this.type = _types.UNIVERSAL;\n _this.value = '*';\n return _this;\n }\n\n return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Combinator = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Combinator, _Node);\n\n function Combinator(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.COMBINATOR;\n return _this;\n }\n\n return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar Nesting = /*#__PURE__*/function (_Node) {\n _inheritsLoose(Nesting, _Node);\n\n function Nesting(opts) {\n var _this;\n\n _this = _Node.call(this, opts) || this;\n _this.type = _types.NESTING;\n _this.value = '&';\n return _this;\n }\n\n return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n return list.sort(function (a, b) {\n return a - b;\n });\n}\n\n;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n * Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n var next = start;\n var code;\n\n do {\n code = css.charCodeAt(next);\n\n if (wordDelimiters[code]) {\n return next - 1;\n } else if (code === t.backslash) {\n next = consumeEscape(css, next) + 1;\n } else {\n // All other characters are part of the word\n next++;\n }\n } while (next < css.length);\n\n return next - 1;\n}\n/**\n * Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n var next = start;\n var code = css.charCodeAt(next + 1);\n\n if (unescapable[code]) {// just consume the escape char\n } else if (hex[code]) {\n var hexDigits = 0; // consume up to 6 hex chars\n\n do {\n next++;\n hexDigits++;\n code = css.charCodeAt(next + 1);\n } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n if (hexDigits < 6 && code === t.space) {\n next++;\n }\n } else {\n // the next char is part of the current word\n next++;\n }\n\n return next;\n}\n\nvar FIELDS = {\n TYPE: 0,\n START_LINE: 1,\n START_COL: 2,\n END_LINE: 3,\n END_COL: 4,\n START_POS: 5,\n END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n var tokens = [];\n var css = input.css.valueOf();\n var _css = css,\n length = _css.length;\n var offset = -1;\n var line = 1;\n var start = 0;\n var end = 0;\n var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n function unclosed(what, fix) {\n if (input.safe) {\n // fyi: this is never set to true.\n css += fix;\n next = css.length - 1;\n } else {\n throw input.error('Unclosed ' + what, line, start - offset, start);\n }\n }\n\n while (start < length) {\n code = css.charCodeAt(start);\n\n if (code === t.newline) {\n offset = start;\n line += 1;\n }\n\n switch (code) {\n case t.space:\n case t.tab:\n case t.newline:\n case t.cr:\n case t.feed:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n\n if (code === t.newline) {\n offset = next;\n line += 1;\n }\n } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n tokenType = t.space;\n endLine = line;\n endColumn = next - offset - 1;\n end = next;\n break;\n\n case t.plus:\n case t.greaterThan:\n case t.tilde:\n case t.pipe:\n next = start;\n\n do {\n next += 1;\n code = css.charCodeAt(next);\n } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n tokenType = t.combinator;\n endLine = line;\n endColumn = start - offset;\n end = next;\n break;\n // Consume these characters as single tokens.\n\n case t.asterisk:\n case t.ampersand:\n case t.bang:\n case t.comma:\n case t.equals:\n case t.dollar:\n case t.caret:\n case t.openSquare:\n case t.closeSquare:\n case t.colon:\n case t.semicolon:\n case t.openParenthesis:\n case t.closeParenthesis:\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n case t.singleQuote:\n case t.doubleQuote:\n quote = code === t.singleQuote ? \"'\" : '\"';\n next = start;\n\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n\n if (next === -1) {\n unclosed('quote', quote);\n }\n\n escapePos = next;\n\n while (css.charCodeAt(escapePos - 1) === t.backslash) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n tokenType = t.str;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n break;\n\n default:\n if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n next = css.indexOf('*/', start + 2) + 1;\n\n if (next === 0) {\n unclosed('comment', '*/');\n }\n\n content = css.slice(start, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n tokenType = t.comment;\n line = nextLine;\n endLine = nextLine;\n endColumn = next - nextOffset;\n } else if (code === t.slash) {\n next = start;\n tokenType = code;\n endLine = line;\n endColumn = start - offset;\n end = next + 1;\n } else {\n next = consumeWord(css, start);\n tokenType = t.word;\n endLine = line;\n endColumn = next - offset;\n }\n\n end = next + 1;\n break;\n } // Ensure that the token structure remains consistent\n\n\n tokens.push([tokenType, // [0] Token type\n line, // [1] Starting line\n start - offset, // [2] Starting column\n endLine, // [3] Ending line\n endColumn, // [4] Ending column\n start, // [5] Start position / Source index\n end // [6] End position\n ]); // Reset offset for the next token\n\n if (nextOffset) {\n offset = nextOffset;\n nextOffset = null;\n }\n\n start = end;\n }\n\n return tokens;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n return {\n line: token[_tokenize.FIELDS.START_LINE],\n column: token[_tokenize.FIELDS.START_COL]\n };\n}\n\nfunction tokenEnd(token) {\n return {\n line: token[_tokenize.FIELDS.END_LINE],\n column: token[_tokenize.FIELDS.END_COL]\n };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n return {\n start: {\n line: startLine,\n column: startColumn\n },\n end: {\n line: endLine,\n column: endColumn\n }\n };\n}\n\nfunction getTokenSource(token) {\n return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n if (!startToken) {\n return undefined;\n }\n\n return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n var value = node[prop];\n\n if (typeof value !== \"string\") {\n return;\n }\n\n if (value.indexOf(\"\\\\\") !== -1) {\n (0, _util.ensureObject)(node, 'raws');\n node[prop] = (0, _util.unesc)(value);\n\n if (node.raws[prop] === undefined) {\n node.raws[prop] = value;\n }\n }\n\n return node;\n}\n\nfunction indexesOf(array, item) {\n var i = -1;\n var indexes = [];\n\n while ((i = array.indexOf(item, i + 1)) !== -1) {\n indexes.push(i);\n }\n\n return indexes;\n}\n\nfunction uniqs() {\n var list = Array.prototype.concat.apply([], arguments);\n return list.filter(function (item, i) {\n return i === list.indexOf(item);\n });\n}\n\nvar Parser = /*#__PURE__*/function () {\n function Parser(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.rule = rule;\n this.options = Object.assign({\n lossy: false,\n safe: false\n }, options);\n this.position = 0;\n this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n this.tokens = (0, _tokenize[\"default\"])({\n css: this.css,\n error: this._errorGenerator(),\n safe: this.options.safe\n });\n var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n this.root = new _root[\"default\"]({\n source: rootSource\n });\n this.root.errorGenerator = this._errorGenerator();\n var selector = new _selector[\"default\"]({\n source: {\n start: {\n line: 1,\n column: 1\n }\n }\n });\n this.root.append(selector);\n this.current = selector;\n this.loop();\n }\n\n var _proto = Parser.prototype;\n\n _proto._errorGenerator = function _errorGenerator() {\n var _this = this;\n\n return function (message, errorOptions) {\n if (typeof _this.rule === 'string') {\n return new Error(message);\n }\n\n return _this.rule.error(message, errorOptions);\n };\n };\n\n _proto.attribute = function attribute() {\n var attr = [];\n var startingToken = this.currToken;\n this.position++;\n\n while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n attr.push(this.currToken);\n this.position++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n\n var len = attr.length;\n var node = {\n source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n };\n\n if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n }\n\n var pos = 0;\n var spaceBefore = '';\n var commentBefore = '';\n var lastAdded = null;\n var spaceAfterMeaningfulToken = false;\n\n while (pos < len) {\n var token = attr[pos];\n var content = this.content(token);\n var next = attr[pos + 1];\n\n switch (token[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n // if (\n // len === 1 ||\n // pos === 0 && this.content(next) === '|'\n // ) {\n // return this.expected('attribute', token[TOKEN.START_POS], content);\n // }\n spaceAfterMeaningfulToken = true;\n\n if (this.options.lossy) {\n break;\n }\n\n if (lastAdded) {\n (0, _util.ensureObject)(node, 'spaces', lastAdded);\n var prevContent = node.spaces[lastAdded].after || '';\n node.spaces[lastAdded].after = prevContent + content;\n var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n if (existingComment) {\n node.raws.spaces[lastAdded].after = existingComment + content;\n }\n } else {\n spaceBefore = spaceBefore + content;\n commentBefore = commentBefore + content;\n }\n\n break;\n\n case tokens.asterisk:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = spaceBefore;\n commentBefore = '';\n }\n\n node.namespace = (node.namespace || \"\") + content;\n var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n if (rawValue) {\n node.raws.namespace += content;\n }\n\n lastAdded = 'namespace';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.dollar:\n if (lastAdded === \"value\") {\n var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n node.value += \"$\";\n\n if (oldRawValue) {\n node.raws.value = oldRawValue + \"$\";\n }\n\n break;\n }\n\n // Falls through\n\n case tokens.caret:\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.combinator:\n if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n }\n\n if (content !== '|') {\n spaceAfterMeaningfulToken = false;\n break;\n }\n\n if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n node.operator = content;\n lastAdded = 'operator';\n } else if (!node.namespace && !node.attribute) {\n node.namespace = true;\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.word:\n if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n !node.operator && !node.namespace) {\n node.namespace = content;\n lastAdded = 'namespace';\n } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'attribute');\n node.spaces.attribute.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n node.raws.spaces.attribute.before = commentBefore;\n commentBefore = '';\n }\n\n node.attribute = (node.attribute || \"\") + content;\n\n var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n if (_rawValue) {\n node.raws.attribute += content;\n }\n\n lastAdded = 'attribute';\n } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !spaceAfterMeaningfulToken) {\n var _unescaped = (0, _util.unesc)(content);\n\n var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n var oldValue = node.value || '';\n node.value = oldValue + _unescaped;\n node.quoteMark = null;\n\n if (_unescaped !== content || _oldRawValue) {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = (_oldRawValue || oldValue) + content;\n }\n\n lastAdded = 'value';\n } else {\n var insensitive = content === 'i' || content === \"I\";\n\n if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n node.insensitive = insensitive;\n\n if (!insensitive || content === \"I\") {\n (0, _util.ensureObject)(node, 'raws');\n node.raws.insensitiveFlag = content;\n }\n\n lastAdded = 'insensitive';\n\n if (spaceBefore) {\n (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n node.spaces.insensitive.before = spaceBefore;\n spaceBefore = '';\n }\n\n if (commentBefore) {\n (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n node.raws.spaces.insensitive.before = commentBefore;\n commentBefore = '';\n }\n } else if (node.value || node.value === '') {\n lastAdded = 'value';\n node.value += content;\n\n if (node.raws.value) {\n node.raws.value += content;\n }\n }\n }\n\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.str:\n if (!node.attribute || !node.operator) {\n return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n var _unescapeValue = (0, _attribute.unescapeValue)(content),\n unescaped = _unescapeValue.unescaped,\n quoteMark = _unescapeValue.quoteMark;\n\n node.value = unescaped;\n node.quoteMark = quoteMark;\n lastAdded = 'value';\n (0, _util.ensureObject)(node, 'raws');\n node.raws.value = content;\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.equals:\n if (!node.attribute) {\n return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n }\n\n if (node.value) {\n return this.error('Unexpected \"=\" found; an operator was already defined.', {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n node.operator = node.operator ? node.operator + content : content;\n lastAdded = 'operator';\n spaceAfterMeaningfulToken = false;\n break;\n\n case tokens.comment:\n if (lastAdded) {\n if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n node.raws.spaces[lastAdded].after = rawLastComment + content;\n } else {\n var lastValue = node[lastAdded] || '';\n var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n (0, _util.ensureObject)(node, 'raws');\n node.raws[lastAdded] = rawLastValue + content;\n }\n } else {\n commentBefore = commentBefore + content;\n }\n\n break;\n\n default:\n return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n index: token[_tokenize.FIELDS.START_POS]\n });\n }\n\n pos++;\n }\n\n unescapeProp(node, \"attribute\");\n unescapeProp(node, \"namespace\");\n this.newNode(new _attribute[\"default\"](node));\n this.position++;\n }\n /**\n * return a node containing meaningless garbage up to (but not including) the specified token position.\n * if the token position is negative, all remaining tokens are consumed.\n *\n * This returns an array containing a single string node if all whitespace,\n * otherwise an array of comment nodes with space before and after.\n *\n * These tokens are not added to the current selector, the caller can add them or use them to amend\n * a previous node's space metadata.\n *\n * In lossy mode, this returns only comments.\n */\n ;\n\n _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n if (stopPosition < 0) {\n stopPosition = this.tokens.length;\n }\n\n var startPosition = this.position;\n var nodes = [];\n var space = \"\";\n var lastComment = undefined;\n\n do {\n if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n if (!this.options.lossy) {\n space += this.content();\n }\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n var spaces = {};\n\n if (space) {\n spaces.before = space;\n space = \"\";\n }\n\n lastComment = new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n spaces: spaces\n });\n nodes.push(lastComment);\n }\n } while (++this.position < stopPosition);\n\n if (space) {\n if (lastComment) {\n lastComment.spaces.after = space;\n } else if (!this.options.lossy) {\n var firstToken = this.tokens[startPosition];\n var lastToken = this.tokens[this.position - 1];\n nodes.push(new _string[\"default\"]({\n value: '',\n source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: {\n before: space,\n after: ''\n }\n }));\n }\n }\n\n return nodes;\n }\n /**\n * \n * @param {*} nodes \n */\n ;\n\n _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n var _this2 = this;\n\n if (requiredSpace === void 0) {\n requiredSpace = false;\n }\n\n var space = \"\";\n var rawSpace = \"\";\n nodes.forEach(function (n) {\n var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n });\n\n if (rawSpace === space) {\n rawSpace = undefined;\n }\n\n var result = {\n space: space,\n rawSpace: rawSpace\n };\n return result;\n };\n\n _proto.isNamedCombinator = function isNamedCombinator(position) {\n if (position === void 0) {\n position = this.position;\n }\n\n return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n };\n\n _proto.namedCombinator = function namedCombinator() {\n if (this.isNamedCombinator()) {\n var nameRaw = this.content(this.tokens[this.position + 1]);\n var name = (0, _util.unesc)(nameRaw).toLowerCase();\n var raws = {};\n\n if (name !== nameRaw) {\n raws.value = \"/\" + nameRaw + \"/\";\n }\n\n var node = new _combinator[\"default\"]({\n value: \"/\" + name + \"/\",\n source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n raws: raws\n });\n this.position = this.position + 3;\n return node;\n } else {\n this.unexpected();\n }\n };\n\n _proto.combinator = function combinator() {\n var _this3 = this;\n\n if (this.content() === '|') {\n return this.namespace();\n } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n if (nodes.length > 0) {\n var last = this.current.last;\n\n if (last) {\n var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n space = _this$convertWhitespa.space,\n rawSpace = _this$convertWhitespa.rawSpace;\n\n if (rawSpace !== undefined) {\n last.rawSpaceAfter += rawSpace;\n }\n\n last.spaces.after += space;\n } else {\n nodes.forEach(function (n) {\n return _this3.newNode(n);\n });\n }\n }\n\n return;\n }\n\n var firstToken = this.currToken;\n var spaceOrDescendantSelectorNodes = undefined;\n\n if (nextSigTokenPos > this.position) {\n spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n }\n\n var node;\n\n if (this.isNamedCombinator()) {\n node = this.namedCombinator();\n } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n node = new _combinator[\"default\"]({\n value: this.content(),\n source: getTokenSource(this.currToken),\n sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n });\n this.position++;\n } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n } else if (!spaceOrDescendantSelectorNodes) {\n this.unexpected();\n }\n\n if (node) {\n if (spaceOrDescendantSelectorNodes) {\n var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n _space = _this$convertWhitespa2.space,\n _rawSpace = _this$convertWhitespa2.rawSpace;\n\n node.spaces.before = _space;\n node.rawSpaceBefore = _rawSpace;\n }\n } else {\n // descendant combinator\n var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n _space2 = _this$convertWhitespa3.space,\n _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n if (!_rawSpace2) {\n _rawSpace2 = _space2;\n }\n\n var spaces = {};\n var raws = {\n spaces: {}\n };\n\n if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n spaces.before = _space2.slice(0, _space2.length - 1);\n raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n spaces.after = _space2.slice(1);\n raws.spaces.after = _rawSpace2.slice(1);\n } else {\n raws.value = _rawSpace2;\n }\n\n node = new _combinator[\"default\"]({\n value: ' ',\n source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n spaces: spaces,\n raws: raws\n });\n }\n\n if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n node.spaces.after = this.optionalSpace(this.content());\n this.position++;\n }\n\n return this.newNode(node);\n };\n\n _proto.comma = function comma() {\n if (this.position === this.tokens.length - 1) {\n this.root.trailingComma = true;\n this.position++;\n return;\n }\n\n this.current._inferEndPosition();\n\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position + 1])\n }\n });\n this.current.parent.append(selector);\n this.current = selector;\n this.position++;\n };\n\n _proto.comment = function comment() {\n var current = this.currToken;\n this.newNode(new _comment[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.error = function error(message, opts) {\n throw this.root.error(message, opts);\n };\n\n _proto.missingBackslash = function missingBackslash() {\n return this.error('Expected a backslash preceding the semicolon.', {\n index: this.currToken[_tokenize.FIELDS.START_POS]\n });\n };\n\n _proto.missingParenthesis = function missingParenthesis() {\n return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.missingSquareBracket = function missingSquareBracket() {\n return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.unexpected = function unexpected() {\n return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n };\n\n _proto.namespace = function namespace() {\n var before = this.prevToken && this.content(this.prevToken) || true;\n\n if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.position++;\n return this.word(before);\n } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n this.position++;\n return this.universal(before);\n }\n };\n\n _proto.nesting = function nesting() {\n if (this.nextToken) {\n var nextContent = this.content(this.nextToken);\n\n if (nextContent === \"|\") {\n this.position++;\n return;\n }\n }\n\n var current = this.currToken;\n this.newNode(new _nesting[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.parentheses = function parentheses() {\n var last = this.current.last;\n var unbalanced = 1;\n this.position++;\n\n if (last && last.type === types.PSEUDO) {\n var selector = new _selector[\"default\"]({\n source: {\n start: tokenStart(this.tokens[this.position - 1])\n }\n });\n var cache = this.current;\n last.append(selector);\n this.current = selector;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n if (unbalanced) {\n this.parse();\n } else {\n this.current.source.end = tokenEnd(this.currToken);\n this.current.parent.source.end = tokenEnd(this.currToken);\n this.position++;\n }\n }\n\n this.current = cache;\n } else {\n // I think this case should be an error. It's used to implement a basic parse of media queries\n // but I don't think it's a good idea.\n var parenStart = this.currToken;\n var parenValue = \"(\";\n var parenEnd;\n\n while (this.position < this.tokens.length && unbalanced) {\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n unbalanced++;\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n unbalanced--;\n }\n\n parenEnd = this.currToken;\n parenValue += this.parseParenthesisToken(this.currToken);\n this.position++;\n }\n\n if (last) {\n last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n } else {\n this.newNode(new _string[\"default\"]({\n value: parenValue,\n source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n }));\n }\n }\n\n if (unbalanced) {\n return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.pseudo = function pseudo() {\n var _this4 = this;\n\n var pseudoStr = '';\n var startingToken = this.currToken;\n\n while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n pseudoStr += this.content();\n this.position++;\n }\n\n if (!this.currToken) {\n return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n }\n\n if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n this.splitWord(false, function (first, length) {\n pseudoStr += first;\n\n _this4.newNode(new _pseudo[\"default\"]({\n value: pseudoStr,\n source: getTokenSourceSpan(startingToken, _this4.currToken),\n sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n }));\n\n if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n _this4.error('Misplaced parenthesis.', {\n index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n });\n }\n });\n } else {\n return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n }\n };\n\n _proto.space = function space() {\n var content = this.content(); // Handle space before and after the selector\n\n if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n return node.type === 'comment';\n })) {\n this.spaces = this.optionalSpace(content);\n this.position++;\n } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n this.current.last.spaces.after = this.optionalSpace(content);\n this.position++;\n } else {\n this.combinator();\n }\n };\n\n _proto.string = function string() {\n var current = this.currToken;\n this.newNode(new _string[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }));\n this.position++;\n };\n\n _proto.universal = function universal(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n var current = this.currToken;\n this.newNode(new _universal[\"default\"]({\n value: this.content(),\n source: getTokenSource(current),\n sourceIndex: current[_tokenize.FIELDS.START_POS]\n }), namespace);\n this.position++;\n };\n\n _proto.splitWord = function splitWord(namespace, firstCallback) {\n var _this5 = this;\n\n var nextToken = this.nextToken;\n var word = this.content();\n\n while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n this.position++;\n var current = this.content();\n word += current;\n\n if (current.lastIndexOf('\\\\') === current.length - 1) {\n var next = this.nextToken;\n\n if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n word += this.requiredSpace(this.content(next));\n this.position++;\n }\n }\n\n nextToken = this.nextToken;\n }\n\n var hasClass = indexesOf(word, '.').filter(function (i) {\n // Allow escaped dot within class name\n var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n return !escapedDot && !isKeyframesPercent;\n });\n var hasId = indexesOf(word, '#').filter(function (i) {\n return word[i - 1] !== '\\\\';\n }); // Eliminate Sass interpolations from the list of id indexes\n\n var interpolations = indexesOf(word, '#{');\n\n if (interpolations.length) {\n hasId = hasId.filter(function (hashIndex) {\n return !~interpolations.indexOf(hashIndex);\n });\n }\n\n var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n indices.forEach(function (ind, i) {\n var index = indices[i + 1] || word.length;\n var value = word.slice(ind, index);\n\n if (i === 0 && firstCallback) {\n return firstCallback.call(_this5, value, indices.length);\n }\n\n var node;\n var current = _this5.currToken;\n var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n if (~hasClass.indexOf(ind)) {\n var classNameOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n } else if (~hasId.indexOf(ind)) {\n var idOpts = {\n value: value.slice(1),\n source: source,\n sourceIndex: sourceIndex\n };\n node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n } else {\n var tagOpts = {\n value: value,\n source: source,\n sourceIndex: sourceIndex\n };\n unescapeProp(tagOpts, \"value\");\n node = new _tag[\"default\"](tagOpts);\n }\n\n _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n namespace = null;\n });\n this.position++;\n };\n\n _proto.word = function word(namespace) {\n var nextToken = this.nextToken;\n\n if (nextToken && this.content(nextToken) === '|') {\n this.position++;\n return this.namespace();\n }\n\n return this.splitWord(namespace);\n };\n\n _proto.loop = function loop() {\n while (this.position < this.tokens.length) {\n this.parse(true);\n }\n\n this.current._inferEndPosition();\n\n return this.root;\n };\n\n _proto.parse = function parse(throwOnParenthesis) {\n switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n case tokens.space:\n this.space();\n break;\n\n case tokens.comment:\n this.comment();\n break;\n\n case tokens.openParenthesis:\n this.parentheses();\n break;\n\n case tokens.closeParenthesis:\n if (throwOnParenthesis) {\n this.missingParenthesis();\n }\n\n break;\n\n case tokens.openSquare:\n this.attribute();\n break;\n\n case tokens.dollar:\n case tokens.caret:\n case tokens.equals:\n case tokens.word:\n this.word();\n break;\n\n case tokens.colon:\n this.pseudo();\n break;\n\n case tokens.comma:\n this.comma();\n break;\n\n case tokens.asterisk:\n this.universal();\n break;\n\n case tokens.ampersand:\n this.nesting();\n break;\n\n case tokens.slash:\n case tokens.combinator:\n this.combinator();\n break;\n\n case tokens.str:\n this.string();\n break;\n // These cases throw; no break needed.\n\n case tokens.closeSquare:\n this.missingSquareBracket();\n\n case tokens.semicolon:\n this.missingBackslash();\n\n default:\n this.unexpected();\n }\n }\n /**\n * Helpers\n */\n ;\n\n _proto.expected = function expected(description, index, found) {\n if (Array.isArray(description)) {\n var last = description.pop();\n description = description.join(', ') + \" or \" + last;\n }\n\n var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n if (!found) {\n return this.error(\"Expected \" + an + \" \" + description + \".\", {\n index: index\n });\n }\n\n return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n index: index\n });\n };\n\n _proto.requiredSpace = function requiredSpace(space) {\n return this.options.lossy ? ' ' : space;\n };\n\n _proto.optionalSpace = function optionalSpace(space) {\n return this.options.lossy ? '' : space;\n };\n\n _proto.lossySpace = function lossySpace(space, required) {\n if (this.options.lossy) {\n return required ? ' ' : '';\n } else {\n return space;\n }\n };\n\n _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n var content = this.content(token);\n\n if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n return this.requiredSpace(content);\n } else {\n return content;\n }\n };\n\n _proto.newNode = function newNode(node, namespace) {\n if (namespace) {\n if (/^ +$/.test(namespace)) {\n if (!this.options.lossy) {\n this.spaces = (this.spaces || '') + namespace;\n }\n\n namespace = true;\n }\n\n node.namespace = namespace;\n unescapeProp(node, \"namespace\");\n }\n\n if (this.spaces) {\n node.spaces.before = this.spaces;\n this.spaces = '';\n }\n\n return this.current.append(node);\n };\n\n _proto.content = function content(token) {\n if (token === void 0) {\n token = this.currToken;\n }\n\n return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n };\n\n /**\n * returns the index of the next non-whitespace, non-comment token.\n * returns -1 if no meaningful token is found.\n */\n _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n if (startPosition === void 0) {\n startPosition = this.position + 1;\n }\n\n var searchPosition = startPosition;\n\n while (searchPosition < this.tokens.length) {\n if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n searchPosition++;\n continue;\n } else {\n return searchPosition;\n }\n }\n\n return -1;\n };\n\n _createClass(Parser, [{\n key: \"currToken\",\n get: function get() {\n return this.tokens[this.position];\n }\n }, {\n key: \"nextToken\",\n get: function get() {\n return this.tokens[this.position + 1];\n }\n }, {\n key: \"prevToken\",\n get: function get() {\n return this.tokens[this.position - 1];\n }\n }]);\n\n return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n function Processor(func, options) {\n this.func = func || function noop() {};\n\n this.funcRes = null;\n this.options = options;\n }\n\n var _proto = Processor.prototype;\n\n _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.updateSelector === false) {\n return false;\n } else {\n return typeof rule !== \"string\";\n }\n };\n\n _proto._isLossy = function _isLossy(options) {\n if (options === void 0) {\n options = {};\n }\n\n var merged = Object.assign({}, this.options, options);\n\n if (merged.lossless === false) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto._root = function _root(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n return parser.root;\n };\n\n _proto._parseOptions = function _parseOptions(options) {\n return {\n lossy: this._isLossy(options)\n };\n };\n\n _proto._run = function _run(rule, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n return new Promise(function (resolve, reject) {\n try {\n var root = _this._root(rule, options);\n\n Promise.resolve(_this.func(root)).then(function (transform) {\n var string = undefined;\n\n if (_this._shouldUpdateSelector(rule, options)) {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }).then(resolve, reject);\n } catch (e) {\n reject(e);\n return;\n }\n });\n };\n\n _proto._runSync = function _runSync(rule, options) {\n if (options === void 0) {\n options = {};\n }\n\n var root = this._root(rule, options);\n\n var transform = this.func(root);\n\n if (transform && typeof transform.then === \"function\") {\n throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n }\n\n var string = undefined;\n\n if (options.updateSelector && typeof rule !== \"string\") {\n string = root.toString();\n rule.selector = string;\n }\n\n return {\n transform: transform,\n root: root,\n string: string\n };\n }\n /**\n * Process rule into a selector AST.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The AST of the selector after processing it.\n */\n ;\n\n _proto.ast = function ast(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.root;\n });\n }\n /**\n * Process rule into a selector AST synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {parser.Root} The AST of the selector after processing it.\n */\n ;\n\n _proto.astSync = function astSync(rule, options) {\n return this._runSync(rule, options).root;\n }\n /**\n * Process a selector into a transformed value asynchronously\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {Promise} The value returned by the processor.\n */\n ;\n\n _proto.transform = function transform(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.transform;\n });\n }\n /**\n * Process a selector into a transformed value synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {any} The value returned by the processor.\n */\n ;\n\n _proto.transformSync = function transformSync(rule, options) {\n return this._runSync(rule, options).transform;\n }\n /**\n * Process a selector into a new selector string asynchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.process = function process(rule, options) {\n return this._run(rule, options).then(function (result) {\n return result.string || result.root.toString();\n });\n }\n /**\n * Process a selector into a new selector string synchronously.\n *\n * @param rule {postcss.Rule | string} The css selector to be processed\n * @param options The options for processing\n * @returns {string} the selector after processing.\n */\n ;\n\n _proto.processSync = function processSync(rule, options) {\n var result = this._runSync(rule, options);\n\n return result.string || result.root.toString();\n };\n\n return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;","\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;","\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n return isAttribute(node) || isTag(node);\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _types[key]) return;\n exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _constructors[key]) return;\n exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n if (key in exports && exports[key] === _guards[key]) return;\n exports[key] = _guards[key];\n});","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>escapeCommas\n});\nfunction escapeCommas(className) {\n return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseColor: ()=>parseColor,\n formatColor: ()=>formatColor\n});\nconst _colorName = /*#__PURE__*/ _interopRequireDefault(require(\"color-name\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgb)a?\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsl)a?\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false } = {}) {\n var ref, ref1;\n if (typeof value !== \"string\") {\n return null;\n }\n value = value.trim();\n if (value === \"transparent\") {\n return {\n mode: \"rgb\",\n color: [\n \"0\",\n \"0\",\n \"0\"\n ],\n alpha: \"0\"\n };\n }\n if (value in _colorName.default) {\n return {\n mode: \"rgb\",\n color: _colorName.default[value].map((v)=>v.toString())\n };\n }\n let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n \"#\",\n r,\n r,\n g,\n g,\n b,\n b,\n a ? a + a : \"\"\n ].join(\"\")).match(HEX);\n if (hex !== null) {\n return {\n mode: \"rgb\",\n color: [\n parseInt(hex[1], 16),\n parseInt(hex[2], 16),\n parseInt(hex[3], 16)\n ].map((v)=>v.toString()),\n alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n };\n }\n var ref2;\n let match = (ref2 = value.match(RGB)) !== null && ref2 !== void 0 ? ref2 : value.match(HSL);\n if (match === null) {\n return null;\n }\n let color = [\n match[2],\n match[3],\n match[4]\n ].filter(Boolean).map((v)=>v.toString());\n if (!loose && color.length !== 3) {\n return null;\n }\n if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n return null;\n }\n return {\n mode: match[1],\n color,\n alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)\n };\n}\nfunction formatColor({ mode , color , alpha }) {\n let hasAlpha = alpha !== undefined;\n return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n withAlphaValue: ()=>withAlphaValue,\n default: ()=>withAlphaVariable\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n if (typeof color === \"function\") {\n return color({\n opacityValue: alphaValue\n });\n }\n let parsed = (0, _color.parseColor)(color, {\n loose: true\n });\n if (parsed === null) {\n return defaultValue;\n }\n return (0, _color.formatColor)({\n ...parsed,\n alpha: alphaValue\n });\n}\nfunction withAlphaVariable({ color , property , variable }) {\n let properties = [].concat(property);\n if (typeof color === \"function\") {\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n color({\n opacityVariable: variable,\n opacityValue: `var(${variable})`\n })\n ];\n }))\n };\n }\n const parsed = (0, _color.parseColor)(color);\n if (parsed === null) {\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n if (parsed.alpha !== undefined) {\n // Has an alpha value, return color as-is\n return Object.fromEntries(properties.map((p)=>[\n p,\n color\n ]));\n }\n return {\n [variable]: \"1\",\n ...Object.fromEntries(properties.map((p)=>{\n return [\n p,\n (0, _color.formatColor)({\n ...parsed,\n alpha: `var(${variable})`\n })\n ];\n }))\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n pattern: ()=>pattern,\n withoutCapturing: ()=>withoutCapturing,\n any: ()=>any,\n optional: ()=>optional,\n zeroOrMore: ()=>zeroOrMore,\n nestedBrackets: ()=>nestedBrackets,\n escape: ()=>escape\n});\nconst REGEX_SPECIAL = /[\\\\^$.*+?()[\\]{}|]/g;\nconst REGEX_HAS_SPECIAL = RegExp(REGEX_SPECIAL.source);\n/**\n * @param {string|RegExp|Array} source\n */ function toSource(source) {\n source = Array.isArray(source) ? source : [\n source\n ];\n source = source.map((item)=>item instanceof RegExp ? item.source : item);\n return source.join(\"\");\n}\nfunction pattern(source) {\n return new RegExp(toSource(source), \"g\");\n}\nfunction withoutCapturing(source) {\n return new RegExp(`(?:${toSource(source)})`, \"g\");\n}\nfunction any(sources) {\n return `(?:${sources.map(toSource).join(\"|\")})`;\n}\nfunction optional(source) {\n return `(?:${toSource(source)})?`;\n}\nfunction zeroOrMore(source) {\n return `(?:${toSource(source)})*`;\n}\nfunction nestedBrackets(open, close, depth = 1) {\n return withoutCapturing([\n escape(open),\n /[^\\s]*/,\n depth === 1 ? `[^${escape(open)}${escape(close)}\\s]*` : any([\n `[^${escape(open)}${escape(close)}\\s]*`,\n nestedBrackets(open, close, depth - 1)\n ]),\n /[^\\s]*/,\n escape(close), \n ]);\n}\nfunction escape(string) {\n return string && REGEX_HAS_SPECIAL.test(string) ? string.replace(REGEX_SPECIAL, \"\\\\$&\") : string || \"\";\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n enumerable: true,\n get: ()=>splitAtTopLevelOnly\n});\nconst _regex = /*#__PURE__*/ _interopRequireWildcard(require(\"../lib/regex\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction* splitAtTopLevelOnly(input, separator) {\n let SPECIALS = new RegExp(`[(){}\\\\[\\\\]${_regex.escape(separator)}]`, \"g\");\n let depth = 0;\n let lastIndex = 0;\n let found = false;\n let separatorIndex = 0;\n let separatorStart = 0;\n let separatorLength = separator.length;\n // Find all paren-like things & character\n // And only split on commas if they're top-level\n for (let match of input.matchAll(SPECIALS)){\n let matchesSeparator = match[0] === separator[separatorIndex];\n let atEndOfSeparator = separatorIndex === separatorLength - 1;\n let matchesFullSeparator = matchesSeparator && atEndOfSeparator;\n if (match[0] === \"(\") depth++;\n if (match[0] === \")\") depth--;\n if (match[0] === \"[\") depth++;\n if (match[0] === \"]\") depth--;\n if (match[0] === \"{\") depth++;\n if (match[0] === \"}\") depth--;\n if (matchesSeparator && depth === 0) {\n if (separatorStart === 0) {\n separatorStart = match.index;\n }\n separatorIndex++;\n }\n if (matchesFullSeparator && depth === 0) {\n found = true;\n yield input.substring(lastIndex, separatorStart);\n lastIndex = separatorStart + separatorLength;\n }\n if (separatorIndex === separatorLength) {\n separatorIndex = 0;\n separatorStart = 0;\n }\n }\n // Provide the last segment of the string if available\n // Otherwise the whole string since no `char`s were found\n // This mirrors the behavior of string.split()\n if (found) {\n yield input.substring(lastIndex);\n } else {\n yield input;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n parseBoxShadowValue: ()=>parseBoxShadowValue,\n formatBoxShadowValue: ()=>formatBoxShadowValue\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n \"inset\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n let shadows = Array.from((0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\"));\n return shadows.map((shadow)=>{\n let value = shadow.trim();\n let result = {\n raw: value\n };\n let parts = value.split(SPACE);\n let seen = new Set();\n for (let part of parts){\n // Reset index, since the regex is stateful.\n LENGTH.lastIndex = 0;\n // Keyword\n if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n result.keyword = part;\n seen.add(\"KEYWORD\");\n } else if (LENGTH.test(part)) {\n if (!seen.has(\"X\")) {\n result.x = part;\n seen.add(\"X\");\n } else if (!seen.has(\"Y\")) {\n result.y = part;\n seen.add(\"Y\");\n } else if (!seen.has(\"BLUR\")) {\n result.blur = part;\n seen.add(\"BLUR\");\n } else if (!seen.has(\"SPREAD\")) {\n result.spread = part;\n seen.add(\"SPREAD\");\n }\n } else {\n if (!result.color) {\n result.color = part;\n } else {\n if (!result.unknown) result.unknown = [];\n result.unknown.push(part);\n }\n }\n }\n // Check if valid\n result.valid = result.x !== undefined && result.y !== undefined;\n return result;\n });\n}\nfunction formatBoxShadowValue(shadows) {\n return shadows.map((shadow)=>{\n if (!shadow.valid) {\n return shadow.raw;\n }\n return [\n shadow.keyword,\n shadow.x,\n shadow.y,\n shadow.blur,\n shadow.spread,\n shadow.color\n ].filter(Boolean).join(\" \");\n }).join(\", \");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n normalize: ()=>normalize,\n url: ()=>url,\n number: ()=>number,\n percentage: ()=>percentage,\n length: ()=>length,\n lineWidth: ()=>lineWidth,\n shadow: ()=>shadow,\n color: ()=>color,\n image: ()=>image,\n gradient: ()=>gradient,\n position: ()=>position,\n familyName: ()=>familyName,\n genericName: ()=>genericName,\n absoluteSize: ()=>absoluteSize,\n relativeSize: ()=>relativeSize\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nlet cssFunctions = [\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nlet COMMA = /,(?![^(]*\\))/g // Comma separator that is not located between brackets. E.g.: `cubiz-bezier(a, b, c)` these don't count.\n;\nlet UNDERSCORE = /_(?![^(]*\\))/g // Underscore separator that is not located between brackets. E.g.: `rgba(255,_255,_255)_black` these don't count.\n;\nfunction normalize(value, isRoot = true) {\n // Keep raw strings if it starts with `url(`\n if (value.includes(\"url(\")) {\n return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n if (/^url\\(.*?\\)$/.test(part)) {\n return part;\n }\n return normalize(part, false);\n }).join(\"\");\n }\n // Convert `_` to ` `, except for escaped underscores `\\_`\n value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n // Remove leftover whitespace\n if (isRoot) {\n value = value.trim();\n }\n // Add spaces around operators inside math functions like calc() that do not follow an operator\n // or '('.\n value = value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n return match.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \");\n });\n return value;\n}\nfunction url(value) {\n return value.startsWith(\"url(\");\n}\nfunction number(value) {\n return !isNaN(Number(value)) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?`).test(value));\n}\nfunction percentage(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return /%$/g.test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?%`).test(part));\n });\n}\nlet lengthUnits = [\n \"cm\",\n \"mm\",\n \"Q\",\n \"in\",\n \"pc\",\n \"pt\",\n \"px\",\n \"em\",\n \"ex\",\n \"ch\",\n \"rem\",\n \"lh\",\n \"vw\",\n \"vh\",\n \"vmin\",\n \"vmax\", \n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n return value.split(UNDERSCORE).every((part)=>{\n return part === \"0\" || new RegExp(`${lengthUnitsPattern}$`).test(part) || cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.+?${lengthUnitsPattern}`).test(part));\n });\n}\nlet lineWidths = new Set([\n \"thin\",\n \"medium\",\n \"thick\"\n]);\nfunction lineWidth(value) {\n return lineWidths.has(value);\n}\nfunction shadow(value) {\n let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n for (let parsedShadow of parsedShadows){\n if (!parsedShadow.valid) {\n return false;\n }\n }\n return true;\n}\nfunction color(value) {\n let colors = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if ((0, _color.parseColor)(part, {\n loose: true\n }) !== null) return colors++, true;\n return false;\n });\n if (!result) return false;\n return colors > 0;\n}\nfunction image(value) {\n let images = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (url(part) || gradient(part) || [\n \"element(\",\n \"image(\",\n \"cross-fade(\",\n \"image-set(\"\n ].some((fn)=>part.startsWith(fn))) {\n images++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return images > 0;\n}\nlet gradientTypes = new Set([\n \"linear-gradient\",\n \"radial-gradient\",\n \"repeating-linear-gradient\",\n \"repeating-radial-gradient\",\n \"conic-gradient\", \n]);\nfunction gradient(value) {\n value = normalize(value);\n for (let type of gradientTypes){\n if (value.startsWith(`${type}(`)) {\n return true;\n }\n }\n return false;\n}\nlet validPositions = new Set([\n \"center\",\n \"top\",\n \"right\",\n \"bottom\",\n \"left\"\n]);\nfunction position(value) {\n let positions = 0;\n let result = value.split(UNDERSCORE).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n if (validPositions.has(part) || length(part) || percentage(part)) {\n positions++;\n return true;\n }\n return false;\n });\n if (!result) return false;\n return positions > 0;\n}\nfunction familyName(value) {\n let fonts = 0;\n let result = value.split(COMMA).every((part)=>{\n part = normalize(part);\n if (part.startsWith(\"var(\")) return true;\n // If it contains spaces, then it should be quoted\n if (part.includes(\" \")) {\n if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n return false;\n }\n }\n // If it starts with a number, it's invalid\n if (/^\\d/g.test(part)) {\n return false;\n }\n fonts++;\n return true;\n });\n if (!result) return false;\n return fonts > 0;\n}\nlet genericNames = new Set([\n \"serif\",\n \"sans-serif\",\n \"monospace\",\n \"cursive\",\n \"fantasy\",\n \"system-ui\",\n \"ui-serif\",\n \"ui-sans-serif\",\n \"ui-monospace\",\n \"ui-rounded\",\n \"math\",\n \"emoji\",\n \"fangsong\", \n]);\nfunction genericName(value) {\n return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n \"xx-small\",\n \"x-small\",\n \"small\",\n \"medium\",\n \"large\",\n \"x-large\",\n \"x-large\",\n \"xxx-large\", \n]);\nfunction absoluteSize(value) {\n return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n \"larger\",\n \"smaller\"\n]);\nfunction relativeSize(value) {\n return relativeSizes.has(value);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n updateAllClasses: ()=>updateAllClasses,\n asValue: ()=>asValue,\n parseColorFormat: ()=>parseColorFormat,\n asColor: ()=>asColor,\n asLookupValue: ()=>asLookupValue,\n coerceValue: ()=>coerceValue\n});\nconst _postcssSelectorParser = /*#__PURE__*/ _interopRequireDefault(require(\"postcss-selector-parser\"));\nconst _escapeCommas = /*#__PURE__*/ _interopRequireDefault(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction updateAllClasses(selectors, updateClass) {\n let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n selectors.walkClasses((sel)=>{\n let updatedClass = updateClass(sel.value);\n sel.value = updatedClass;\n if (sel.raws && sel.raws.value) {\n sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n }\n });\n });\n let result = parser.processSync(selectors);\n return result;\n}\nfunction resolveArbitraryValue(modifier, validate) {\n if (!isArbitraryValue(modifier)) {\n return undefined;\n }\n let value = modifier.slice(1, -1);\n if (!validate(value)) {\n return undefined;\n }\n return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n let positiveValue = lookup[modifier];\n if (positiveValue !== undefined) {\n return (0, _negateValue.default)(positiveValue);\n }\n if (isArbitraryValue(modifier)) {\n let resolved = resolveArbitraryValue(modifier, validate);\n if (resolved === undefined) {\n return undefined;\n }\n return (0, _negateValue.default)(resolved);\n }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true } = {}) {\n var ref;\n let value = (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n if (value !== undefined) {\n return value;\n }\n if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n return asNegativeValue(modifier.slice(1), options.values, validate);\n }\n return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitAlpha(modifier) {\n let slashIdx = modifier.lastIndexOf(\"/\");\n if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n return [\n modifier\n ];\n }\n return [\n modifier.slice(0, slashIdx),\n modifier.slice(slashIdx + 1)\n ];\n}\nfunction parseColorFormat(value) {\n if (typeof value === \"string\" && value.includes(\"\")) {\n let oldValue = value;\n return ({ opacityValue =1 })=>oldValue.replace(\"\", opacityValue);\n }\n return value;\n}\nfunction asColor(modifier, options = {}, { tailwindConfig ={} } = {}) {\n var ref;\n if (((ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier]) !== undefined) {\n var ref1;\n return parseColorFormat((ref1 = options.values) === null || ref1 === void 0 ? void 0 : ref1[modifier]);\n }\n let [color, alpha] = splitAlpha(modifier);\n if (alpha !== undefined) {\n var ref2, ref3, ref4;\n var ref5;\n let normalizedColor = (ref5 = (ref2 = options.values) === null || ref2 === void 0 ? void 0 : ref2[color]) !== null && ref5 !== void 0 ? ref5 : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n if (normalizedColor === undefined) {\n return undefined;\n }\n normalizedColor = parseColorFormat(normalizedColor);\n if (isArbitraryValue(alpha)) {\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, alpha.slice(1, -1));\n }\n if (((ref3 = tailwindConfig.theme) === null || ref3 === void 0 ? void 0 : (ref4 = ref3.opacity) === null || ref4 === void 0 ? void 0 : ref4[alpha]) === undefined) {\n return undefined;\n }\n return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n }\n return asValue(modifier, options, {\n validate: _dataTypes.color\n });\n}\nfunction asLookupValue(modifier, options = {}) {\n var ref;\n return (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n}\nfunction guess(validate) {\n return (modifier, options)=>{\n return asValue(modifier, options, {\n validate\n });\n };\n}\nlet typeMap = {\n any: asValue,\n color: asColor,\n url: guess(_dataTypes.url),\n image: guess(_dataTypes.image),\n length: guess(_dataTypes.length),\n percentage: guess(_dataTypes.percentage),\n position: guess(_dataTypes.position),\n lookup: asLookupValue,\n \"generic-name\": guess(_dataTypes.genericName),\n \"family-name\": guess(_dataTypes.familyName),\n number: guess(_dataTypes.number),\n \"line-width\": guess(_dataTypes.lineWidth),\n \"absolute-size\": guess(_dataTypes.absoluteSize),\n \"relative-size\": guess(_dataTypes.relativeSize),\n shadow: guess(_dataTypes.shadow)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n let idx = input.indexOf(delim);\n if (idx === -1) return [\n undefined,\n input\n ];\n return [\n input.slice(0, idx),\n input.slice(idx + 1)\n ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n if (isArbitraryValue(modifier)) {\n let arbitraryValue = modifier.slice(1, -1);\n let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n // It could be that this resolves to `url(https` which is not a valid\n // identifier. We currently only support \"simple\" words with dashes or\n // underscores. E.g.: family-name\n if (!/^[\\w-_]+$/g.test(explicitType)) {\n value = arbitraryValue;\n } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n return [];\n }\n if (value.length > 0 && supportedTypes.includes(explicitType)) {\n return [\n asValue(`[${value}]`, options),\n explicitType\n ];\n }\n }\n // Find first matching type\n for (let type of [].concat(types)){\n let result = typeMap[type](modifier, options, {\n tailwindConfig\n });\n if (result !== undefined) return [\n result,\n type\n ];\n }\n return [];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>toColorValue\n});\nfunction toColorValue(maybeFunction) {\n return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interopRequireDefault(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interopRequireDefault(require(\"./configurePlugins\"));\nconst _defaultConfigStub = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub\"));\nconst _colors = /*#__PURE__*/ _interopRequireDefault(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interopRequireDefault(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interopRequireDefault(require(\"./toColorValue\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction isFunction(input) {\n return typeof input === \"function\";\n}\nfunction isObject(input) {\n return typeof input === \"object\" && input !== null;\n}\nfunction mergeWith(target, ...sources) {\n let customizer = sources.pop();\n for (let source of sources){\n for(let k in source){\n let merged = customizer(target[k], source[k]);\n if (merged === undefined) {\n if (isObject(target[k]) && isObject(source[k])) {\n target[k] = mergeWith(target[k], source[k], customizer);\n } else {\n target[k] = source[k];\n }\n } else {\n target[k] = merged;\n }\n }\n }\n return target;\n}\nconst configUtils = {\n colors: _colors.default,\n negative (scale) {\n // TODO: Log that this function isn't really needed anymore?\n return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n let negativeValue = (0, _negateValue.default)(scale[key]);\n if (negativeValue !== undefined) {\n negativeScale[`-${key}`] = negativeValue;\n }\n return negativeScale;\n }, {});\n },\n breakpoints (screens) {\n return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n ...breakpoints,\n [`screen-${key}`]: screens[key]\n }), {});\n }\n};\nfunction value(valueToResolve, ...args) {\n return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n return items.reduce((merged, { extend })=>{\n return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n if (mergedValue === undefined) {\n return [\n extendValue\n ];\n }\n if (Array.isArray(mergedValue)) {\n return [\n extendValue,\n ...mergedValue\n ];\n }\n return [\n extendValue,\n mergedValue\n ];\n });\n }, {});\n}\nfunction mergeThemes(themes) {\n return {\n ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n // In order to resolve n config objects, we combine all of their `extend` properties\n // into arrays instead of objects so they aren't overridden.\n extend: collectExtends(themes)\n };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n // When we have an array of objects, we do want to merge it\n if (Array.isArray(merged) && isObject(merged[0])) {\n return merged.concat(value);\n }\n // When the incoming value is an array, and the existing config is an object, prepend the existing object\n if (Array.isArray(value) && isObject(value[0]) && isObject(merged)) {\n return [\n merged,\n ...value\n ];\n }\n // Override arrays (for example for font-families, box-shadows, ...)\n if (Array.isArray(value)) {\n return value;\n }\n // Execute default behaviour\n return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n return mergeWith(theme, extend, (themeValue, extensions)=>{\n // The `extend` property is an array, so we need to check if it contains any functions\n if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n }\n return (resolveThemePath, utils)=>mergeWith({}, ...[\n themeValue,\n ...extensions\n ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable}\n */ function* toPaths(key) {\n let path = (0, _toPath.toPath)(key);\n if (path.length === 0) {\n return;\n }\n yield path;\n if (Array.isArray(key)) {\n return;\n }\n let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n let matches = key.match(pattern);\n if (matches !== null) {\n let [, prefix, alpha] = matches;\n let newPath = (0, _toPath.toPath)(prefix);\n newPath.alpha = alpha;\n yield newPath;\n }\n}\nfunction resolveFunctionKeys(object) {\n // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n const resolvePath = (key, defaultValue)=>{\n for (const path of toPaths(key)){\n let index = 0;\n let val = object;\n while(val !== undefined && val !== null && index < path.length){\n val = val[path[index++]];\n let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n }\n if (val !== undefined) {\n if (path.alpha !== undefined) {\n let normalized = (0, _pluginUtils.parseColorFormat)(val);\n return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n }\n if ((0, _isPlainObject.default)(val)) {\n return (0, _cloneDeep.cloneDeep)(val);\n }\n return val;\n }\n }\n return defaultValue;\n };\n Object.assign(resolvePath, {\n theme: resolvePath,\n ...configUtils\n });\n return Object.keys(object).reduce((resolved, key)=>{\n resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n return resolved;\n }, {});\n}\nfunction extractPluginConfigs(configs) {\n let allConfigs = [];\n configs.forEach((config)=>{\n allConfigs = [\n ...allConfigs,\n config\n ];\n var ref;\n const plugins = (ref = config === null || config === void 0 ? void 0 : config.plugins) !== null && ref !== void 0 ? ref : [];\n if (plugins.length === 0) {\n return;\n }\n plugins.forEach((plugin)=>{\n if (plugin.__isOptionsFunction) {\n plugin = plugin();\n }\n var ref;\n allConfigs = [\n ...allConfigs,\n ...extractPluginConfigs([\n (ref = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && ref !== void 0 ? ref : {}\n ])\n ];\n });\n });\n return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n const result = [\n ...corePluginConfigs\n ].reduceRight((resolved, corePluginConfig)=>{\n if (isFunction(corePluginConfig)) {\n return corePluginConfig({\n corePlugins: resolved\n });\n }\n return (0, _configurePlugins.default)(corePluginConfig, resolved);\n }, _corePluginList.default);\n return result;\n}\nfunction resolvePluginLists(pluginLists) {\n const result = [\n ...pluginLists\n ].reduceRight((resolved, pluginList)=>{\n return [\n ...resolved,\n ...pluginList\n ];\n }, []);\n return result;\n}\nfunction resolveConfig(configs) {\n let allConfigs = [\n ...extractPluginConfigs(configs),\n {\n prefix: \"\",\n important: false,\n separator: \":\",\n variantOrder: _defaultConfigStub.default.variantOrder\n }, \n ];\n var ref, ref1;\n return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n return (ref = t === null || t === void 0 ? void 0 : t.theme) !== null && ref !== void 0 ? ref : {};\n })))),\n corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n plugins: resolvePluginLists(configs.map((c)=>{\n return (ref1 = c === null || c === void 0 ? void 0 : c.plugins) !== null && ref1 !== void 0 ? ref1 : [];\n }))\n }, ...allConfigs));\n}\n","export default {\n yellow: (s) => s,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n flagEnabled: ()=>flagEnabled,\n issueFlagNotices: ()=>issueFlagNotices,\n default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"./util/log\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nlet defaults = {\n optimizeUniversalDefaults: false\n};\nlet featureFlags = {\n future: [\n \"hoverOnlyWhenSupported\",\n \"respectDefaultRingColorOpacity\"\n ],\n experimental: [\n \"optimizeUniversalDefaults\",\n \"matchVariant\" /* , 'variantGrouping' */ \n ]\n};\nfunction flagEnabled(config, flag) {\n if (featureFlags.future.includes(flag)) {\n var ref;\n var ref1, ref2;\n return config.future === \"all\" || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);\n }\n if (featureFlags.experimental.includes(flag)) {\n var ref3;\n var ref4, ref5;\n return config.experimental === \"all\" || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);\n }\n return false;\n}\nfunction experimentalFlagsEnabled(config) {\n if (config.experimental === \"all\") {\n return featureFlags.experimental;\n }\n var ref;\n return Object.keys((ref = config === null || config === void 0 ? void 0 : config.experimental) !== null && ref !== void 0 ? ref : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n if (process.env.JEST_WORKER_ID !== undefined) {\n return;\n }\n if (experimentalFlagsEnabled(config).length > 0) {\n let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n _log.default.warn(\"experimental-flags-enabled\", [\n `You have enabled experimental features: ${changes}`,\n \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\", \n ]);\n }\n}\nconst _default = featureFlags;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>getAllConfigs\n});\nconst _defaultConfigStubJs = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction getAllConfigs(config) {\n var ref;\n const configs = ((ref = config === null || config === void 0 ? void 0 : config.presets) !== null && ref !== void 0 ? ref : [\n _defaultConfigStubJs.default\n ]).slice().reverse().flatMap((preset)=>getAllConfigs(typeof preset === \"function\" ? preset() : preset));\n const features = {\n // Add experimental configs here...\n respectDefaultRingColorOpacity: {\n theme: {\n ringColor: {\n DEFAULT: \"#3b82f67f\"\n }\n }\n }\n };\n const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n return [\n config,\n ...experimentals,\n ...configs\n ];\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: ()=>resolveConfig\n});\nconst _resolveConfig = /*#__PURE__*/ _interopRequireDefault(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interopRequireDefault(require(\"../util/getAllConfigs\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\nfunction resolveConfig(...configs) {\n let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n return (0, _resolveConfig.default)([\n ...configs,\n ...defaultConfigs\n ]);\n}\n","let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n","import type { Yoga } from 'yoga-wasm-web'\n\nlet yogaInstance: Yoga\n\nexport function init(yoga: Yoga) {\n yogaInstance = yoga\n}\n\nlet initializationPromise = null\n\nexport default async function getYoga(): Promise {\n if (yogaInstance) return yogaInstance\n\n if (initializationPromise) {\n await initializationPromise\n return yogaInstance\n }\n\n initializationPromise = import('@yoga')\n .then((mod) => mod.getYogaModule())\n .then((yoga) => (yogaInstance = yoga))\n\n await initializationPromise\n initializationPromise = null\n\n return yogaInstance\n}\n","var e=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports);var u=e((k,g)=>{g.exports=[\"em\",\"ex\",\"ch\",\"rem\",\"vh\",\"vw\",\"vmin\",\"vmax\",\"px\",\"mm\",\"cm\",\"in\",\"pt\",\"pc\",\"mozmm\"]});var a=e((z,v)=>{v.exports=[\"deg\",\"grad\",\"rad\",\"turn\"]});var c=e((L,w)=>{w.exports=[\"dpi\",\"dpcm\",\"dppx\"]});var h=e(($,y)=>{y.exports=[\"Hz\",\"kHz\"]});var m=e((j,b)=>{b.exports=[\"s\",\"ms\"]});var q=u(),f=a(),p=c(),l=h(),d=m();function s(t){if(/\\.\\D?$/.test(t))throw new Error(\"The dot should be followed by a number\");if(/^[+-]{2}/.test(t))throw new Error(\"Only one leading +/- is allowed\");if(x(t)>1)throw new Error(\"Only one dot is allowed\");if(/%$/.test(t)){this.type=\"percentage\",this.value=o(t),this.unit=\"%\";return}var r=O(t);if(!r){this.type=\"number\",this.value=o(t);return}this.type=F(r),this.value=o(t.substr(0,t.length-r.length)),this.unit=r}s.prototype.valueOf=function(){return this.value};s.prototype.toString=function(){return this.value+(this.unit||\"\")};function U(t){return new s(t)}function x(t){var r=t.match(/\\./g);return r?r.length:0}function o(t){var r=parseFloat(t);if(isNaN(r))throw new Error(\"Invalid number: \"+t);return r}var E=[].concat(f,l,q,p,d);function O(t){var r=t.match(/\\D+$/),n=r&&r[0];if(n&&E.indexOf(n)===-1)throw new Error(\"Invalid unit: \"+n);return n}var D=Object.assign(i(f,\"angle\"),i(l,\"frequency\"),i(p,\"resolution\"),i(d,\"time\"));function i(t,r){return Object.fromEntries(t.map(n=>[n,r]))}function F(t){return D[t]||\"length\"}export{U as default};\n","import type { ReactNode, ReactElement } from 'react'\n\nimport CssDimension from './vendor/parse-css-dimension/index.js'\nimport LineBreaker from 'linebreak'\n\nexport function isReactElement(node: ReactNode): node is ReactElement {\n const type = typeof node\n if (\n type === 'number' ||\n type === 'bigint' ||\n type === 'string' ||\n type === 'boolean'\n ) {\n return false\n }\n return true\n}\n\nexport function isClass(f: Function) {\n return /^class\\s/.test(f.toString())\n}\n\nexport function hasDangerouslySetInnerHTMLProp(props: any) {\n return 'dangerouslySetInnerHTML' in props\n}\n\nexport function normalizeChildren(children: any) {\n const flattend =\n typeof children === 'undefined' ? [] : [].concat(children).flat(Infinity)\n\n const res = []\n for (let i = 0; i < flattend.length; i++) {\n let value = flattend[i]\n if (\n typeof value === 'undefined' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n continue\n }\n if (typeof value === 'number') {\n value = String(value)\n }\n if (\n typeof value === 'string' &&\n res.length &&\n typeof res[res.length - 1] === 'string'\n ) {\n res[res.length - 1] += value\n } else {\n res.push(value)\n }\n }\n return res\n}\n\nexport function lengthToNumber(\n length: string | number,\n baseFontSize: number,\n baseLength: number,\n inheritedStyle: Record,\n percentage = false\n): number | undefined {\n if (typeof length === 'number') return length\n\n // Convert em and rem values to number (px), convert rad to deg.\n try {\n length = length.trim()\n\n // Not length: `1px/2px`, `1px 2px`, `1px, 2px`, `calc(1px)`.\n if (/[ /\\(,]/.test(length)) return\n\n // Just a number as string: '100'\n if (length === String(+length)) return +length\n\n const parsed = new CssDimension(length)\n if (parsed.type === 'length') {\n switch (parsed.unit) {\n case 'em':\n return parsed.value * baseFontSize\n case 'rem':\n return parsed.value * 16\n case 'vw':\n return ~~(\n (parsed.value * (inheritedStyle._viewportWidth as number)) /\n 100\n )\n case 'vh':\n return ~~(\n (parsed.value * (inheritedStyle._viewportHeight as number)) /\n 100\n )\n default:\n return parsed.value\n }\n } else if (parsed.type === 'angle') {\n return calcDegree(length)\n } else if (parsed.type === 'percentage') {\n if (percentage) {\n return (parsed.value / 100) * baseLength\n }\n }\n } catch {\n // Not a length unit, silently ignore.\n }\n}\n\nexport function calcDegree(deg: string) {\n const parsed = new CssDimension(deg)\n\n switch (parsed.unit) {\n case 'deg':\n return parsed.value\n case 'rad':\n return (parsed.value * 180) / Math.PI\n case 'turn':\n return parsed.value * 360\n case 'grad':\n return 0.9 * parsed.value\n }\n}\n\n// Multiplies two 2d transform matrices.\nexport function multiply(m1: number[], m2: number[]) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ]\n}\n\nexport function v(\n field: string | number | undefined,\n map: Record,\n fallback: any,\n errorIfNotAllowedForProperty?: string\n) {\n let value = map[field]\n if (typeof value === 'undefined') {\n if (errorIfNotAllowedForProperty && typeof field !== 'undefined') {\n throw new Error(\n `Invalid value for CSS property \"${errorIfNotAllowedForProperty}\". Allowed values: ${Object.keys(\n map\n )\n .map((_v) => `\"${_v}\"`)\n .join(' | ')}. Received: \"${field}\".`\n )\n }\n value = fallback\n }\n return value\n}\n\nlet wordSegmenter\nlet graphemeSegmenter\n\n// Implementation modified from\n// https://github.com/niklasvh/html2canvas/blob/6521a487d78172f7179f7c973c1a3af40eb92009/src/css/layout/text.ts\n// https://drafts.csswg.org/css-text/#word-separator\nexport const wordSeparators = [\n 0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091, 0xa,\n].map((point) => String.fromCodePoint(point))\n\nexport function segment(\n content: string,\n granularity: 'word' | 'grapheme',\n locale?: string\n): string[] {\n if (!wordSegmenter || !graphemeSegmenter) {\n if (!(typeof Intl !== 'undefined' && 'Segmenter' in Intl)) {\n // https://caniuse.com/mdn-javascript_builtins_intl_segments\n throw new Error(\n 'Intl.Segmenter does not exist, please use import a polyfill.'\n )\n }\n\n wordSegmenter = new Intl.Segmenter(locale, { granularity: 'word' })\n graphemeSegmenter = new Intl.Segmenter(locale, {\n granularity: 'grapheme',\n })\n }\n\n if (granularity === 'grapheme') {\n return [...graphemeSegmenter.segment(content)].map((seg) => seg.segment)\n } else {\n const segmented = [...wordSegmenter.segment(content)].map(\n (seg) => seg.segment\n ) as string[]\n\n const output = []\n\n let i = 0\n // When there is a non-breaking space, join the previous and next words together.\n // This change causes them to be treated as a single segment.\n while (i < segmented.length) {\n const s = segmented[i]\n\n if (s == '\\u00a0') {\n const previousWord = i === 0 ? '' : output.pop()\n const nextWord = i === segmented.length - 1 ? '' : segmented[i + 1]\n\n output.push(previousWord + '\\u00a0' + nextWord)\n i += 2\n } else {\n output.push(s)\n i++\n }\n }\n\n return output\n }\n}\n\nexport function buildXMLString(\n type: string,\n attrs: Record,\n children?: string\n) {\n let attrString = ''\n\n for (const [k, _v] of Object.entries(attrs)) {\n if (typeof _v !== 'undefined') {\n attrString += ` ${k}=\"${_v}\"`\n }\n }\n\n if (children) {\n return `<${type}${attrString}>${children}`\n }\n return `<${type}${attrString}/>`\n}\n\nexport function createLRU(max = 20) {\n const store: Map = new Map()\n function set(key: string, value: T) {\n if (store.size >= max) {\n const keyToDelete = store.keys().next().value\n store.delete(keyToDelete)\n }\n store.set(key, value)\n }\n function get(key: string): T | undefined {\n const hasKey = store.has(key)\n if (!hasKey) return undefined\n\n const entry = store.get(key)!\n store.delete(key)\n store.set(key, entry)\n return entry\n }\n function clear() {\n store.clear()\n }\n\n return {\n set,\n get,\n clear,\n }\n}\n\nexport function parseViewBox(viewBox?: string | null | undefined) {\n return viewBox ? viewBox.split(/[, ]/).filter(Boolean).map(Number) : null\n}\n\nexport function toString(x: unknown): string {\n return Object.prototype.toString.call(x)\n}\n\nexport function isString(x: unknown): x is string {\n return typeof x === 'string'\n}\n\nexport function isNumber(x: unknown): x is number {\n return typeof x === 'number'\n}\n\nexport function isUndefined(x: unknown): x is undefined {\n return toString(x) === '[object Undefined]'\n}\n\nexport function splitByBreakOpportunities(\n content: string,\n wordBreak: string\n): {\n words: string[]\n requiredBreaks: boolean[]\n} {\n if (wordBreak === 'break-all') {\n return { words: segment(content, 'grapheme'), requiredBreaks: [] }\n }\n\n if (wordBreak === 'keep-all') {\n return { words: segment(content, 'word'), requiredBreaks: [] }\n }\n\n const breaker = new LineBreaker(content)\n let last = 0\n let bk = breaker.nextBreak()\n const words = []\n const requiredBreaks = [false]\n\n while (bk) {\n const word = content.slice(last, bk.position)\n words.push(word)\n\n if (bk.required) {\n requiredBreaks.push(true)\n } else {\n requiredBreaks.push(false)\n }\n\n last = bk.position\n bk = breaker.nextBreak()\n }\n\n return { words, requiredBreaks }\n}\n\nexport const midline = (s: string) => {\n return s.replaceAll(\n /([A-Z])/g,\n (_, letter: string) => `-${letter.toLowerCase()}`\n )\n}\n\nexport function splitEffects(\n input: string,\n separator: string | RegExp = ','\n): string[] {\n const result = []\n let l = 0\n let parenCount = 0\n separator = new RegExp(separator)\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '(') {\n parenCount++\n } else if (input[i] === ')') {\n parenCount--\n }\n\n if (parenCount === 0 && separator.test(input[i])) {\n result.push(input.slice(l, i).trim())\n l = i + 1\n }\n }\n\n result.push(input.slice(l).trim())\n\n return result\n}\n","/**\n * This module is used to fetch image from the given URL and resolve it as\n * base64 inlined data URI, so the toolchain can process it.\n * The image data will be cached in a LRU so we don't need to fetch it again\n * in new render processes. But to invalidate the cache the workaround is to\n * add a random query string to the URL.\n * TODO: We might want another option to disable image caching by default.\n */\n\nconst AVIF = 'image/avif'\nconst WEBP = 'image/webp'\nconst APNG = 'image/apng'\nconst PNG = 'image/png'\nconst JPEG = 'image/jpeg'\nconst GIF = 'image/gif'\nconst SVG = 'image/svg+xml'\n\nfunction parseJPEG(buf: ArrayBuffer) {\n const view = new DataView(buf)\n\n // Skip magic bytes\n let offset = 4\n\n const len = view.byteLength\n while (offset < len) {\n const i = view.getUint16(offset, false)\n\n if (i > len) {\n throw new TypeError('Invalid JPEG')\n }\n\n const next = view.getUint8(i + 1 + offset)\n if (next === 0xc0 || next === 0xc1 || next === 0xc2) {\n return [\n view.getUint16(i + 7 + offset, false),\n view.getUint16(i + 5 + offset, false),\n ] as [number, number]\n }\n\n // TODO: Support orientations from EXIF.\n\n offset += i + 2\n }\n\n throw new TypeError('Invalid JPEG')\n}\n\nfunction parseGIF(buf: ArrayBuffer) {\n const view = new Uint8Array(buf.slice(6, 10))\n return [view[0] | (view[1] << 8), view[2] | (view[3] << 8)] as [\n number,\n number\n ]\n}\n\nfunction parsePNG(buf: ArrayBuffer) {\n const v = new DataView(buf)\n return [v.getUint16(18, false), v.getUint16(22, false)] as [number, number]\n}\n\nimport { createLRU, parseViewBox } from '../utils.js'\n\ntype ResolvedImageData = [string, number?, number?] | readonly []\nexport const cache = createLRU(100)\nexport const inflightRequests = new Map>()\n\nconst ALLOWED_IMAGE_TYPES = [PNG, APNG, JPEG, GIF, SVG]\n\nfunction arrayBufferToBase64(buffer) {\n let binary = ''\n const bytes = new Uint8Array(buffer)\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i])\n }\n return btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n let binaryString = atob(base64)\n let len = binaryString.length\n let bytes = new Uint8Array(len)\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i)\n }\n return bytes.buffer\n}\n\nfunction parseSvgImageSize(src: string, data: string) {\n // Parse the SVG image size\n const svgTag = data.match(/]*>/)[0]\n\n const viewBoxStr = svgTag.match(/viewBox=['\"](.+)['\"]/)\n let viewBox = viewBoxStr ? parseViewBox(viewBoxStr[1]) : null\n\n const width = svgTag.match(/width=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n const height = svgTag.match(/height=['\"](\\d*\\.\\d+|\\d+)['\"]/)\n\n if (!viewBox && (!width || !height)) {\n throw new Error(`Failed to parse SVG from ${src}: missing \"viewBox\"`)\n }\n\n const size = viewBox ? [viewBox[2], viewBox[3]] : [+width[1], +height[1]]\n\n const ratio = size[0] / size[1]\n const imageSize: [number, number] =\n width && height\n ? [+width[1], +height[1]]\n : width\n ? [+width[1], +width[1] / ratio]\n : height\n ? [+height[1] * ratio, +height[1]]\n : [size[0], size[1]]\n\n return imageSize\n}\n\nfunction arrayBufferToDataUri(data: ArrayBuffer) {\n let imageSize: [number, number]\n\n const imageType = detectContentType(new Uint8Array(data))\n\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n\n if (!ALLOWED_IMAGE_TYPES.includes(imageType)) {\n throw new Error(`Unsupported image type: ${imageType || 'unknown'}`)\n }\n return [\n `data:${imageType};base64,${arrayBufferToBase64(data)}`,\n imageSize,\n ] as const\n}\n\nexport async function resolveImageData(\n src: string | ArrayBuffer\n): Promise {\n if (!src) {\n throw new Error('Image source is not provided.')\n }\n\n // ArrayBuffer\n if (typeof src === 'object') {\n const [newSrc, imageSize] = arrayBufferToDataUri(src)\n return [newSrc, ...imageSize] as ResolvedImageData\n }\n\n if (\n (src.startsWith('\"') && src.endsWith('\"')) ||\n (src.startsWith(\"'\") && src.endsWith(\"'\"))\n ) {\n src = src.slice(1, -1)\n }\n\n // Throw error if the image source is not an absolute URL in server environment\n // Should be after slicing quotes to avoid throwing error too early\n if (typeof window === 'undefined') {\n if (!src.startsWith('http') && !src.startsWith('data:')) {\n throw new Error(`Image source must be an absolute URL: ${src}`)\n }\n }\n\n if (src.startsWith('data:')) {\n let decodedURI: { imageType; encodingType; dataString }\n\n try {\n decodedURI =\n /data:(?[a-z/+]+)(;[^;=]+=[^;=]+)*?(;(?[^;,]+))?,(?.*)/g.exec(\n src\n ).groups as typeof decodedURI\n } catch (err) {\n console.warn('Image data URI resolved without size:' + src)\n return [src]\n }\n\n const { imageType, encodingType, dataString } = decodedURI\n if (imageType === SVG) {\n const utf8Src =\n encodingType === 'base64'\n ? atob(dataString)\n : decodeURIComponent(dataString.replace(/ /g, '%20'))\n const base64Src =\n encodingType === 'base64'\n ? src\n : `data:image/svg+xml;base64,${btoa(utf8Src)}`\n let imageSize = parseSvgImageSize(src, utf8Src)\n cache.set(src, [base64Src, ...imageSize])\n return [base64Src, ...imageSize]\n } else if (encodingType === 'base64') {\n let imageSize: [number, number]\n const data = base64ToArrayBuffer(dataString)\n switch (imageType) {\n case PNG:\n case APNG:\n imageSize = parsePNG(data)\n break\n case GIF:\n imageSize = parseGIF(data)\n break\n case JPEG:\n imageSize = parseJPEG(data)\n break\n }\n cache.set(src, [src, ...imageSize])\n return [src, ...imageSize]\n } else {\n console.warn('Image data URI resolved without size:' + src)\n cache.set(src, [src])\n return [src]\n }\n }\n\n if (!globalThis.fetch) {\n throw new Error('`fetch` is required to be polyfilled to load images.')\n }\n\n if (inflightRequests.has(src)) {\n return inflightRequests.get(src)\n }\n const cached = cache.get(src)\n if (cached) {\n return cached\n }\n\n const url = src\n const promise = fetch(url)\n .then((res): Promise => {\n const type = res.headers.get('content-type')\n\n // Handle SVG specially\n if (type === 'image/svg+xml' || type === 'application/svg+xml') {\n return res.text()\n }\n\n return res.arrayBuffer()\n })\n .then((data) => {\n if (typeof data === 'string') {\n try {\n const newSrc = `data:image/svg+xml;base64,${btoa(data)}`\n // Parse the SVG image size\n const imageSize = parseSvgImageSize(url, data)\n return [newSrc, ...imageSize] as ResolvedImageData\n } catch (e) {\n throw new Error(`Failed to parse SVG image: ${e.message}`)\n }\n }\n\n const [newSrc, imageSize] = arrayBufferToDataUri(data)\n return [newSrc, ...imageSize] as ResolvedImageData\n })\n .then((result) => {\n cache.set(url, result)\n return result\n })\n .catch((err) => {\n console.error(`Can't load image ${url}: ` + err.message)\n cache.set(url, [])\n return [] as const\n })\n\n inflightRequests.set(url, promise)\n return promise\n}\n\n/**\n * Inspects the first few bytes of a buffer to determine if\n * it matches the \"magic number\" of known file signatures.\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n */\nfunction detectContentType(buffer: Uint8Array) {\n if ([0xff, 0xd8, 0xff].every((b, i) => buffer[i] === b)) {\n return JPEG\n }\n if (\n [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a].every(\n (b, i) => buffer[i] === b\n )\n ) {\n if (detectAPNG(buffer)) {\n return APNG\n }\n return PNG\n }\n if ([0x47, 0x49, 0x46, 0x38].every((b, i) => buffer[i] === b)) {\n return GIF\n }\n if (\n [0x52, 0x49, 0x46, 0x46, 0, 0, 0, 0, 0x57, 0x45, 0x42, 0x50].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return WEBP\n }\n if ([0x3c, 0x3f, 0x78, 0x6d, 0x6c].every((b, i) => buffer[i] === b)) {\n return SVG\n }\n if (\n [0, 0, 0, 0, 0x66, 0x74, 0x79, 0x70, 0x61, 0x76, 0x69, 0x66].every(\n (b, i) => !b || buffer[i] === b\n )\n ) {\n return AVIF\n }\n return null\n}\n\nfunction detectAPNG(bytes: Uint8Array) {\n const dv = new DataView(bytes.buffer)\n let type: string,\n length: number,\n off = 8,\n isAPNG = false\n while (!isAPNG && type !== 'IEND' && off < bytes.length) {\n length = dv.getUint32(off)\n const chars = bytes.subarray(off + 4, off + 8)\n type = String.fromCharCode(...chars)\n isAPNG = type === 'acTL'\n off += 12 + length\n }\n return isAPNG\n}\n","import type { ReactElement, ReactNode } from 'react'\nimport { resolveImageData, cache } from './image.js'\nimport { isReactElement, parseViewBox, midline } from '../utils.js'\n\n// Based on\n// https://raw.githubusercontent.com/facebook/react/master/packages/react-dom/src/shared/possibleStandardNames.js\nconst ATTRIBUTE_MAPPING = {\n accentHeight: 'accent-height',\n alignmentBaseline: 'alignment-baseline',\n arabicForm: 'arabic-form',\n baselineShift: 'baseline-shift',\n capHeight: 'cap-height',\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n dominantBaseline: 'dominant-baseline',\n enableBackground: 'enable-background',\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n href: 'href',\n imageRendering: 'image-rendering',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pointerEvents: 'pointer-events',\n renderingIntent: 'rendering-intent',\n shapeRendering: 'shape-rendering',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n vectorEffect: 'vector-effect',\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n xHeight: 'x-height',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n xmlnsXlink: 'xmlns:xlink',\n} as const\n\n// From https://github.com/yoksel/url-encoder/blob/master/src/js/script.js\nconst SVGSymbols = /[\\r\\n%#()<>?[\\\\\\]^`{|}\"']/g\n\nfunction translateSVGNodeToSVGString(\n node: ReactElement | string | (ReactElement | string)[],\n inheritedColor: string\n): string {\n if (!node) return ''\n if (Array.isArray(node)) {\n return node\n .map((n) => translateSVGNodeToSVGString(n, inheritedColor))\n .join('')\n }\n if (typeof node !== 'object') return String(node)\n\n const type = node.type\n if (type === 'text') {\n throw new Error(\n ' nodes are not currently supported, please convert them to '\n )\n }\n\n const { children, style, ...restProps } = node.props || {}\n const currentColor = style?.color || inheritedColor\n\n const attrs = `${Object.entries(restProps)\n .map(([k, _v]) => {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n\n if (k === 'href' && type === 'image') {\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${cache.get(_v as string)[0]}\"`\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}`\n\n const styles = style\n ? ` style=\"${Object.entries(style)\n .map(([k, _v]) => `${midline(k)}:${_v}`)\n .join(';')}\"`\n : ''\n\n return `<${type}${attrs}${styles}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}`\n}\n/**\n * pre process node and resolve absolute link to img data for image element\n * @param node ReactNode\n * @returns\n */\nexport async function preProcessNode(node: ReactNode) {\n const set = new Set()\n const walk = (_node: ReactNode) => {\n if (!_node) return\n if (!isReactElement(_node)) return\n\n if (Array.isArray(_node)) {\n _node.forEach((v) => walk(v))\n return\n } else if (typeof _node === 'object') {\n if (_node.type === 'image') {\n if (set.has(_node.props.href)) {\n // do nothing\n } else {\n set.add(_node.props.href)\n }\n } else if (_node.type === 'img') {\n if (set.has(_node.props.src)) {\n // do nothing\n } else {\n set.add(_node.props.src)\n }\n } else {\n // do nothing\n }\n }\n\n Array.isArray(_node.props.children)\n ? _node.props.children.map((c) => walk(c))\n : walk(_node.props.children)\n }\n\n walk(node)\n\n return Promise.all(Array.from(set).map((s) => resolveImageData(s)))\n}\n\nexport async function SVGNodeToImage(\n node: ReactElement,\n inheritedColor: string\n): Promise {\n let {\n viewBox,\n viewbox,\n width,\n height,\n className,\n style,\n children,\n ...restProps\n } = node.props || {}\n\n viewBox ||= viewbox\n\n // We directly assign the xmlns attribute here to deduplicate.\n restProps.xmlns = 'http://www.w3.org/2000/svg'\n\n const currentColor = style?.color || inheritedColor\n const viewBoxSize = parseViewBox(viewBox)\n\n // ratio = height / width\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n width = width || (ratio && height) ? height / ratio : null\n height = height || (ratio && width) ? width * ratio : null\n\n restProps.width = width\n restProps.height = height\n if (viewBox) restProps.viewBox = viewBox\n\n return `data:image/svg+xml;utf8,${` {\n if (typeof _v === 'string' && _v.toLowerCase() === 'currentcolor') {\n _v = currentColor\n }\n return ` ${ATTRIBUTE_MAPPING[k] || k}=\"${_v}\"`\n })\n .join('')}>${translateSVGNodeToSVGString(\n children,\n currentColor\n )}`.replace(SVGSymbols, encodeURIComponent)}`\n}\n","/**\n * Pre-defined styles for elements. Here we hand pick some from Chromium's\n * default styles:\n * https://chromium.googlesource.com/chromium/blink/+/master/Source/core/css/html.css\n *\n * We try to only include commonly used, styling elements rather than semantic elements.\n */\n\nconst DEFAULT_DISPLAY = 'flex'\n\nexport default {\n // Generic block-level elements\n p: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n },\n div: {\n display: DEFAULT_DISPLAY,\n },\n blockquote: {\n display: DEFAULT_DISPLAY,\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 40,\n marginRight: 40,\n },\n center: {\n display: DEFAULT_DISPLAY,\n textAlign: 'center',\n },\n hr: {\n display: DEFAULT_DISPLAY,\n marginTop: '0.5em',\n marginBottom: '0.5em',\n marginLeft: 'auto',\n marginRight: 'auto',\n borderWidth: 1,\n // We don't have `inset`\n borderStyle: 'solid',\n },\n // Heading elements\n h1: {\n display: DEFAULT_DISPLAY,\n fontSize: '2em',\n marginTop: '0.67em',\n marginBottom: '0.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h2: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.5em',\n marginTop: '0.83em',\n marginBottom: '0.83em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h3: {\n display: DEFAULT_DISPLAY,\n fontSize: '1.17em',\n marginTop: '1em',\n marginBottom: '1em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h4: {\n display: DEFAULT_DISPLAY,\n marginTop: '1.33em',\n marginBottom: '1.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h5: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.83em',\n marginTop: '1.67em',\n marginBottom: '1.67em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n h6: {\n display: DEFAULT_DISPLAY,\n fontSize: '0.67em',\n marginTop: '2.33em',\n marginBottom: '2.33em',\n marginLeft: 0,\n marginRight: 0,\n fontWeight: 'bold',\n },\n // Tables\n // Lists\n // Form elements\n // Inline elements\n u: {\n textDecoration: 'underline',\n },\n strong: {\n fontWeight: 'bold',\n },\n b: {\n fontWeight: 'bold',\n },\n i: {\n fontStyle: 'italic',\n },\n em: {\n fontStyle: 'italic',\n },\n code: {\n fontFamily: 'monospace',\n },\n kbd: {\n fontFamily: 'monospace',\n },\n pre: {\n display: DEFAULT_DISPLAY,\n fontFamily: 'monospace',\n whiteSpace: 'pre',\n marginTop: '1em',\n marginBottom: '1em',\n },\n mark: {\n backgroundColor: 'yellow',\n color: 'black',\n },\n big: {\n fontSize: 'larger',\n },\n small: {\n fontSize: 'smaller',\n },\n s: {\n textDecoration: 'line-through',\n },\n}\n","import { SerializedStyle } from './expand.js'\n\nconst list = new Set([\n 'color',\n 'font',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'letterSpacing',\n 'lineHeight',\n 'textAlign',\n 'textTransform',\n 'textShadowOffset',\n 'textShadowColor',\n 'textShadowRadius',\n 'WebkitTextStrokeWidth',\n 'WebkitTextStrokeColor',\n 'textDecorationLine',\n 'textDecorationStyle',\n 'textDecorationColor',\n 'whiteSpace',\n 'transform',\n 'wordBreak',\n 'tabSize',\n\n // Special case: SVG doesn't apply these to children elements so we need to\n // make it inheritable here.\n 'opacity',\n 'filter',\n\n // Special properties of Satori:\n '_viewportWidth',\n '_viewportHeight',\n '_inheritedClipPathId',\n '_inheritedMaskId',\n '_inheritedBackgroundClipTextPath',\n])\n\nexport default function inheritable(style: SerializedStyle): SerializedStyle {\n const inheritedStyle: SerializedStyle = {}\n for (const prop in style) {\n if (list.has(prop)) {\n inheritedStyle[prop] = style[prop]\n }\n }\n return inheritedStyle\n}\n","/**\n * Handler to update the Yoga node properties with the given element type and\n * style. Each supported element has its own preset styles, so this function\n * also returns the inherited style for children of the element.\n */\n\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from '../yoga/index.js'\nimport presets from './presets.js'\nimport inheritable from './inheritable.js'\nimport expand, { SerializedStyle } from './expand.js'\nimport { lengthToNumber, parseViewBox, v } from '../utils.js'\nimport { resolveImageData } from './image.js'\n\ntype SatoriElement = keyof typeof presets\n\nexport default async function compute(\n node: YogaNode,\n type: SatoriElement | string,\n inheritedStyle: SerializedStyle,\n definedStyle: Record,\n props: Record\n): Promise<[SerializedStyle, SerializedStyle]> {\n const Yoga = await getYoga()\n\n // Extend the default style with defined and inherited styles.\n const style: SerializedStyle = {\n ...inheritedStyle,\n ...expand(presets[type], inheritedStyle),\n ...expand(definedStyle, inheritedStyle),\n }\n\n if (type === 'img') {\n let [resolvedSrc, imageWidth, imageHeight] = await resolveImageData(\n props.src\n )\n\n // Cannot parse the image size (e.g. base64 data URI).\n if (imageWidth === undefined && imageHeight === undefined) {\n if (props.width === undefined || props.height === undefined) {\n throw new Error(\n 'Image size cannot be determined. Please provide the width and height of the image.'\n )\n }\n imageWidth = parseInt(props.width)\n imageHeight = parseInt(props.height)\n }\n const r = imageHeight / imageWidth\n\n // Before calculating the missing width or height based on the image ratio,\n // we must subtract the padding and border due to how box model works.\n // TODO: Ensure these are absolute length values, not relative values.\n let extraHorizontal =\n (style.borderLeftWidth || 0) +\n (style.borderRightWidth || 0) +\n (style.paddingLeft || 0) +\n (style.paddingRight || 0)\n let extraVertical =\n (style.borderTopWidth || 0) +\n (style.borderBottomWidth || 0) +\n (style.paddingTop || 0) +\n (style.paddingBottom || 0)\n\n let contentBoxWidth = style.width || props.width\n let contentBoxHeight = style.height || props.height\n\n const isAbsoluteContentSize =\n typeof contentBoxWidth === 'number' &&\n typeof contentBoxHeight === 'number'\n\n if (isAbsoluteContentSize) {\n contentBoxWidth -= extraHorizontal\n contentBoxHeight -= extraVertical\n }\n\n // When no content size is defined, we use the image size as the content size.\n if (contentBoxWidth === undefined && contentBoxHeight === undefined) {\n contentBoxWidth = '100%'\n node.setAspectRatio(1 / r)\n } else {\n // If only one sisde is not defined, we can calculate the other one.\n if (contentBoxWidth === undefined) {\n if (typeof contentBoxHeight === 'number') {\n contentBoxWidth = contentBoxHeight / r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n } else if (contentBoxHeight === undefined) {\n if (typeof contentBoxWidth === 'number') {\n contentBoxHeight = contentBoxWidth * r\n } else {\n // If it uses a relative value (e.g. 50%), we can rely on aspect ratio.\n // Note: this doesn't work well if there are paddings or borders.\n node.setAspectRatio(1 / r)\n }\n }\n }\n\n style.width = isAbsoluteContentSize\n ? (contentBoxWidth as number) + extraHorizontal\n : contentBoxWidth\n style.height = isAbsoluteContentSize\n ? (contentBoxHeight as number) + extraVertical\n : contentBoxHeight\n style.__src = resolvedSrc\n }\n\n if (type === 'svg') {\n const viewBox = props.viewBox || props.viewbox\n const viewBoxSize = parseViewBox(viewBox)\n const ratio = viewBoxSize ? viewBoxSize[3] / viewBoxSize[2] : null\n\n let { width, height } = props\n if (typeof width === 'undefined' && height) {\n if (ratio == null) {\n width = 0\n } else if (typeof height === 'string' && height.endsWith('%')) {\n width = parseInt(height) / ratio + '%'\n } else {\n height = lengthToNumber(\n height,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n width = height / ratio\n }\n } else if (typeof height === 'undefined' && width) {\n if (ratio == null) {\n width = 0\n } else if (typeof width === 'string' && width.endsWith('%')) {\n height = parseInt(width) * ratio + '%'\n } else {\n width = lengthToNumber(\n width,\n inheritedStyle.fontSize,\n 1,\n inheritedStyle\n )\n height = width * ratio\n }\n } else {\n if (typeof width !== 'undefined') {\n width =\n lengthToNumber(width, inheritedStyle.fontSize, 1, inheritedStyle) ||\n width\n }\n if (typeof height !== 'undefined') {\n height =\n lengthToNumber(height, inheritedStyle.fontSize, 1, inheritedStyle) ||\n height\n }\n width ||= viewBoxSize?.[2]\n height ||= viewBoxSize?.[3]\n }\n\n if (!style.width && width) style.width = width\n if (!style.height && height) style.height = height\n }\n\n // Set properties for Yoga.\n node.setDisplay(\n v(\n style.display,\n {\n flex: Yoga.DISPLAY_FLEX,\n block: Yoga.DISPLAY_FLEX,\n none: Yoga.DISPLAY_NONE,\n '-webkit-box': Yoga.DISPLAY_FLEX,\n },\n Yoga.DISPLAY_FLEX,\n 'display'\n )\n )\n\n node.setAlignContent(\n v(\n style.alignContent,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n 'space-between': Yoga.ALIGN_SPACE_BETWEEN,\n 'space-around': Yoga.ALIGN_SPACE_AROUND,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignContent'\n )\n )\n\n node.setAlignItems(\n v(\n style.alignItems,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_STRETCH,\n 'alignItems'\n )\n )\n node.setAlignSelf(\n v(\n style.alignSelf,\n {\n stretch: Yoga.ALIGN_STRETCH,\n center: Yoga.ALIGN_CENTER,\n 'flex-start': Yoga.ALIGN_FLEX_START,\n 'flex-end': Yoga.ALIGN_FLEX_END,\n baseline: Yoga.ALIGN_BASELINE,\n normal: Yoga.ALIGN_AUTO,\n },\n Yoga.ALIGN_AUTO,\n 'alignSelf'\n )\n )\n node.setJustifyContent(\n v(\n style.justifyContent,\n {\n center: Yoga.JUSTIFY_CENTER,\n 'flex-start': Yoga.JUSTIFY_FLEX_START,\n 'flex-end': Yoga.JUSTIFY_FLEX_END,\n 'space-between': Yoga.JUSTIFY_SPACE_BETWEEN,\n 'space-around': Yoga.JUSTIFY_SPACE_AROUND,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'justifyContent'\n )\n )\n // @TODO: node.setAspectRatio\n\n node.setFlexDirection(\n v(\n style.flexDirection,\n {\n row: Yoga.FLEX_DIRECTION_ROW,\n column: Yoga.FLEX_DIRECTION_COLUMN,\n 'row-reverse': Yoga.FLEX_DIRECTION_ROW_REVERSE,\n 'column-reverse': Yoga.FLEX_DIRECTION_COLUMN_REVERSE,\n },\n Yoga.FLEX_DIRECTION_ROW,\n 'flexDirection'\n )\n )\n node.setFlexWrap(\n v(\n style.flexWrap,\n {\n wrap: Yoga.WRAP_WRAP,\n nowrap: Yoga.WRAP_NO_WRAP,\n 'wrap-reverse': Yoga.WRAP_WRAP_REVERSE,\n },\n Yoga.WRAP_NO_WRAP,\n 'flexWrap'\n )\n )\n\n if (typeof style.gap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ALL, style.gap)\n }\n\n if (typeof style.rowGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_ROW, style.rowGap)\n }\n\n if (typeof style.columnGap !== 'undefined') {\n node.setGap(Yoga.GUTTER_COLUMN, style.columnGap)\n }\n\n // @TODO: node.setFlex\n\n if (typeof style.flexBasis !== 'undefined') {\n node.setFlexBasis(style.flexBasis)\n }\n node.setFlexGrow(typeof style.flexGrow === 'undefined' ? 0 : style.flexGrow)\n node.setFlexShrink(\n typeof style.flexShrink === 'undefined' ? 0 : style.flexShrink\n )\n\n if (typeof style.maxHeight !== 'undefined') {\n node.setMaxHeight(style.maxHeight)\n }\n if (typeof style.maxWidth !== 'undefined') {\n node.setMaxWidth(style.maxWidth)\n }\n if (typeof style.minHeight !== 'undefined') {\n node.setMinHeight(style.minHeight)\n }\n if (typeof style.minWidth !== 'undefined') {\n node.setMinWidth(style.minWidth)\n }\n\n node.setOverflow(\n v(\n style.overflow,\n {\n visible: Yoga.OVERFLOW_VISIBLE,\n hidden: Yoga.OVERFLOW_HIDDEN,\n },\n Yoga.OVERFLOW_VISIBLE,\n 'overflow'\n )\n )\n\n node.setMargin(Yoga.EDGE_TOP, style.marginTop || 0)\n node.setMargin(Yoga.EDGE_BOTTOM, style.marginBottom || 0)\n node.setMargin(Yoga.EDGE_LEFT, style.marginLeft || 0)\n node.setMargin(Yoga.EDGE_RIGHT, style.marginRight || 0)\n\n node.setBorder(Yoga.EDGE_TOP, style.borderTopWidth || 0)\n node.setBorder(Yoga.EDGE_BOTTOM, style.borderBottomWidth || 0)\n node.setBorder(Yoga.EDGE_LEFT, style.borderLeftWidth || 0)\n node.setBorder(Yoga.EDGE_RIGHT, style.borderRightWidth || 0)\n\n node.setPadding(Yoga.EDGE_TOP, style.paddingTop || 0)\n node.setPadding(Yoga.EDGE_BOTTOM, style.paddingBottom || 0)\n node.setPadding(Yoga.EDGE_LEFT, style.paddingLeft || 0)\n node.setPadding(Yoga.EDGE_RIGHT, style.paddingRight || 0)\n\n node.setPositionType(\n v(\n style.position,\n {\n absolute: Yoga.POSITION_TYPE_ABSOLUTE,\n relative: Yoga.POSITION_TYPE_RELATIVE,\n },\n Yoga.POSITION_TYPE_RELATIVE,\n 'position'\n )\n )\n\n if (typeof style.top !== 'undefined') {\n node.setPosition(Yoga.EDGE_TOP, style.top)\n }\n if (typeof style.bottom !== 'undefined') {\n node.setPosition(Yoga.EDGE_BOTTOM, style.bottom)\n }\n if (typeof style.left !== 'undefined') {\n node.setPosition(Yoga.EDGE_LEFT, style.left)\n }\n if (typeof style.right !== 'undefined') {\n node.setPosition(Yoga.EDGE_RIGHT, style.right)\n }\n\n if (typeof style.height !== 'undefined') {\n node.setHeight(style.height)\n } else {\n node.setHeightAuto()\n }\n if (typeof style.width !== 'undefined') {\n node.setWidth(style.width)\n } else {\n node.setWidthAuto()\n }\n\n return [style, inheritable(style)]\n}\n","import { multiply } from '../utils.js'\nimport type { ParsedTransformOrigin } from '../transform-origin.js'\n\nconst baseMatrix = [1, 0, 0, 1, 0, 0]\n\n// Mutate the array in place.\nfunction resolveTransforms(transforms: any[], width: number, height: number) {\n let matrix = [...baseMatrix]\n\n // Handle CSS transforms To make it easier, we convert different transform\n // types directly to a matrix and apply it recursively to all its children.\n // Transforms are applied from right to left.\n // eslint-disable-next-line @typescript-eslint/no-shadow\n for (const transform of transforms) {\n const type = Object.keys(transform)[0]\n let v = transform[type]\n\n // Resolve percentages based on the element's final size.\n if (typeof v === 'string') {\n if (type === 'translateX') {\n v = (parseFloat(v) / 100) * width\n // Override the original object.\n transform[type] = v\n } else if (type === 'translateY') {\n v = (parseFloat(v) / 100) * height\n transform[type] = v\n } else {\n throw new Error(`Invalid transform: \"${type}: ${v}\".`)\n }\n }\n\n let len = v as number\n\n const transformMatrix = [...baseMatrix]\n switch (type) {\n case 'translateX':\n transformMatrix[4] = len\n break\n case 'translateY':\n transformMatrix[5] = len\n break\n case 'scale':\n transformMatrix[0] = len\n transformMatrix[3] = len\n break\n case 'scaleX':\n transformMatrix[0] = len\n break\n case 'scaleY':\n transformMatrix[3] = len\n break\n case 'rotate': {\n const rad = (len * Math.PI) / 180\n const c = Math.cos(rad)\n const s = Math.sin(rad)\n transformMatrix[0] = c\n transformMatrix[1] = s\n transformMatrix[2] = -s\n transformMatrix[3] = c\n break\n }\n case 'skewX':\n transformMatrix[2] = Math.tan((len * Math.PI) / 180)\n break\n case 'skewY':\n transformMatrix[1] = Math.tan((len * Math.PI) / 180)\n break\n }\n matrix = multiply(transformMatrix, matrix)\n }\n\n transforms.splice(0, transforms.length)\n transforms.push(...matrix)\n ;(transforms as any).__resolved = true\n}\n\nexport default function transform(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n transforms: number[],\n isInheritingTransform: boolean,\n transformOrigin?: ParsedTransformOrigin\n) {\n let result: number[]\n\n if (!(transforms as any).__resolved) {\n resolveTransforms(transforms, width, height)\n }\n\n let matrix = transforms\n\n // Calculate the transform origin.\n if (isInheritingTransform) {\n result = matrix\n } else {\n const xOrigin =\n transformOrigin?.xAbsolute ??\n ((transformOrigin?.xRelative ?? 50) * width) / 100\n const yOrigin =\n transformOrigin?.yAbsolute ??\n ((transformOrigin?.yRelative ?? 50) * height) / 100\n\n // If this element is the transform target, we attach the origin coordinates\n // to this matrix.\n const x = left + xOrigin\n const y = top + yOrigin\n\n // Due to the different coordinate systems, we need to move the shape to the\n // origin first, then apply the matrix, then move it back.\n result = multiply(\n [1, 0, 0, 1, x, y],\n multiply(matrix, [1, 0, 0, 1, -x, -y])\n )\n\n // And we need to apply its parent transform if it has one.\n if ((matrix as any).__parent) {\n result = multiply((matrix as any).__parent, result)\n }\n\n // Mutate self.\n matrix.splice(0, 6, ...result)\n }\n\n return `matrix(${result.map((v) => v.toFixed(2)).join(',')})`\n}\n","// @TODO: It seems that SVG filters are pretty expensive for resvg, PNG\n// generation time 10x'd when adding this filter (WASM in browser).\n// https://drafts.fxtf.org/filter-effects/#feGaussianBlurElement\n\nimport { buildXMLString } from '../utils.js'\n\nfunction shiftPath(path: string, dx: number, dy: number) {\n return path.replace(\n /([MA])([0-9.-]+),([0-9.-]+)/g,\n function (_, command, x, y) {\n return command + (parseFloat(x) + dx) + ',' + (parseFloat(y) + dy)\n }\n )\n}\n\n// The scale is used to make the filter area larger than the bounding box,\n// because usually the given measured text bounding is larger than the path\n// bounding.\n// The text bounding box is measured via the font metrics, which is not the same\n// as the actual content. For example, the text bounding box of \"A\" is larger\n// than the actual \"a\" path but they have the same font metrics.\n// This scale can be adjusted to prevent the filter from cutting off the text.\nconst SCALE = 1.1\n\nexport function buildDropShadow(\n { id, width, height }: { id: string; width: number; height: number },\n style: {\n shadowColor: string[]\n shadowOffset: {\n width: number\n height: number\n }[]\n shadowRadius: number[]\n }\n) {\n if (\n !style.shadowColor ||\n !style.shadowOffset ||\n typeof style.shadowRadius === 'undefined'\n ) {\n return ''\n }\n\n const shadowCount = style.shadowColor.length\n let effects = ''\n let merge = ''\n\n // There could be multiple shadows, we need to get the maximum bounding box\n // and use `feMerge` to merge them together.\n let left = 0\n let right = width\n let top = 0\n let bottom = height\n for (let i = 0; i < shadowCount; i++) {\n // Expand the area for the filter to prevent it from cutting off.\n const grow = (style.shadowRadius[i] * style.shadowRadius[i]) / 4\n left = Math.min(style.shadowOffset[i].width - grow, left)\n right = Math.max(style.shadowOffset[i].width + grow + width, right)\n top = Math.min(style.shadowOffset[i].height - grow, top)\n bottom = Math.max(style.shadowOffset[i].height + grow + height, bottom)\n\n effects += buildXMLString('feDropShadow', {\n dx: style.shadowOffset[i].width,\n dy: style.shadowOffset[i].height,\n stdDeviation:\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n style.shadowRadius[i] / 2,\n 'flood-color': style.shadowColor[i],\n 'flood-opacity': 1,\n ...(shadowCount > 1\n ? {\n in: 'SourceGraphic',\n result: `satori_s-${id}-result-${i}`,\n }\n : {}),\n })\n\n if (shadowCount > 1) {\n // Merge needs to be in reverse order.\n merge =\n buildXMLString('feMergeNode', {\n in: `satori_s-${id}-result-${i}`,\n }) + merge\n }\n }\n\n return buildXMLString(\n 'filter',\n {\n id: `satori_s-${id}`,\n x: ((left / width) * 100 * SCALE).toFixed(2) + '%',\n y: ((top / height) * 100 * SCALE).toFixed(2) + '%',\n width: (((right - left) / width) * 100 * SCALE).toFixed(2) + '%',\n height: (((bottom - top) / height) * 100 * SCALE).toFixed(2) + '%',\n },\n effects + (merge ? buildXMLString('feMerge', {}, merge) : '')\n )\n}\n\nexport function boxShadow(\n {\n width,\n height,\n shape,\n opacity,\n id,\n }: {\n width: number\n height: number\n shape: string\n opacity: number\n id: string\n },\n style: Record\n) {\n if (!style.boxShadow) return null\n\n let shadow = ''\n let innerShadow = ''\n\n for (let i = style.boxShadow.length - 1; i >= 0; i--) {\n let s = ''\n\n const shadowStyle = style.boxShadow[i]\n\n if (shadowStyle.spreadRadius && shadowStyle.inset) {\n shadowStyle.spreadRadius = -shadowStyle.spreadRadius\n }\n\n // Expand the area for the filter to prevent it from cutting off.\n const grow =\n (shadowStyle.blurRadius * shadowStyle.blurRadius) / 4 +\n (shadowStyle.spreadRadius || 0)\n\n const left = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n 0\n )\n const right = Math.max(\n grow + width - (shadowStyle.inset ? shadowStyle.offsetX : 0),\n width\n )\n const top = Math.min(\n -grow - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n 0\n )\n const bottom = Math.max(\n grow + height - (shadowStyle.inset ? shadowStyle.offsetY : 0),\n height\n )\n\n const sid = `satori_s-${id}-${i}`\n const maskId = `satori_ms-${id}-${i}`\n const shapeWithSpread = shadowStyle.spreadRadius\n ? shape.replace(\n 'stroke-width=\"0\"',\n `stroke-width=\"${shadowStyle.spreadRadius * 2}\"`\n )\n : shape\n\n s += buildXMLString(\n 'mask',\n {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: style._viewportWidth || '100%',\n height: style._viewportHeight || '100%',\n fill: shadowStyle.inset ? '#000' : '#fff',\n }) +\n shapeWithSpread\n .replace(\n 'fill=\"#fff\"',\n shadowStyle.inset ? 'fill=\"#fff\"' : 'fill=\"#000\"'\n )\n .replace('stroke=\"#fff\"', '')\n )\n\n let finalShape = shapeWithSpread\n .replace(/d=\"([^\"]+)\"/, (_, path) => {\n return (\n 'd=\"' +\n shiftPath(path, shadowStyle.offsetX, shadowStyle.offsetY) +\n '\"'\n )\n })\n .replace(/x=\"([^\"]+)\"/, (_, x) => {\n return 'x=\"' + (parseFloat(x) + shadowStyle.offsetX) + '\"'\n })\n .replace(/y=\"([^\"]+)\"/, (_, y) => {\n return 'y=\"' + (parseFloat(y) + shadowStyle.offsetY) + '\"'\n })\n\n // Negative spread radius, we need another mask here.\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n s += buildXMLString(\n 'mask',\n {\n id: maskId + '-neg',\n maskUnits: 'userSpaceOnUse',\n },\n finalShape\n .replace('stroke=\"#fff\"', 'stroke=\"#000\"')\n .replace(\n /stroke-width=\"[^\"]+\"/,\n `stroke-width=\"${-shadowStyle.spreadRadius * 2}\"`\n )\n )\n }\n\n if (shadowStyle.spreadRadius && shadowStyle.spreadRadius < 0) {\n finalShape = buildXMLString(\n 'g',\n {\n mask: `url(#${maskId}-neg)`,\n },\n finalShape\n )\n }\n\n s +=\n buildXMLString(\n 'defs',\n {},\n buildXMLString(\n 'filter',\n {\n id: sid,\n x: `${(left / width) * 100}%`,\n y: `${(top / height) * 100}%`,\n width: `${((right - left) / width) * 100}%`,\n height: `${((bottom - top) / height) * 100}%`,\n },\n buildXMLString('feGaussianBlur', {\n // According to the spec, we use the half of the blur radius as the standard\n // deviation for the filter.\n // > the image that would be generated by applying to the shadow a Gaussian\n // > blur with a standard deviation equal to half the blur radius\n // > https://www.w3.org/TR/css-backgrounds-3/#shadow-blur\n stdDeviation: shadowStyle.blurRadius / 2,\n result: 'b',\n }) +\n buildXMLString('feFlood', {\n 'flood-color': shadowStyle.color,\n in: 'SourceGraphic',\n result: 'f',\n }) +\n buildXMLString('feComposite', {\n in: 'f',\n in2: 'b',\n operator: shadowStyle.inset ? 'out' : 'in',\n })\n )\n ) +\n buildXMLString(\n 'g',\n {\n mask: `url(#${maskId})`,\n filter: `url(#${sid})`,\n opacity: opacity,\n },\n finalShape\n )\n\n if (shadowStyle.inset) {\n innerShadow += s\n } else {\n shadow += s\n }\n }\n\n return [shadow, innerShadow]\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function buildDecoration(\n {\n width,\n left,\n top,\n ascender,\n clipPathId,\n matrix,\n }: {\n width: number\n left: number\n top: number\n ascender: number\n clipPathId?: string\n matrix?: string\n },\n style: Record\n) {\n const {\n textDecorationColor,\n textDecorationStyle,\n textDecorationLine,\n fontSize,\n color,\n } = style\n if (!textDecorationLine || textDecorationLine === 'none') return ''\n\n // The UA should use such font-based information when choosing auto line thicknesses wherever appropriate.\n // https://drafts.csswg.org/css-text-decor-4/#text-decoration-thickness\n const height = Math.max(1, fontSize * 0.1)\n\n const y =\n textDecorationLine === 'line-through'\n ? top + ascender * 0.7\n : textDecorationLine === 'underline'\n ? top + ascender * 1.1\n : top\n\n const dasharray =\n textDecorationStyle === 'dashed'\n ? `${height * 1.2} ${height * 2}`\n : textDecorationStyle === 'dotted'\n ? `0 ${height * 2}`\n : undefined\n\n return (\n (clipPathId ? `` : '') +\n buildXMLString('line', {\n x1: left,\n y1: y,\n x2: left + width,\n y2: y,\n stroke: textDecorationColor || color,\n 'stroke-width': height,\n 'stroke-dasharray': dasharray,\n 'stroke-linecap': textDecorationStyle === 'dotted' ? 'round' : 'square',\n transform: matrix,\n }) +\n (clipPathId ? '' : '')\n )\n}\n","export function stringFromCode(code: string): string {\n code = code.replace('U+', '0x')\n\n return String.fromCodePoint(Number(code))\n}\n\nexport const Space = stringFromCode('U+0020')\nexport const Tab = stringFromCode('U+0009')\nexport const HorizontalEllipsis = stringFromCode('U+2026')\n","import { FontEngine } from '../font.js'\nimport { segment } from '../utils.js'\n\nexport function genMeasurer(\n engine: FontEngine,\n isImage: (grapheme: string) => boolean,\n style: {\n fontSize: number\n letterSpacing: number\n }\n): {\n measureGrapheme: (grapheme: string) => number\n measureGraphemeArray: (graphemes: string[]) => number\n measureText: (text: string) => number\n} {\n const { fontSize, letterSpacing } = style\n\n const cache = new Map()\n\n function measureGrapheme(grapheme: string): number {\n if (cache.has(grapheme)) {\n return cache.get(grapheme)\n }\n\n const width = engine.measure(grapheme, { fontSize, letterSpacing })\n cache.set(grapheme, width)\n\n return width\n }\n\n function measureGraphemeArray(graphemes: string[]): number {\n let width = 0\n\n for (const grapheme of graphemes) {\n if (isImage(grapheme)) {\n width += fontSize\n } else {\n width += measureGrapheme(grapheme)\n }\n }\n\n return width\n }\n\n function measureText(text: string): number {\n return measureGraphemeArray(segment(text, 'grapheme'))\n }\n\n return {\n measureGrapheme,\n measureGraphemeArray,\n measureText,\n }\n}\n","import { Locale } from '../language.js'\nimport { isNumber, segment, splitByBreakOpportunities } from '../utils.js'\nimport { HorizontalEllipsis, Space } from './characters.js'\nimport { SerializedStyle } from '../handler/expand.js'\n\nexport function preprocess(\n content: string,\n style: SerializedStyle,\n locale?: Locale\n): {\n words: string[]\n requiredBreaks: boolean[]\n allowSoftWrap: boolean\n allowBreakWord: boolean\n processedContent: string\n shouldCollapseTabsAndSpaces: boolean\n lineLimit: number\n blockEllipsis: string\n} {\n const { textTransform, whiteSpace, wordBreak } = style\n\n content = processTextTransform(content, textTransform, locale)\n\n const {\n content: processedContent,\n shouldCollapseTabsAndSpaces,\n allowSoftWrap,\n } = processWhiteSpace(content, whiteSpace)\n\n const { words, requiredBreaks, allowBreakWord } = processWordBreak(\n processedContent,\n wordBreak\n )\n\n const [lineLimit, blockEllipsis] = processTextOverflow(style, allowSoftWrap)\n\n return {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n }\n}\n\nfunction processTextTransform(\n content: string,\n textTransform: string,\n locale?: Locale\n): string {\n if (textTransform === 'uppercase') {\n content = content.toLocaleUpperCase(locale)\n } else if (textTransform === 'lowercase') {\n content = content.toLocaleLowerCase(locale)\n } else if (textTransform === 'capitalize') {\n content = segment(content, 'word', locale)\n // For each word...\n .map((word) => {\n // ...split into graphemes...\n return segment(word, 'grapheme', locale)\n .map((grapheme, index) => {\n // ...and make the first grapheme uppercase\n return index === 0 ? grapheme.toLocaleUpperCase(locale) : grapheme\n })\n .join('')\n })\n .join('')\n }\n\n return content\n}\n\nfunction processTextOverflow(\n style: SerializedStyle,\n allowSoftWrap: boolean\n): [number, string?] {\n const {\n textOverflow,\n lineClamp,\n WebkitLineClamp,\n WebkitBoxOrient,\n overflow,\n display,\n } = style\n\n if (display === 'block' && lineClamp) {\n const [lineLimit, blockEllipsis = HorizontalEllipsis] =\n parseLineClamp(lineClamp)\n if (lineLimit) {\n return [lineLimit, blockEllipsis]\n }\n }\n\n if (\n textOverflow === 'ellipsis' &&\n display === '-webkit-box' &&\n WebkitBoxOrient === 'vertical' &&\n isNumber(WebkitLineClamp) &&\n WebkitLineClamp > 0\n ) {\n return [WebkitLineClamp, HorizontalEllipsis]\n }\n\n if (textOverflow === 'ellipsis' && overflow === 'hidden' && !allowSoftWrap) {\n return [1, HorizontalEllipsis]\n }\n\n return [Infinity]\n}\n\nfunction processWordBreak(\n content,\n wordBreak: string\n): { words: string[]; requiredBreaks: boolean[]; allowBreakWord: boolean } {\n const allowBreakWord = ['break-all', 'break-word'].includes(wordBreak)\n\n const { words, requiredBreaks } = splitByBreakOpportunities(\n content,\n wordBreak\n )\n\n return { words, requiredBreaks, allowBreakWord }\n}\n\nfunction processWhiteSpace(\n content: string,\n whiteSpace: string\n): {\n content: string\n shouldCollapseTabsAndSpaces: boolean\n allowSoftWrap: boolean\n} {\n const shouldKeepLinebreak = ['pre', 'pre-wrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const shouldCollapseTabsAndSpaces = ['normal', 'nowrap', 'pre-line'].includes(\n whiteSpace\n )\n\n const allowSoftWrap = !['pre', 'nowrap'].includes(whiteSpace)\n\n if (!shouldKeepLinebreak) {\n content = content.replace(/\\n/g, Space)\n }\n\n if (shouldCollapseTabsAndSpaces) {\n content = content.replace(/([ ]|\\t)+/g, Space).replace(/^[ ]|[ ]$/g, '')\n }\n\n return { content, shouldCollapseTabsAndSpaces, allowSoftWrap }\n}\n\nfunction parseLineClamp(input: number | string): [number?, string?] {\n if (typeof input === 'number') return [input]\n\n const regex1 = /^(\\d+)\\s*\"(.*)\"$/\n const regex2 = /^(\\d+)\\s*'(.*)'$/\n const match1 = regex1.exec(input)\n const match2 = regex2.exec(input)\n\n if (match1) {\n const number = +match1[1]\n const text = match1[2]\n\n return [number, text]\n } else if (match2) {\n const number = +match2[1]\n const text = match2[2]\n\n return [number, text]\n }\n\n return []\n}\n","/**\n * This module calculates the layout of a text string. Currently the only\n * supported inline node is text. All other nodes are using block layout.\n */\nimport type { LayoutContext } from '../layout.js'\nimport type { Yoga } from 'yoga-wasm-web'\nimport getYoga from '../yoga/index.js'\nimport {\n v,\n segment,\n wordSeparators,\n buildXMLString,\n isUndefined,\n isString,\n lengthToNumber,\n} from '../utils.js'\nimport buildText, { container } from '../builder/text.js'\nimport { buildDropShadow } from '../builder/shadow.js'\nimport buildDecoration from '../builder/text-decoration.js'\nimport { Locale } from '../language.js'\nimport { HorizontalEllipsis, Space, Tab } from './characters.js'\nimport { genMeasurer } from './measurer.js'\nimport { preprocess } from './processor.js'\n\nconst skippedWordWhenFindingMissingFont = new Set([Tab])\n\nfunction shouldSkipWhenFindingMissingFont(word: string): boolean {\n return skippedWordWhenFindingMissingFont.has(word)\n}\n\nexport default async function* buildTextNodes(\n content: string,\n context: LayoutContext\n): AsyncGenerator<{ word: string; locale?: Locale }[], string, [any, any]> {\n const Yoga = await getYoga()\n\n const {\n parentStyle,\n inheritedStyle,\n parent,\n font,\n id,\n isInheritingTransform,\n debug,\n embedFont,\n graphemeImages,\n locale,\n canLoadAdditionalAssets,\n } = context\n\n const {\n textAlign,\n lineHeight,\n textWrap,\n fontSize,\n filter: cssFilter,\n tabSize = 8,\n letterSpacing,\n _inheritedBackgroundClipTextPath,\n flexShrink,\n } = parentStyle\n\n const {\n words,\n requiredBreaks,\n allowSoftWrap,\n allowBreakWord,\n processedContent,\n shouldCollapseTabsAndSpaces,\n lineLimit,\n blockEllipsis,\n } = preprocess(content, parentStyle, locale)\n\n const textContainer = createTextContainerNode(Yoga, textAlign)\n parent.insertChild(textContainer, parent.getChildCount())\n\n if (isUndefined(flexShrink)) {\n parent.setFlexShrink(1)\n }\n\n // Get the correct font according to the container style.\n // https://www.w3.org/TR/CSS2/visudet.html\n let engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n\n // Yield segments that are missing a font.\n const wordsMissingFont = canLoadAdditionalAssets\n ? segment(processedContent, 'grapheme').filter(\n (word) => !shouldSkipWhenFindingMissingFont(word) && !engine.has(word)\n )\n : []\n\n yield wordsMissingFont.map((word) => {\n return {\n word,\n locale,\n }\n })\n\n if (wordsMissingFont.length) {\n // Reload the engine with additional fonts.\n engine = font.getEngine(fontSize, lineHeight, parentStyle, locale)\n }\n\n function isImage(s: string): boolean {\n return !!(graphemeImages && graphemeImages[s])\n }\n\n const { measureGrapheme, measureGraphemeArray, measureText } = genMeasurer(\n engine,\n isImage,\n {\n fontSize,\n letterSpacing,\n }\n )\n\n const tabWidth = isString(tabSize)\n ? lengthToNumber(tabSize, fontSize, 1, parentStyle)\n : measureGrapheme(Space) * tabSize\n\n const calc = (\n text: string,\n currentWidth: number\n ): {\n originWidth: number\n endingSpacesWidth: number\n text: string\n } => {\n if (text.length === 0) {\n return {\n originWidth: 0,\n endingSpacesWidth: 0,\n text,\n }\n }\n\n const { index, tabCount } = detectTabs(text)\n\n let originWidth = 0\n\n if (tabCount > 0) {\n const textBeforeTab = text.slice(0, index)\n const textAfterTab = text.slice(index + tabCount)\n const textWidthBeforeTab = measureText(textBeforeTab)\n const offsetBeforeTab = textWidthBeforeTab + currentWidth\n const tabMoveDistance =\n tabWidth === 0\n ? textWidthBeforeTab\n : (Math.floor(offsetBeforeTab / tabWidth) + tabCount) * tabWidth\n originWidth = tabMoveDistance + measureText(textAfterTab)\n } else {\n originWidth = measureText(text)\n }\n\n const afterTrimEndWidth =\n text.trimEnd() === text ? originWidth : measureText(text.trimEnd())\n\n return {\n originWidth,\n endingSpacesWidth: originWidth - afterTrimEndWidth,\n text,\n }\n }\n\n // Global variables used to compute the text layout.\n // @TODO: Use segments instead of words to properly support kerning.\n let lineWidths = []\n let baselines = []\n let lineSegmentNumber = []\n let texts: string[] = []\n let wordPositionInLayout: (null | {\n x: number\n y: number\n width: number\n line: number\n lineIndex: number\n isImage: boolean\n })[] = []\n\n // With the given container width, compute the text layout.\n function flow(width: number) {\n let lines = 0\n let maxWidth = 0\n let lineIndex = -1\n let height = 0\n let currentWidth = 0\n let currentLineHeight = 0\n let currentBaselineOffset = 0\n\n lineWidths = []\n lineSegmentNumber = [0]\n texts = []\n wordPositionInLayout = []\n\n // We naively implement the width calculation without proper kerning.\n // @TODO: Support different writing modes.\n // @TODO: Support RTL languages.\n let i = 0\n let prevLineEndingSpacesWidth = 0\n while (i < words.length && lines < lineLimit) {\n let word = words[i]\n const forceBreak = requiredBreaks[i]\n\n let w = 0\n\n const {\n originWidth,\n endingSpacesWidth,\n text: _word,\n } = calc(word, currentWidth)\n word = _word\n\n w = originWidth\n const lineEndingSpacesWidth = endingSpacesWidth\n\n // When starting a new line from an empty line, we should push one extra\n // line height.\n if (forceBreak && currentLineHeight === 0) {\n currentLineHeight = engine.height(word)\n }\n\n const allowedToPutAtBeginning = ',.!?:-@)>]}%#'.indexOf(word[0]) < 0\n const allowedToJustify = !currentWidth\n\n const willWrap =\n i &&\n allowedToPutAtBeginning &&\n // When determining whether a line break is necessary, the width of the\n // trailing spaces is not included in the calculation, as the end boundary\n // can be closely adjacent to the last non-space character.\n // e.g.\n // 'aaa bbb ccc'\n // When the break line happens at the end of the `bbb`, what we see looks like this\n // |aaa bbb|\n // |ccc |\n currentWidth + w > width + lineEndingSpacesWidth &&\n allowSoftWrap\n\n // Need to break the word if:\n // - we have break-word\n // - the word is wider than the container width\n // - the word will be put at the beginning of the line\n const needToBreakWord =\n allowBreakWord && w > width && (!currentWidth || willWrap || forceBreak)\n\n if (needToBreakWord) {\n // Break the word into multiple segments and continue the loop.\n const chars = segment(word, 'grapheme')\n words.splice(i, 1, ...chars)\n if (currentWidth > 0) {\n // Start a new line, spaces can be ignored.\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = 0\n currentLineHeight = 0\n currentBaselineOffset = 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n }\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n continue\n }\n if (forceBreak || willWrap) {\n // Start a new line, spaces can be ignored.\n if (shouldCollapseTabsAndSpaces && word === Space) {\n w = 0\n }\n\n lineWidths.push(currentWidth - prevLineEndingSpacesWidth)\n baselines.push(currentBaselineOffset)\n lines++\n height += currentLineHeight\n currentWidth = w\n currentLineHeight = w ? engine.height(word) : 0\n currentBaselineOffset = w ? engine.baseline(word) : 0\n lineSegmentNumber.push(1)\n lineIndex = -1\n\n // If it's naturally broken, we update the max width.\n // Since if there are multiple lines, the width should fit the\n // container.\n if (!forceBreak) {\n maxWidth = Math.max(maxWidth, width)\n }\n } else {\n // It fits into the current line.\n currentWidth += w\n const glyphHeight = engine.height(word)\n if (glyphHeight > currentLineHeight) {\n // Use the baseline of the highest segment as the baseline of the line.\n currentLineHeight = glyphHeight\n currentBaselineOffset = engine.baseline(word)\n }\n if (allowedToJustify) {\n lineSegmentNumber[lineSegmentNumber.length - 1]++\n }\n }\n\n if (allowedToJustify) {\n lineIndex++\n }\n\n maxWidth = Math.max(maxWidth, currentWidth)\n\n let x = currentWidth - w\n\n if (w === 0) {\n wordPositionInLayout.push({\n y: height,\n x,\n width: 0,\n line: lines,\n lineIndex,\n isImage: false,\n })\n } else {\n const _texts = segment(word, 'word')\n\n for (let j = 0; j < _texts.length; j++) {\n const _text = _texts[j]\n let _width = 0\n let _isImage = false\n\n if (isImage(_text)) {\n _width = fontSize\n _isImage = true\n } else {\n _width = measureGrapheme(_text)\n }\n\n texts.push(_text)\n wordPositionInLayout.push({\n y: height,\n x,\n width: _width,\n line: lines,\n lineIndex,\n isImage: _isImage,\n })\n\n x += _width\n }\n }\n\n i++\n prevLineEndingSpacesWidth = lineEndingSpacesWidth\n }\n\n if (currentWidth) {\n if (lines < lineLimit) {\n height += currentLineHeight\n }\n lines++\n lineWidths.push(currentWidth)\n baselines.push(currentBaselineOffset)\n }\n\n // @TODO: Support `line-height`.\n return { width: maxWidth, height }\n }\n\n // It's possible that the text's measured size is different from the container's\n // size, because the container might have a fixed width or height or being\n // expanded by its parent.\n let measuredTextSize = { width: 0, height: 0 }\n textContainer.setMeasureFunc((containerWidth) => {\n const { width, height } = flow(containerWidth)\n\n // When doing `text-wrap: balance`, we reflow the text multiple times\n // using binary search to find the best width.\n // https://www.w3.org/TR/css-text-4/#valdef-text-wrap-balance\n if (textWrap === 'balance') {\n let l = width / 2\n let r = width\n let m: number = width\n while (l + 1 < r) {\n m = (l + r) / 2\n const { height: mHeight } = flow(m)\n if (mHeight > height) {\n l = m\n } else {\n r = m\n }\n }\n flow(r)\n const _width = Math.ceil(r)\n measuredTextSize = { width: _width, height }\n return { width: _width, height }\n }\n const _width = Math.ceil(width)\n measuredTextSize = { width: _width, height }\n // This may be a temporary fix, I didn't dig deep into yoga.\n // But when the return value of width here doesn't change (assuming the value of width is 216.9),\n // when we later get the width through `parent.getComputedWidth()`, sometimes it returns 216 and sometimes 217.\n // I'm not sure if this is a yoga bug, but it seems related to the entire page width.\n // So I use Math.ceil.\n return { width: _width, height }\n })\n\n const [x, y] = yield\n\n let result = ''\n let backgroundClipDef = ''\n\n const clipPathId = inheritedStyle._inheritedClipPathId as string | undefined\n const overflowMaskId = inheritedStyle._inheritedMaskId as number | undefined\n\n const {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n } = textContainer.getComputedLayout()\n\n const parentContainerInnerWidth =\n parent.getComputedWidth() -\n parent.getComputedPadding(Yoga.EDGE_LEFT) -\n parent.getComputedPadding(Yoga.EDGE_RIGHT) -\n parent.getComputedBorder(Yoga.EDGE_LEFT) -\n parent.getComputedBorder(Yoga.EDGE_RIGHT)\n\n // Attach offset to the current node.\n const left = x + containerLeft\n const top = y + containerTop\n\n const { matrix, opacity } = container(\n {\n left: containerLeft,\n top: containerTop,\n width: containerWidth,\n height: containerHeight,\n isInheritingTransform,\n },\n parentStyle\n )\n\n let filter = ''\n if (parentStyle.textShadowOffset) {\n const { textShadowColor, textShadowOffset, textShadowRadius } = parentStyle\n\n filter = buildDropShadow(\n {\n width: measuredTextSize.width,\n height: measuredTextSize.height,\n id,\n },\n {\n shadowColor: textShadowColor,\n shadowOffset: textShadowOffset,\n shadowRadius: textShadowRadius,\n }\n )\n\n filter = buildXMLString('defs', {}, filter)\n }\n\n let decorationShape = ''\n let mergedPath = ''\n let extra = ''\n let skippedLine = -1\n let decorationLines: Record = {}\n let wordBuffer: string | null = null\n let bufferedOffset = 0\n\n for (let i = 0; i < texts.length; i++) {\n // Skip whitespace and empty characters.\n const layout = wordPositionInLayout[i]\n const nextLayout = wordPositionInLayout[i + 1]\n\n if (!layout) continue\n\n let text = texts[i]\n let path: string | null = null\n let isLastDisplayedBeforeEllipsis = false\n\n const image = graphemeImages ? graphemeImages[text] : null\n\n let topOffset = layout.y\n let leftOffset = layout.x\n const width = layout.width\n const line = layout.line\n\n if (line === skippedLine) {\n continue\n }\n\n // When `text-align` is `justify`, the width of the line will be adjusted.\n let extendedWidth = false\n\n if (lineWidths.length > 1) {\n // Calculate alignment. Note that for Flexbox, there is only text\n // alignment when the container is multi-line.\n const remainingWidth = containerWidth - lineWidths[line]\n if (textAlign === 'right' || textAlign === 'end') {\n leftOffset += remainingWidth\n } else if (textAlign === 'center') {\n leftOffset += remainingWidth / 2\n } else if (textAlign === 'justify') {\n // Don't justify the last line.\n if (line < lineWidths.length - 1) {\n const segments = lineSegmentNumber[line]\n const gutter = segments > 1 ? remainingWidth / (segments - 1) : 0\n leftOffset += gutter * layout.lineIndex\n extendedWidth = true\n }\n }\n }\n\n const baselineOfLine = baselines[line]\n const baselineOfWord = engine.baseline(text)\n const heightOfWord = engine.height(text)\n const baselineDelta = baselineOfLine - baselineOfWord\n\n if (!decorationLines[line]) {\n decorationLines[line] = [\n leftOffset,\n top + topOffset + baselineDelta,\n baselineOfWord,\n extendedWidth ? containerWidth : lineWidths[line],\n ]\n }\n\n if (lineLimit !== Infinity) {\n let _blockEllipsis = blockEllipsis\n let ellipsisWidth = measureGrapheme(blockEllipsis)\n if (ellipsisWidth > parentContainerInnerWidth) {\n _blockEllipsis = HorizontalEllipsis\n ellipsisWidth = measureGrapheme(_blockEllipsis)\n }\n const spaceWidth = measureGrapheme(Space)\n const isNotLastLine = line < lineWidths.length - 1\n const isLastAllowedLine = line + 1 === lineLimit\n\n function calcEllipsis(baseWidth: number, _text: string) {\n const chars = segment(_text, 'grapheme', locale)\n\n let subset = ''\n let resolvedWidth = 0\n\n for (const char of chars) {\n const w = baseWidth + measureGraphemeArray([subset + char])\n if (\n // Keep at least one character:\n // > The first character or atomic inline-level element on a line\n // must be clipped rather than ellipsed.\n // https://drafts.csswg.org/css-overflow/#text-overflow\n subset &&\n w + ellipsisWidth > parentContainerInnerWidth\n ) {\n break\n }\n subset += char\n resolvedWidth = w\n }\n\n return {\n subset,\n resolvedWidth,\n }\n }\n\n if (\n isLastAllowedLine &&\n (isNotLastLine || lineWidths[line] > parentContainerInnerWidth)\n ) {\n if (\n leftOffset + width + ellipsisWidth + spaceWidth >\n parentContainerInnerWidth\n ) {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else if (nextLayout && nextLayout.line !== line) {\n if (textAlign === 'center') {\n const { subset, resolvedWidth } = calcEllipsis(leftOffset, text)\n\n text = subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n } else {\n const nextLineText = texts[i + 1]\n\n const { subset, resolvedWidth } = calcEllipsis(\n width + leftOffset,\n nextLineText\n )\n\n text = text + subset + _blockEllipsis\n skippedLine = line\n decorationLines[line][2] = resolvedWidth\n isLastDisplayedBeforeEllipsis = true\n }\n }\n }\n }\n\n if (image) {\n // For images, we remove the baseline offset.\n topOffset += 0\n } else if (embedFont) {\n // If the current word and the next word are on the same line, we try to\n // merge them together to better handle the kerning.\n if (\n !text.includes(Tab) &&\n !wordSeparators.includes(text) &&\n texts[i + 1] &&\n nextLayout &&\n !nextLayout.isImage &&\n topOffset === nextLayout.y &&\n !isLastDisplayedBeforeEllipsis\n ) {\n if (wordBuffer === null) {\n bufferedOffset = leftOffset\n }\n wordBuffer = wordBuffer === null ? text : wordBuffer + text\n continue\n }\n\n const finalizedSegment = wordBuffer === null ? text : wordBuffer + text\n const finalizedLeftOffset =\n wordBuffer === null ? leftOffset : bufferedOffset\n const finalizedWidth = layout.width + leftOffset - finalizedLeftOffset\n\n path = engine.getSVG(finalizedSegment.replace(/(\\t)+/g, ''), {\n fontSize,\n left: left + finalizedLeftOffset,\n // Since we need to pass the baseline position, add the ascender to the top.\n top: top + topOffset + baselineOfWord + baselineDelta,\n letterSpacing,\n })\n\n wordBuffer = null\n\n if (debug) {\n extra +=\n // Glyph\n buildXMLString('rect', {\n x: left + finalizedLeftOffset,\n y: top + topOffset + baselineDelta,\n width: finalizedWidth,\n height: heightOfWord,\n fill: 'transparent',\n stroke: '#575eff',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n }) +\n // Baseline\n buildXMLString('line', {\n x1: left + leftOffset,\n x2: left + leftOffset + layout.width,\n y1: top + topOffset + baselineDelta + baselineOfWord,\n y2: top + topOffset + baselineDelta + baselineOfWord,\n stroke: '#14c000',\n 'stroke-width': 1,\n transform: matrix ? matrix : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n } else {\n // We need manually add the font ascender height to ensure it starts\n // at the baseline because 's alignment baseline is set to `hanging`\n // by default and supported to change in SVG 1.1.\n topOffset += baselineOfWord + baselineDelta\n }\n\n // Get the decoration shape.\n if (parentStyle.textDecorationLine) {\n const deco = decorationLines[line]\n if (deco && !deco[4]) {\n decorationShape += buildDecoration(\n {\n left: left + deco[0],\n top: deco[1],\n width: deco[3],\n ascender: deco[2],\n clipPathId,\n matrix,\n },\n parentStyle\n )\n deco[4] = 1\n }\n }\n\n if (path !== null) {\n mergedPath += path + ' '\n } else {\n const [t, shape] = buildText(\n {\n content: text,\n filter,\n id,\n left: left + leftOffset,\n top: top + topOffset,\n width,\n height: heightOfWord,\n matrix,\n opacity,\n image,\n clipPathId,\n debug,\n shape: !!_inheritedBackgroundClipTextPath,\n decorationShape,\n },\n parentStyle\n )\n result += t\n backgroundClipDef += shape\n decorationShape = ''\n }\n\n if (isLastDisplayedBeforeEllipsis) {\n break\n }\n }\n\n // Embed the font as path.\n if (mergedPath) {\n const p =\n parentStyle.color !== 'transparent' && opacity !== 0\n ? buildXMLString('path', {\n fill: parentStyle.color,\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n opacity: opacity !== 1 ? opacity : undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n mask: overflowMaskId ? `url(#${overflowMaskId})` : undefined,\n\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n 'stroke-width': inheritedStyle.WebkitTextStrokeWidth\n ? `${inheritedStyle.WebkitTextStrokeWidth}px`\n : undefined,\n stroke: inheritedStyle.WebkitTextStrokeWidth\n ? inheritedStyle.WebkitTextStrokeColor\n : undefined,\n 'stroke-linejoin': inheritedStyle.WebkitTextStrokeWidth\n ? 'round'\n : undefined,\n 'paint-order': inheritedStyle.WebkitTextStrokeWidth\n ? 'stroke'\n : undefined,\n })\n : ''\n\n if (_inheritedBackgroundClipTextPath) {\n backgroundClipDef = buildXMLString('path', {\n d: mergedPath,\n transform: matrix ? matrix : undefined,\n })\n }\n\n result +=\n (filter\n ? filter +\n buildXMLString(\n 'g',\n { filter: `url(#satori_s-${id})` },\n p + decorationShape\n )\n : p + decorationShape) + extra\n }\n\n // Attach information to the parent node.\n if (backgroundClipDef) {\n ;(parentStyle._inheritedBackgroundClipTextPath as any).value +=\n backgroundClipDef\n }\n\n return result\n}\n\nfunction createTextContainerNode(\n Yoga: Yoga,\n textAlign: string\n): ReturnType {\n // Create a container node for this text fragment.\n const textContainer = Yoga.Node.create()\n textContainer.setAlignItems(Yoga.ALIGN_BASELINE)\n textContainer.setJustifyContent(\n v(\n textAlign,\n {\n left: Yoga.JUSTIFY_FLEX_START,\n right: Yoga.JUSTIFY_FLEX_END,\n center: Yoga.JUSTIFY_CENTER,\n justify: Yoga.JUSTIFY_SPACE_BETWEEN,\n // We don't have other writing modes yet.\n start: Yoga.JUSTIFY_FLEX_START,\n end: Yoga.JUSTIFY_FLEX_END,\n },\n Yoga.JUSTIFY_FLEX_START,\n 'textAlign'\n )\n )\n\n return textContainer\n}\n\nfunction detectTabs(text: string):\n | {\n index: null\n tabCount: 0\n }\n | {\n index: number\n tabCount: number\n } {\n const result = /(\\t)+/.exec(text)\n return result\n ? {\n index: result.index,\n tabCount: result[0].length,\n }\n : {\n index: null,\n tabCount: 0,\n }\n}\n","import { lengthToNumber } from '../../utils.js'\nimport cssColorParse from 'parse-css-color'\nimport type { ColorStop } from 'css-gradient-parser'\n\ninterface Stop {\n color: string\n offset?: number\n}\n\nexport function normalizeStops(\n totalLength: number,\n colorStops: ColorStop[],\n inheritedStyle: Record,\n repeating: boolean,\n from?: 'background' | 'mask'\n) {\n // Resolve the color stops based on the spec:\n // https://drafts.csswg.org/css-images/#color-stop-syntax\n const stops: Stop[] = []\n for (const stop of colorStops) {\n const { color } = stop\n if (!stops.length) {\n // First stop, ensure it's at the start.\n stops.push({\n offset: 0,\n color,\n })\n\n if (!stop.offset) continue\n if (stop.offset.value === '0') continue\n }\n\n // All offsets are relative values (0-1) in SVG.\n const offset =\n typeof stop.offset === 'undefined'\n ? undefined\n : stop.offset.unit === '%'\n ? +stop.offset.value / 100\n : Number(\n lengthToNumber(\n `${stop.offset.value}${stop.offset.unit}`,\n inheritedStyle.fontSize as number,\n totalLength,\n inheritedStyle,\n true\n )\n ) / totalLength\n\n stops.push({\n offset,\n color,\n })\n }\n if (!stops.length) {\n stops.push({\n offset: 0,\n color: 'transparent',\n })\n }\n // Last stop, ensure it's at the end.\n const lastStop = stops[stops.length - 1]\n if (lastStop.offset !== 1) {\n if (typeof lastStop.offset === 'undefined') {\n lastStop.offset = 1\n } else if (repeating) {\n stops[stops.length - 1] = {\n offset: 1,\n color: lastStop.color,\n }\n } else {\n stops.push({\n offset: 1,\n color: lastStop.color,\n })\n }\n }\n\n let previousStop = 0\n let nextStop = 1\n // Evenly distribute the missing stop offsets.\n for (let i = 0; i < stops.length; i++) {\n if (typeof stops[i].offset === 'undefined') {\n // Find the next stop that has an offset.\n if (nextStop < i) nextStop = i\n while (typeof stops[nextStop].offset === 'undefined') nextStop++\n\n stops[i].offset =\n ((stops[nextStop].offset - stops[previousStop].offset) /\n (nextStop - previousStop)) *\n (i - previousStop) +\n stops[previousStop].offset\n } else {\n previousStop = i\n }\n }\n\n if (from === 'mask') {\n return stops.map((stop) => {\n const color = cssColorParse(stop.color)\n if (!color) return stop\n if (color.alpha === 0) {\n return { ...stop, color: `rgba(0, 0, 0, 1)` }\n } else {\n return { ...stop, color: `rgba(255, 255, 255, ${color.alpha})` }\n }\n })\n }\n\n return stops\n}\n","import { parseLinearGradient, ColorStop } from 'css-gradient-parser'\nimport { normalizeStops } from './utils.js'\nimport { buildXMLString, calcDegree, lengthToNumber } from '../../utils.js'\n\nexport function buildLinearGradient(\n {\n id,\n width,\n height,\n repeatX,\n repeatY,\n }: {\n id: string\n width: number\n height: number\n repeatX: boolean\n repeatY: boolean\n },\n image: string,\n dimensions: number[],\n offsets: number[],\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n) {\n const parsed = parseLinearGradient(image)\n const [imageWidth, imageHeight] = dimensions\n const repeating = image.startsWith('repeating')\n\n // Calculate the direction.\n let points, length, xys\n\n if (parsed.orientation.type === 'directional') {\n points = resolveXYFromDirection(parsed.orientation.value)\n\n length = Math.sqrt(\n Math.pow((points.x2 - points.x1) * imageWidth, 2) +\n Math.pow((points.y2 - points.y1) * imageHeight, 2)\n )\n } else if (parsed.orientation.type === 'angular') {\n const { length: l, ...p } = calcNormalPoint(\n (calcDegree(\n `${parsed.orientation.value.value}${parsed.orientation.value.unit}`\n ) /\n 180) *\n Math.PI,\n imageWidth,\n imageHeight\n )\n\n length = l\n points = p\n }\n\n xys = repeating\n ? calcPercentage(parsed.stops, length, points, inheritableStyle)\n : points\n\n const stops = normalizeStops(\n repeating ? resolveRepeatingCycle(parsed.stops, length) : length,\n parsed.stops,\n inheritableStyle,\n repeating,\n from\n )\n\n const gradientId = `satori_bi${id}`\n const patternId = `satori_pattern_${id}`\n\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? imageWidth / width : '1',\n height: repeatY ? imageHeight / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'linearGradient',\n {\n id: gradientId,\n ...xys,\n spreadMethod: repeating ? 'repeat' : 'pad',\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: (stop.offset ?? 0) * 100 + '%',\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: imageWidth,\n height: imageHeight,\n fill: `url(#${gradientId})`,\n })\n )\n return [patternId, defs]\n}\n\nfunction resolveRepeatingCycle(stops: ColorStop[], length: number) {\n const last = stops[stops.length - 1]\n const { offset } = last\n if (!offset) return length\n\n if (offset.unit === '%') return (Number(offset.value) / 100) * length\n\n return Number(offset.value)\n}\n\nfunction resolveXYFromDirection(dir: string) {\n let x1 = 0,\n y1 = 0,\n x2 = 0,\n y2 = 0\n\n if (dir.includes('top')) {\n y1 = 1\n } else if (dir.includes('bottom')) {\n y2 = 1\n }\n\n if (dir.includes('left')) {\n x1 = 1\n } else if (dir.includes('right')) {\n x2 = 1\n }\n\n if (!x1 && !x2 && !y1 && !y2) {\n y1 = 1\n }\n\n return { x1, y1, x2, y2 }\n}\n\n/**\n * calc start point and end point of linear gradient\n */\nfunction calcNormalPoint(v: number, w: number, h: number) {\n const r = Math.pow(h / w, 2)\n\n // make sure angle is 0 <= angle <= 360\n v = ((v % (Math.PI * 2)) + Math.PI * 2) % (Math.PI * 2)\n\n let x1, y1, x2, y2, length, tmp, a, b\n\n const dfs = (angle: number) => {\n if (angle === 0) {\n x1 = 0\n y1 = h\n x2 = 0\n y2 = 0\n length = h\n return\n } else if (angle === Math.PI / 2) {\n x1 = 0\n y1 = 0\n x2 = w\n y2 = 0\n length = w\n return\n }\n if (angle > 0 && angle < Math.PI / 2) {\n x1 =\n ((r * w) / 2 / Math.tan(angle) - h / 2) /\n (Math.tan(angle) + r / Math.tan(angle))\n y1 = Math.tan(angle) * x1 + h\n x2 = Math.abs(w / 2 - x1) + w / 2\n y2 = h / 2 - Math.abs(y1 - h / 2)\n length = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))\n // y = -1 / tan * x = h / 2 +1 / tan * w/2\n // y = tan * x + h\n a =\n (w / 2 / Math.tan(angle) - h / 2) /\n (Math.tan(angle) + 1 / Math.tan(angle))\n b = Math.tan(angle) * a + h\n length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n return\n } else if (angle > Math.PI / 2 && angle < Math.PI) {\n x1 =\n (h / 2 + (r * w) / 2 / Math.tan(angle)) /\n (Math.tan(angle) + r / Math.tan(angle))\n y1 = Math.tan(angle) * x1\n x2 = Math.abs(w / 2 - x1) + w / 2\n y2 = h / 2 + Math.abs(y1 - h / 2)\n // y = -1 / tan * x + h / 2 + 1 / tan * w / 2\n // y = tan * x\n a =\n (w / 2 / Math.tan(angle) + h / 2) /\n (Math.tan(angle) + 1 / Math.tan(angle))\n b = Math.tan(angle) * a\n length = 2 * Math.sqrt(Math.pow(w / 2 - a, 2) + Math.pow(h / 2 - b, 2))\n return\n } else if (angle >= Math.PI) {\n dfs(angle - Math.PI)\n\n tmp = x1\n x1 = x2\n x2 = tmp\n tmp = y1\n y1 = y2\n y2 = tmp\n }\n }\n\n dfs(v)\n\n return {\n x1: x1 / w,\n y1: y1 / h,\n x2: x2 / w,\n y2: y2 / h,\n length,\n }\n}\n\nfunction calcPercentage(\n stops: ColorStop[],\n length: number,\n points: {\n x1: number\n y1: number\n x2: number\n y2: number\n },\n inheritableStyle: Record\n) {\n const { x1, x2, y1, y2 } = points\n const p1 = !stops[0].offset\n ? 0\n : stops[0].offset.unit === '%'\n ? Number(stops[0].offset.value) / 100\n : lengthToNumber(\n `${stops[0].offset.value}${stops[0].offset.unit}`,\n inheritableStyle.fontSize as number,\n length,\n inheritableStyle,\n true\n ) / length\n const p2 = !stops.at(-1).offset\n ? 1\n : stops.at(-1).offset.unit === '%'\n ? Number(stops.at(-1).offset.value) / 100\n : lengthToNumber(\n `${stops.at(-1).offset.value}${stops.at(-1).offset.unit}`,\n inheritableStyle.fontSize as number,\n length,\n inheritableStyle,\n true\n ) / length\n\n const sx = (x2 - x1) * p1 + x1\n const sy = (y2 - y1) * p1 + y1\n const ex = (x2 - x1) * p2 + x1\n const ey = (y2 - y1) * p2 + y1\n\n return {\n x1: sx,\n y1: sy,\n x2: ex,\n y2: ey,\n }\n}\n","import {\n parseRadialGradient,\n RadialResult,\n RadialPropertyValue,\n} from 'css-gradient-parser'\nimport { buildXMLString, lengthToNumber } from '../../utils.js'\nimport { normalizeStops } from './utils.js'\n\nexport function buildRadialGradient(\n {\n id,\n width,\n height,\n repeatX,\n repeatY,\n }: {\n id: string\n width: number\n height: number\n repeatX: boolean\n repeatY: boolean\n },\n image: string,\n dimensions: number[],\n offsets: number[],\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n) {\n const {\n shape,\n stops: colorStops,\n position,\n size,\n } = parseRadialGradient(image)\n const [xDelta, yDelta] = dimensions\n\n let cx: number = xDelta / 2\n let cy: number = yDelta / 2\n\n const pos = calcRadialGradient(\n position.x,\n position.y,\n xDelta,\n yDelta,\n inheritableStyle.fontSize as number,\n inheritableStyle\n )\n cx = pos.x\n cy = pos.y\n\n const stops = normalizeStops(width, colorStops, inheritableStyle, false, from)\n\n const gradientId = `satori_radial_${id}`\n const patternId = `satori_pattern_${id}`\n const maskId = `satori_mask_${id}`\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/radial-gradient()#values\n const spread = calcRadius(\n shape as Shape,\n size,\n inheritableStyle.fontSize as number,\n { x: cx, y: cy },\n [xDelta, yDelta],\n inheritableStyle\n )\n\n // TODO: check for repeat-x/repeat-y\n const defs = buildXMLString(\n 'pattern',\n {\n id: patternId,\n x: offsets[0] / width,\n y: offsets[1] / height,\n width: repeatX ? xDelta / width : '1',\n height: repeatY ? yDelta / height : '1',\n patternUnits: 'objectBoundingBox',\n },\n buildXMLString(\n 'radialGradient',\n {\n id: gradientId,\n },\n stops\n .map((stop) =>\n buildXMLString('stop', {\n offset: stop.offset || 0,\n 'stop-color': stop.color,\n })\n )\n .join('')\n ) +\n buildXMLString(\n 'mask',\n {\n id: maskId,\n },\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: '#fff',\n })\n ) +\n buildXMLString('rect', {\n x: 0,\n y: 0,\n width: xDelta,\n height: yDelta,\n fill: stops.at(-1)?.color || 'transparent',\n }) +\n buildXMLString(shape, {\n cx: cx,\n cy: cy,\n width: xDelta,\n height: yDelta,\n ...spread,\n fill: `url(#${gradientId})`,\n mask: `url(#${maskId})`,\n })\n )\n\n const result = [patternId, defs]\n return result\n}\n\ninterface Position {\n type: 'keyword' | 'length'\n value: string\n}\n\ntype PositionKeyWord = 'center' | 'left' | 'right' | 'top' | 'bottom'\n\nfunction calcRadialGradient(\n cx: RadialPropertyValue,\n cy: RadialPropertyValue,\n xDelta: number,\n yDelta: number,\n baseFontSize: number,\n style: Record\n) {\n const pos: { x: number; y: number } = { x: xDelta / 2, y: yDelta / 2 }\n if (cx.type === 'keyword') {\n Object.assign(\n pos,\n calcPos(cx.value as PositionKeyWord, xDelta, yDelta, 'x')\n )\n } else {\n pos.x =\n lengthToNumber(\n `${cx.value.value}${cx.value.unit}`,\n baseFontSize,\n xDelta,\n style,\n true\n ) || xDelta / 2\n }\n\n if (cy.type === 'keyword') {\n Object.assign(\n pos,\n calcPos(cy.value as PositionKeyWord, xDelta, yDelta, 'y')\n )\n } else {\n pos.y =\n lengthToNumber(\n `${cy.value.value}${cy.value.unit}`,\n baseFontSize,\n yDelta,\n style,\n true\n ) || yDelta / 2\n }\n\n return pos\n}\n\nfunction calcPos(\n key: PositionKeyWord,\n xDelta: number,\n yDelta: number,\n dir: 'x' | 'y'\n) {\n switch (key) {\n case 'center':\n return { [dir]: dir === 'x' ? xDelta / 2 : yDelta / 2 }\n case 'left':\n return { x: 0 }\n case 'top':\n return { y: 0 }\n case 'right':\n return { x: xDelta }\n case 'bottom':\n return { y: yDelta }\n }\n}\n\ntype Shape = 'circle' | 'ellipse'\nfunction calcRadius(\n shape: Shape,\n endingShape: RadialResult['size'],\n baseFontSize: number,\n centerAxis: { x: number; y: number },\n length: [number, number],\n inheritableStyle: Record\n) {\n const [xDelta, yDelta] = length\n const { x: cx, y: cy } = centerAxis\n const spread: Record = {}\n let fx = 0\n let fy = 0\n\n if (isSizeAllLength(endingShape)) {\n if (endingShape.some((v) => v.value.value.startsWith('-'))) {\n throw new Error(\n 'disallow setting negative values to the size of the shape. Check https://w3c.github.io/csswg-drafts/css-images/#valdef-rg-size-length-0'\n )\n }\n if (shape === 'circle') {\n return {\n r: Number(\n lengthToNumber(\n `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n )\n ),\n }\n } else {\n return {\n rx: Number(\n lengthToNumber(\n `${endingShape[0].value.value}${endingShape[0].value.unit}`,\n baseFontSize,\n xDelta,\n inheritableStyle,\n true\n )\n ),\n ry: Number(\n lengthToNumber(\n `${endingShape[1].value.value}${endingShape[1].value.unit}`,\n baseFontSize,\n yDelta,\n inheritableStyle,\n true\n )\n ),\n }\n }\n }\n\n switch (endingShape[0].value) {\n case 'farthest-corner':\n fx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'closest-corner':\n fx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n fy = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n break\n case 'farthest-side':\n if (shape === 'circle') {\n spread.r = Math.max(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.max(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.max(Math.abs(yDelta - cy), Math.abs(cy))\n }\n return spread\n case 'closest-side':\n if (shape === 'circle') {\n spread.r = Math.min(\n Math.abs(xDelta - cx),\n Math.abs(cx),\n Math.abs(yDelta - cy),\n Math.abs(cy)\n )\n } else {\n spread.rx = Math.min(Math.abs(xDelta - cx), Math.abs(cx))\n spread.ry = Math.min(Math.abs(yDelta - cy), Math.abs(cy))\n }\n\n return spread\n }\n if (shape === 'circle') {\n spread.r = Math.sqrt(fx * fx + fy * fy)\n } else {\n // Spec: https://drafts.csswg.org/css-images/#typedef-size\n // Get the aspect ratio of the closest-side size.\n const ratio = fy !== 0 ? fx / fy : 1\n\n if (fx === 0) {\n spread.rx = 0\n spread.ry = 0\n } else {\n // fx^2/a^2 + fy^2/b^2 = 1\n // fx^2/(b*ratio)^2 + fy^2/b^2 = 1\n // (fx^2+fy^2*ratio^2) = (b*ratio)^2\n // b = sqrt(fx^2+fy^2*ratio^2)/ratio\n\n spread.ry = Math.sqrt(fx * fx + fy * fy * ratio * ratio) / ratio\n spread.rx = spread.ry * ratio\n }\n }\n\n return spread\n}\n\nfunction isSizeAllLength(v: RadialPropertyValue[]): v is Array<{\n type: 'length'\n value: {\n unit: string\n value: string\n }\n}> {\n return !v.some((s) => s.type === 'keyword')\n}\n","import CssDimension from '../vendor/parse-css-dimension/index.js'\nimport { buildXMLString } from '../utils.js'\n\nimport { resolveImageData } from '../handler/image.js'\nimport { buildLinearGradient } from './gradient/linear.js'\nimport { buildRadialGradient } from './gradient/radial.js'\n\ninterface Background {\n attachment?: string\n color?: string\n clip: string\n image: string\n origin?: string\n position: string\n size: string\n repeat: string\n}\n\nfunction toAbsoluteValue(v: string | number, base: number) {\n if (typeof v === 'string' && v.endsWith('%')) {\n return (base * parseFloat(v)) / 100\n }\n return +v\n}\n\nfunction parseLengthPairs(\n str: string,\n {\n x,\n y,\n defaultX,\n defaultY,\n }: {\n x: number\n y: number\n defaultX: number | string\n defaultY: number | string\n }\n) {\n return (\n str\n ? str\n .split(' ')\n .map((value) => {\n try {\n const parsed = new CssDimension(value)\n return parsed.type === 'length' || parsed.type === 'number'\n ? parsed.value\n : parsed.value + parsed.unit\n } catch (e) {\n return null\n }\n })\n .filter((v) => v !== null)\n : [defaultX, defaultY]\n ).map((v, index) => toAbsoluteValue(v, [x, y][index]))\n}\n\nexport default async function backgroundImage(\n {\n id,\n width,\n height,\n left,\n top,\n }: { id: string; width: number; height: number; left: number; top: number },\n { image, size, position, repeat }: Background,\n inheritableStyle: Record,\n from?: 'background' | 'mask'\n): Promise {\n // Default to `repeat`.\n repeat = repeat || 'repeat'\n from = from || 'background'\n\n const repeatX = repeat === 'repeat-x' || repeat === 'repeat'\n const repeatY = repeat === 'repeat-y' || repeat === 'repeat'\n\n const dimensions = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: width,\n defaultY: height,\n })\n const offsets = parseLengthPairs(position, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n\n if (\n image.startsWith('linear-gradient(') ||\n image.startsWith('repeating-linear-gradient(')\n ) {\n return buildLinearGradient(\n { id, width, height, repeatX, repeatY },\n image,\n dimensions,\n offsets,\n inheritableStyle,\n from\n )\n }\n\n if (image.startsWith('radial-gradient(')) {\n return buildRadialGradient(\n { id, width, height, repeatX, repeatY },\n image,\n dimensions,\n offsets,\n inheritableStyle,\n from\n )\n }\n\n if (image.startsWith('url(')) {\n const dimensionsWithoutFallback = parseLengthPairs(size, {\n x: width,\n y: height,\n defaultX: 0,\n defaultY: 0,\n })\n const [src, imageWidth, imageHeight] = await resolveImageData(\n image.slice(4, -1)\n )\n const resolvedWidth =\n from === 'mask'\n ? imageWidth || dimensionsWithoutFallback[0]\n : dimensionsWithoutFallback[0] || imageWidth\n const resolvedHeight =\n from === 'mask'\n ? imageHeight || dimensionsWithoutFallback[1]\n : dimensionsWithoutFallback[1] || imageHeight\n\n return [\n `satori_bi${id}`,\n buildXMLString(\n 'pattern',\n {\n id: `satori_bi${id}`,\n patternContentUnits: 'userSpaceOnUse',\n patternUnits: 'userSpaceOnUse',\n x: offsets[0] + left,\n y: offsets[1] + top,\n width: repeatX ? resolvedWidth : '100%',\n height: repeatY ? resolvedHeight : '100%',\n },\n buildXMLString('image', {\n x: 0,\n y: 0,\n width: resolvedWidth,\n height: resolvedHeight,\n preserveAspectRatio: 'none',\n href: src,\n })\n ),\n ]\n }\n\n throw new Error(`Invalid background image: \"${image}\"`)\n}\n","/**\n * CSS border radius to SVG path.\n */\n\n// TODO: Support the `border-radius: 10px / 20px` syntax.\n// https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius\n\nimport { buildXMLString, lengthToNumber } from '../utils.js'\n\n// Getting the intersection of a 45deg ray with the elliptical arc x^2/rx^2 + y^2/ry^2 = 1.\n// Reference:\n// https://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter\nfunction svgArcCenterOffset([rx, ry]: number[]) {\n if (Math.round(rx * 1000) === 0 && Math.round(ry * 1000) === 0) {\n return 0\n }\n return Math.round(((rx * ry) / Math.sqrt(rx * rx + ry * ry)) * 1000) / 1000\n}\n\nfunction resolveSize(a: number, b: number, limit: number) {\n if (limit < a + b) {\n if (limit / 2 < a && limit / 2 < b) {\n a = b = limit / 2\n } else if (limit / 2 < a) {\n a = limit - b\n } else if (limit / 2 < b) {\n b = limit - a\n }\n }\n return [a, b]\n}\n\nfunction makeSmaller(arr: [number, number]) {\n arr[0] = arr[1] = Math.min(arr[0], arr[1])\n}\n\n// Each corner can have 2 values, the first is the horizontal radius, the second is the vertical radius.\nfunction resolveRadius(\n v: number | string | undefined,\n width: number,\n height: number,\n fontSize: number,\n style: any\n): [boolean, undefined | [number, number]] {\n if (typeof v === 'string') {\n const sides = v.split(' ').map((s) => s.trim())\n const singleValue = !sides[1] && !sides[0].endsWith('%')\n sides[1] = sides[1] || sides[0]\n return [\n singleValue,\n [\n Math.min(lengthToNumber(sides[0], fontSize, width, style, true), width),\n Math.min(\n lengthToNumber(sides[1], fontSize, height, style, true),\n height\n ),\n ],\n ]\n }\n if (typeof v === 'number') {\n return [true, [Math.min(v, width), Math.min(v, height)]]\n }\n return [true, undefined]\n}\n\nconst radiusZeroOrNull = (_radius?: [number, number]) =>\n _radius && _radius[0] !== 0 && _radius[1] !== 0\n\nexport function getBorderRadiusClipPath(\n {\n id,\n borderRadiusPath,\n borderType,\n left,\n top,\n width,\n height,\n }: {\n id: string\n borderRadiusPath?: string\n borderType?: 'rect' | 'path'\n left: number\n top: number\n width: number\n height: number\n },\n style: Record\n) {\n const rectClipId = `satori_brc-${id}`\n const defs = buildXMLString(\n 'clipPath',\n {\n id: rectClipId,\n },\n buildXMLString(borderType, {\n x: left,\n y: top,\n width,\n height,\n d: borderRadiusPath ? borderRadiusPath : undefined,\n })\n )\n\n return [defs, rectClipId]\n}\n\nexport default function radius(\n {\n left,\n top,\n width,\n height,\n }: {\n left: number\n top: number\n width: number\n height: number\n },\n style: Record,\n partialSides?: boolean[]\n) {\n let {\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomLeftRadius,\n borderBottomRightRadius,\n fontSize,\n } = style\n\n let singleAbsValueTopLeftCorner\n let singleAbsValueTopRightCorner\n let singleAbsValueBottomLeftCorner\n let singleAbsValueBottomRightCorner\n ;[singleAbsValueTopLeftCorner, borderTopLeftRadius] = resolveRadius(\n borderTopLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueTopRightCorner, borderTopRightRadius] = resolveRadius(\n borderTopRightRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomLeftCorner, borderBottomLeftRadius] = resolveRadius(\n borderBottomLeftRadius,\n width,\n height,\n fontSize,\n style\n )\n ;[singleAbsValueBottomRightCorner, borderBottomRightRadius] = resolveRadius(\n borderBottomRightRadius,\n width,\n height,\n fontSize,\n style\n )\n\n if (\n !partialSides &&\n !radiusZeroOrNull(borderTopLeftRadius) &&\n !radiusZeroOrNull(borderTopRightRadius) &&\n !radiusZeroOrNull(borderBottomLeftRadius) &&\n !radiusZeroOrNull(borderBottomRightRadius)\n ) {\n return ''\n }\n borderTopLeftRadius ||= [0, 0]\n borderTopRightRadius ||= [0, 0]\n borderBottomLeftRadius ||= [0, 0]\n borderBottomRightRadius ||= [0, 0]\n\n // Limit the radius sizes of each edge to make sure they will never overlap.\n\n // Top\n ;[borderTopLeftRadius[0], borderTopRightRadius[0]] = resolveSize(\n borderTopLeftRadius[0],\n borderTopRightRadius[0],\n width\n )\n // Bottom\n ;[borderBottomLeftRadius[0], borderBottomRightRadius[0]] = resolveSize(\n borderBottomLeftRadius[0],\n borderBottomRightRadius[0],\n width\n )\n // Left\n ;[borderTopLeftRadius[1], borderBottomLeftRadius[1]] = resolveSize(\n borderTopLeftRadius[1],\n borderBottomLeftRadius[1],\n height\n )\n // Right\n ;[borderTopRightRadius[1], borderBottomRightRadius[1]] = resolveSize(\n borderTopRightRadius[1],\n borderBottomRightRadius[1],\n height\n )\n\n // If the specified border radius is a single value (e.g. 10px or 10em), we take\n // the minimum of the resolved horizontal and vertical radius and apply to both.\n if (singleAbsValueTopLeftCorner) {\n makeSmaller(borderTopLeftRadius)\n }\n if (singleAbsValueTopRightCorner) {\n makeSmaller(borderTopRightRadius)\n }\n if (singleAbsValueBottomLeftCorner) {\n makeSmaller(borderBottomLeftRadius)\n }\n if (singleAbsValueBottomRightCorner) {\n makeSmaller(borderBottomRightRadius)\n }\n\n type Arc = [[number, number], [number, number]]\n const p: Arc[] = []\n p[0] = [borderTopRightRadius, borderTopRightRadius]\n p[1] = [\n borderBottomRightRadius,\n [-borderBottomRightRadius[0], borderBottomRightRadius[1]],\n ]\n p[2] = [\n borderBottomLeftRadius,\n [-borderBottomLeftRadius[0], -borderBottomLeftRadius[1]],\n ]\n p[3] = [\n borderTopLeftRadius,\n [borderTopLeftRadius[0], -borderTopLeftRadius[1]],\n ]\n\n const T = `h${width - borderTopLeftRadius[0] - borderTopRightRadius[0]} a${\n p[0][0]\n } 0 0 1 ${p[0][1]}`\n const R = `v${\n height - borderTopRightRadius[1] - borderBottomRightRadius[1]\n } a${p[1][0]} 0 0 1 ${p[1][1]}`\n const B = `h${\n borderBottomRightRadius[0] + borderBottomLeftRadius[0] - width\n } a${p[2][0]} 0 0 1 ${p[2][1]}`\n const L = `v${borderBottomLeftRadius[1] + borderTopLeftRadius[1] - height} a${\n p[3][0]\n } 0 0 1 ${p[3][1]}`\n\n if (partialSides) {\n // \"However it is not defined what these transitions look like or what function maps from this ratio to a point on the curve.\"\n // https://w3c.github.io/csswg-drafts/css-backgrounds-3/#corner-transitions\n let start = partialSides.indexOf(false)\n\n if (!partialSides.includes(true)) throw new Error('Invalid `partialSides`.')\n\n if (start === -1) {\n start = 0\n } else {\n while (!partialSides[start]) {\n start = (start + 1) % 4\n }\n }\n\n function getArc(i: number) {\n const c0 = svgArcCenterOffset(\n [\n borderTopLeftRadius,\n borderTopRightRadius,\n borderBottomRightRadius,\n borderBottomLeftRadius,\n ][i]\n )\n return i === 0\n ? [\n [\n left + borderTopLeftRadius[0] - c0,\n top + borderTopLeftRadius[1] - c0,\n ],\n [left + borderTopLeftRadius[0], top],\n ]\n : i === 1\n ? [\n [\n left + width - borderTopRightRadius[0] + c0,\n top + borderTopRightRadius[1] - c0,\n ],\n [left + width, top + borderTopRightRadius[1]],\n ]\n : i === 2\n ? [\n [\n left + width - borderBottomRightRadius[0] + c0,\n top + height - borderBottomRightRadius[1] + c0,\n ],\n [left + width - borderBottomRightRadius[0], top + height],\n ]\n : [\n [\n left + borderBottomLeftRadius[0] - c0,\n top + height - borderBottomLeftRadius[1] + c0,\n ],\n [left, top + height - borderBottomLeftRadius[1]],\n ]\n }\n\n let result = ''\n\n const arc0 = getArc(start)\n\n let l = `M${arc0[0]} A${p[(start + 3) % 4][0]} 0 0 1 ${arc0[1]}`\n\n let len = 0\n for (; len < 4 && partialSides[(start + len) % 4]; len++) {\n result += l + ' '\n l = [T, R, B, L][(start + len) % 4]\n }\n const end = (start + len) % 4\n\n // For the last segment, we skip the full arc and add the half arc.\n result += l.split(' ')[0]\n\n const arc1 = getArc(end)\n result += ` A${p[(end + 3) % 4][0]} 0 0 1 ${arc1[0]}`\n\n return result\n }\n\n // Generate the path\n return `M${left + borderTopLeftRadius[0]},${top} ${T} ${R} ${B} ${L}`\n}\n","import { buildXMLString } from '../utils.js'\nimport radius from './border-radius.js'\n\nfunction compareBorderDirections(a: string, b: string, style: any) {\n return (\n style[a + 'Width'] === style[b + 'Width'] &&\n style[a + 'Style'] === style[b + 'Style'] &&\n style[a + 'Color'] === style[b + 'Color']\n )\n}\n\nexport function getBorderClipPath(\n {\n id,\n // Can be `overflow: hidden` from parent containers.\n currentClipPathId,\n borderPath,\n borderType,\n left,\n top,\n width,\n height,\n }: {\n id: string\n currentClipPathId?: string | number\n borderPath?: string\n borderType?: 'rect' | 'path'\n left: number\n top: number\n width: number\n height: number\n },\n style: Record\n) {\n const hasBorder =\n style.borderTopWidth ||\n style.borderRightWidth ||\n style.borderBottomWidth ||\n style.borderLeftWidth\n\n if (!hasBorder) return null\n\n // In SVG, stroke is always centered on the path and there is no\n // existing property to make it behave like CSS border. So here we\n // 2x the border width and introduce another clip path to clip the\n // overflowed part.\n const rectClipId = `satori_bc-${id}`\n const defs = buildXMLString(\n 'clipPath',\n {\n id: rectClipId,\n 'clip-path': currentClipPathId ? `url(#${currentClipPathId})` : undefined,\n },\n buildXMLString(borderType, {\n x: left,\n y: top,\n width,\n height,\n d: borderPath ? borderPath : undefined,\n })\n )\n\n return [defs, rectClipId]\n}\n\nexport default function border(\n {\n left,\n top,\n width,\n height,\n props,\n asContentMask,\n maskBorderOnly,\n }: {\n left: number\n top: number\n width: number\n height: number\n props: any\n asContentMask?: boolean\n maskBorderOnly?: boolean\n },\n style: Record\n) {\n const directions = ['borderTop', 'borderRight', 'borderBottom', 'borderLeft']\n\n // No border\n if (\n !asContentMask &&\n !directions.some((direction) => style[direction + 'Width'])\n )\n return ''\n\n let fullBorder = ''\n\n let start = 0\n while (\n start > 0 &&\n compareBorderDirections(\n directions[start],\n directions[(start + 3) % 4],\n style\n )\n ) {\n start = (start + 3) % 4\n }\n\n let partialSides = [false, false, false, false]\n let currentStyle = []\n for (let _i = 0; _i < 4; _i++) {\n const i = (start + _i) % 4\n const ni = (start + _i + 1) % 4\n\n const d = directions[i]\n const nd = directions[ni]\n\n partialSides[i] = true\n currentStyle = [\n style[d + 'Width'],\n style[d + 'Style'],\n style[d + 'Color'],\n d,\n ]\n\n if (!compareBorderDirections(d, nd, style)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[d.replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record,\n partialSides\n ),\n })\n }\n partialSides = [false, false, false, false]\n }\n }\n\n if (partialSides.some(Boolean)) {\n const w =\n (currentStyle[0] || 0) +\n (asContentMask && !maskBorderOnly\n ? style[currentStyle[3].replace('border', 'padding')] || 0\n : 0)\n if (w) {\n fullBorder += buildXMLString('path', {\n width,\n height,\n ...props,\n fill: 'none',\n stroke: asContentMask ? '#000' : currentStyle[2],\n 'stroke-width': w * 2,\n 'stroke-dasharray':\n !asContentMask && currentStyle[1] === 'dashed'\n ? w * 2 + ' ' + w\n : undefined,\n d: radius(\n { left, top, width, height },\n style as Record,\n partialSides\n ),\n })\n }\n }\n\n return fullBorder\n}\n","/**\n * When there is border radius, the content area should be clipped by the\n * inner path of border + padding. This applies to element as well as any\n * child element inside a `overflow: hidden` container.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport border from './border.js'\n\nexport default function contentMask(\n {\n id,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n matrix: string | undefined\n borderOnly?: boolean\n },\n style: Record\n) {\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n (borderOnly ? 0 : (style.paddingBottom as number) || 0)\n\n const contentArea = {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n }\n\n const _contentMask = buildXMLString(\n 'mask',\n { id },\n buildXMLString('rect', {\n ...contentArea,\n fill: '#fff',\n // add transformation matrix to mask if overflow is hidden AND a\n // transformation style is defined, otherwise children will be clipped\n // incorrectly\n transform:\n style.overflow === 'hidden' && style.transform && matrix\n ? matrix\n : undefined,\n mask: style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined,\n }) +\n border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n },\n asContentMask: true,\n maskBorderOnly: borderOnly,\n },\n style\n )\n )\n\n return _contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport { createShapeParser } from '../parser/shape.js'\n\nexport function genClipPathId(id: string) {\n return `satori_cp-${id}`\n}\nexport function genClipPath(id: string) {\n return `url(#${genClipPathId(id)})`\n}\n\nexport function buildClipPath(\n v: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record,\n inheritedStyle: Record\n) {\n if (style.clipPath === 'none') return ''\n\n const parser = createShapeParser(v, style, inheritedStyle)\n const clipPath = style.clipPath as string\n\n let tmp: { type: string; [p: string]: string | number } = { type: '' }\n\n for (const k of Object.keys(parser)) {\n tmp = parser[k](clipPath)\n if (tmp) break\n }\n\n if (tmp) {\n const { type, ...rest } = tmp\n return buildXMLString(\n 'clipPath',\n {\n id: genClipPathId(v.id),\n 'clip-path': v.currentClipPath,\n transform: `translate(${v.left}, ${v.top})`,\n },\n buildXMLString(type, rest)\n )\n }\n return ''\n}\n","/**\n * Generate clip path for the given element.\n */\n\nimport { buildXMLString } from '../utils.js'\nimport mask from './content-mask.js'\nimport { buildClipPath, genClipPathId } from './clip-path.js'\n\nexport default function overflow(\n {\n left,\n top,\n width,\n height,\n path,\n matrix,\n id,\n currentClipPath,\n src,\n }: {\n left: number\n top: number\n width: number\n height: number\n path: string\n matrix: string | undefined\n id: string\n currentClipPath: string | string\n src?: string\n },\n style: Record,\n inheritableStyle: Record\n) {\n let overflowClipPath = ''\n const clipPath =\n style.clipPath && style.clipPath !== 'none'\n ? buildClipPath(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record,\n inheritableStyle\n )\n : ''\n\n if (style.overflow !== 'hidden' && !src) {\n overflowClipPath = ''\n } else {\n const _id = clipPath ? `satori_ocp-${id}` : genClipPathId(id)\n\n overflowClipPath = buildXMLString(\n 'clipPath',\n {\n id: _id,\n 'clip-path': currentClipPath,\n },\n buildXMLString(path ? 'path' : 'rect', {\n x: left,\n y: top,\n width,\n height,\n d: path ? path : undefined,\n // add transformation matrix to clip path if overflow is hidden AND a\n // transformation style is defined, otherwise children will be clipped\n // relative to the parent's original plane instead of the transformed\n // plane\n transform:\n style.overflow === 'hidden' && style.transform && matrix\n ? matrix\n : undefined,\n })\n )\n }\n\n const contentMask = mask(\n {\n id: `satori_om-${id}`,\n left,\n top,\n width,\n height,\n matrix,\n borderOnly: src ? false : true,\n },\n style\n )\n\n return clipPath + overflowClipPath + contentMask\n}\n","import { buildXMLString } from '../utils.js'\nimport buildBackgroundImage from './background-image.js'\nimport type { MaskProperty } from '../parser/mask.js'\n\nconst genMaskImageId = (id: string) => `satori_mi-${id}`\n\nexport default async function buildMaskImage(\n v: {\n id: string\n left: number\n top: number\n width: number\n height: number\n },\n style: Record,\n inheritedStyle: Record\n): Promise<[string, string]> {\n if (!style.maskImage) return ['', '']\n const { left, top, width, height, id } = v\n const maskImage = style.maskImage as unknown as MaskProperty[]\n const length = maskImage.length\n if (!length) return ['', '']\n const miId = genMaskImageId(id)\n\n let mask = ''\n\n for (let i = 0; i < length; i++) {\n const m = maskImage[i]\n\n const [_id, def] = await buildBackgroundImage(\n { id: `${miId}-${i}`, left, top, width, height },\n m,\n inheritedStyle,\n 'mask'\n )\n\n mask +=\n def +\n buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: `url(#${_id})`,\n })\n }\n\n mask = buildXMLString('mask', { id: miId }, mask)\n\n return [miId, mask]\n}\n","import type { ParsedTransformOrigin } from '../transform-origin.js'\n\nimport backgroundImage from './background-image.js'\nimport radius, { getBorderRadiusClipPath } from './border-radius.js'\nimport { boxShadow } from './shadow.js'\nimport transform from './transform.js'\nimport overflow from './overflow.js'\nimport { buildXMLString } from '../utils.js'\nimport border, { getBorderClipPath } from './border.js'\nimport { genClipPath } from './clip-path.js'\nimport buildMaskImage from './mask-image.js'\n\nexport default async function rect(\n {\n id,\n left,\n top,\n width,\n height,\n isInheritingTransform,\n src,\n debug,\n }: {\n id: string\n left: number\n top: number\n width: number\n height: number\n isInheritingTransform: boolean\n src?: string\n debug?: boolean\n },\n style: Record,\n inheritableStyle: Record\n) {\n if (style.display === 'none') return ''\n\n const isImage = !!src\n\n let type: 'rect' | 'path' = 'rect'\n let matrix = ''\n let defs = ''\n let fills: string[] = []\n let opacity = 1\n let extra = ''\n\n if (style.backgroundColor) {\n fills.push(style.backgroundColor as string)\n }\n\n if (style.opacity !== undefined) {\n opacity = +style.opacity\n }\n\n if (style.transform) {\n matrix = transform(\n {\n left,\n top,\n width,\n height,\n },\n style.transform as unknown as number[],\n isInheritingTransform,\n style.transformOrigin as ParsedTransformOrigin | undefined\n )\n }\n\n let backgroundShapes = ''\n if (style.backgroundImage) {\n const backgrounds: string[][] = []\n\n for (\n let index = 0;\n index < (style.backgroundImage as any).length;\n index++\n ) {\n const background = (style.backgroundImage as any)[index]\n const image = await backgroundImage(\n { id: id + '_' + index, width, height, left, top },\n background,\n inheritableStyle\n )\n if (image) {\n // Background images that come first in the array are rendered last.\n backgrounds.unshift(image)\n }\n }\n\n for (const background of backgrounds) {\n fills.push(`url(#${background[0]})`)\n defs += background[1]\n if (background[2]) {\n backgroundShapes += background[2]\n }\n }\n }\n\n const [miId, mi] = await buildMaskImage(\n { id, left, top, width, height },\n style,\n inheritableStyle\n )\n\n defs += mi\n const maskId = miId\n ? `url(#${miId})`\n : style._inheritedMaskId\n ? `url(#${style._inheritedMaskId})`\n : undefined\n\n const path = radius(\n { left, top, width, height },\n style as Record\n )\n if (path) {\n type = 'path'\n }\n\n const clipPathId = style._inheritedClipPathId as number | undefined\n\n if (debug) {\n extra = buildXMLString('rect', {\n x: left,\n y: top,\n width,\n height,\n fill: 'transparent',\n stroke: '#ff5757',\n 'stroke-width': 1,\n transform: matrix || undefined,\n 'clip-path': clipPathId ? `url(#${clipPathId})` : undefined,\n })\n }\n\n const { backgroundClip, filter: cssFilter } = style\n\n const currentClipPath =\n backgroundClip === 'text'\n ? `url(#satori_bct-${id})`\n : clipPathId\n ? `url(#${clipPathId})`\n : style.clipPath\n ? genClipPath(id)\n : undefined\n\n const clip = overflow(\n { left, top, width, height, path, id, matrix, currentClipPath, src },\n style as Record,\n inheritableStyle\n )\n\n // Each background generates a new rectangle.\n // @TODO: Not sure if this is the best way to do it, maybe with\n // multiple s is better.\n let shape = fills\n .map((fill) =>\n buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': style.transform ? undefined : currentClipPath,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n mask: style.transform ? undefined : maskId,\n })\n )\n .join('')\n\n const borderClip = getBorderClipPath(\n {\n id,\n left,\n top,\n width,\n height,\n currentClipPathId: clipPathId,\n borderPath: path,\n borderType: type,\n },\n style\n )\n\n // border radius for images with transform property\n let imageBorderRadius = undefined\n\n // If it's an image () tag, we add an extra layer of the image itself.\n if (isImage) {\n // We need to subtract the border and padding sizes from the image size.\n const offsetLeft =\n ((style.borderLeftWidth as number) || 0) +\n ((style.paddingLeft as number) || 0)\n const offsetTop =\n ((style.borderTopWidth as number) || 0) +\n ((style.paddingTop as number) || 0)\n const offsetRight =\n ((style.borderRightWidth as number) || 0) +\n ((style.paddingRight as number) || 0)\n const offsetBottom =\n ((style.borderBottomWidth as number) || 0) +\n ((style.paddingBottom as number) || 0)\n\n const preserveAspectRatio =\n style.objectFit === 'contain'\n ? 'xMidYMid'\n : style.objectFit === 'cover'\n ? 'xMidYMid slice'\n : 'none'\n\n if (style.transform) {\n imageBorderRadius = getBorderRadiusClipPath(\n {\n id,\n borderRadiusPath: path,\n borderType: type,\n left,\n top,\n width,\n height,\n },\n style\n )\n }\n\n shape += buildXMLString('image', {\n x: left + offsetLeft,\n y: top + offsetTop,\n width: width - offsetLeft - offsetRight,\n height: height - offsetTop - offsetBottom,\n href: src,\n preserveAspectRatio,\n transform: matrix ? matrix : undefined,\n style: cssFilter ? `filter:${cssFilter}` : undefined,\n 'clip-path': style.transform\n ? imageBorderRadius\n ? `url(#${imageBorderRadius[1]})`\n : undefined\n : `url(#satori_cp-${id})`,\n mask: style.transform\n ? undefined\n : miId\n ? `url(#${miId})`\n : `url(#satori_om-${id})`,\n })\n }\n\n if (borderClip) {\n defs += borderClip[0]\n const rectClipId = borderClip[1]\n\n shape += border(\n {\n left,\n top,\n width,\n height,\n props: {\n transform: matrix ? matrix : undefined,\n // When using `background-clip: text`, we need to draw the extra border because\n // it shouldn't be clipped by the clip path, so we are not using currentClipPath here.\n 'clip-path': `url(#${rectClipId})`,\n },\n },\n style\n )\n }\n\n // box-shadow.\n const shadow = boxShadow(\n {\n width,\n height,\n id,\n opacity,\n shape: buildXMLString(type, {\n x: left,\n y: top,\n width,\n height,\n fill: '#fff',\n stroke: '#fff',\n 'stroke-width': 0,\n d: path ? path : undefined,\n transform: matrix ? matrix : undefined,\n 'clip-path': currentClipPath,\n mask: maskId,\n }),\n },\n style\n )\n\n return (\n (defs ? buildXMLString('defs', {}, defs) : '') +\n (shadow ? shadow[0] : '') +\n (imageBorderRadius ? imageBorderRadius[0] : '') +\n clip +\n (opacity !== 1 ? `` : '') +\n (style.transform && (currentClipPath || maskId)\n ? ``\n : '') +\n (backgroundShapes || shape) +\n (style.transform && (currentClipPath || maskId) ? '' : '') +\n (opacity !== 1 ? `` : '') +\n (shadow ? shadow[1] : '') +\n extra\n )\n}\n","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26F9(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC3\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC08\\uDC26](?:\\u200D\\u2B1B)?|[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDC6F(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDD75(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC2\\uDECE-\\uDEDB\\uDEE0-\\uDEE8]|\\uDD3C(?:\\u200D[\\u2640\\u2642]\\uFE0F?|\\uD83C[\\uDFFB-\\uDFFF])?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","// This function guesses the human language (writing system) of the given\n// JavaScript string, using the Unicode Alias in extended RegExp.\n//\n// You can learn more about this in:\n// - https://en.wikipedia.org/wiki/Script_(Unicode)\n// - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n// - https://unicode.org/reports/tr18/#General_Category_Property\n// - https://tc39.es/ecma262/multipage/text-processing.html#table-unicode-script-values\n\nimport createEmojiRegex from 'emoji-regex'\n\n// Remove the \"g\" flag\nconst emojiRegex = new RegExp(createEmojiRegex(), '')\n\n// Supported languages. The order matters.\n// Usually, this is only for \"special cases\" like CJKV languages as latin\n// characters are usually included in the base font, and can be safely fallback\n// to the Noto Sans font. A list of special cases we want to support can be\n// found here (sort by popularity):\n// - https://fonts.google.com/noto/fonts?sort=popularity¬o.query=sans\n//\n// We can't tell if a hanzi(kanji) is Chinese or Japanese by regular expressions.\n// - https://unicode.org/faq/han_cjk.html\n\nconst specialCode = {\n emoji: emojiRegex,\n symbol: /\\p{Symbol}/u,\n math: /\\p{Math}/u,\n} as const\n\nconst code = {\n 'ja-JP': /\\p{scx=Hira}|\\p{scx=Kana}|\\p{scx=Han}|[\\u3000]|[\\uFF00-\\uFFEF]/u,\n 'ko-KR': /\\p{scx=Hangul}/u,\n 'zh-CN': /\\p{scx=Han}/u,\n 'zh-TW': /\\p{scx=Han}/u,\n 'zh-HK': /\\p{scx=Han}/u,\n 'th-TH': /\\p{scx=Thai}/u,\n 'bn-IN': /\\p{scx=Bengali}/u,\n 'ar-AR': /\\p{scx=Arabic}/u,\n 'ta-IN': /\\p{scx=Tamil}/u,\n 'ml-IN': /\\p{scx=Malayalam}/u,\n 'he-IL': /\\p{scx=Hebrew}/u,\n 'te-IN': /\\p{scx=Telugu}/u,\n devanagari: /\\p{scx=Devanagari}/u,\n kannada: /\\p{scx=Kannada}/u,\n} as const\n\ntype SpecialCodeKey = keyof typeof specialCode\ntype CodeKey = keyof typeof specialCode | keyof typeof code\nexport type Locale = keyof typeof code\nexport type LangCode = CodeKey | 'unknown'\n\nexport const locales = Object.keys({ ...code, ...specialCode }) as Locale[]\nexport function isValidLocale(x: any): x is Locale {\n return locales.includes(x)\n}\n\nexport function detectLanguageCode(\n segment: string,\n locale?: Locale\n): Array | ['unknown'] | [SpecialCodeKey] {\n for (const c of Object.keys(specialCode) as SpecialCodeKey[]) {\n if (specialCode[c].test(segment)) {\n return [c]\n }\n }\n\n const languages = Object.keys(code).filter((lang) =>\n code[lang].test(segment)\n ) as Locale[]\n\n if (languages.length === 0) {\n return ['unknown']\n }\n\n if (locale) {\n const index = languages.findIndex((lang) => lang === locale)\n if (index !== -1) {\n languages.splice(index, 1)\n languages.unshift(locale)\n }\n }\n\n return languages\n}\n\nexport function normalizeLocale(locale?: string): Locale | undefined {\n if (locale) {\n return locales.find((l) => l.toLowerCase().startsWith(locale.toLowerCase()))\n }\n}\n","/**\n * This module is used to calculate the layout of the current sub-tree.\n */\n\nimport type { ReactNode } from 'react'\nimport type { Node as YogaNode } from 'yoga-wasm-web'\n\nimport getYoga from './yoga/index.js'\nimport {\n isReactElement,\n isClass,\n buildXMLString,\n normalizeChildren,\n hasDangerouslySetInnerHTMLProp,\n} from './utils.js'\nimport { SVGNodeToImage } from './handler/preprocess.js'\nimport computeStyle from './handler/compute.js'\nimport FontLoader from './font.js'\nimport buildTextNodes from './text/index.js'\nimport rect from './builder/rect.js'\nimport { Locale, normalizeLocale } from './language.js'\nimport { SerializedStyle } from './handler/expand.js'\n\nexport interface LayoutContext {\n id: string\n parentStyle: SerializedStyle\n inheritedStyle: SerializedStyle\n isInheritingTransform?: boolean\n parent: YogaNode\n font: FontLoader\n embedFont: boolean\n debug?: boolean\n graphemeImages?: Record\n canLoadAdditionalAssets: boolean\n locale?: Locale\n getTwStyles: (tw: string, style: any) => any\n onNodeDetected?: (node: SatoriNode) => void\n}\n\nexport interface SatoriNode {\n // Layout information.\n left: number\n top: number\n width: number\n height: number\n type: string\n key?: string | number\n props: Record\n textContent?: string\n}\n\nexport default async function* layout(\n element: ReactNode,\n context: LayoutContext\n): AsyncGenerator<\n { word: string; locale?: string }[],\n string,\n [number, number]\n> {\n const Yoga = await getYoga()\n const {\n id,\n inheritedStyle,\n parent,\n font,\n debug,\n locale,\n embedFont = true,\n graphemeImages,\n canLoadAdditionalAssets,\n getTwStyles,\n } = context\n\n // 1. Pre-process the node.\n if (element === null || typeof element === 'undefined') {\n yield\n yield\n return ''\n }\n\n // Not a regular element.\n if (!isReactElement(element) || typeof element.type === 'function') {\n let iter: ReturnType\n\n if (!isReactElement(element)) {\n // Process as text node.\n iter = buildTextNodes(String(element), context)\n yield (await iter.next()).value as { word: string; locale?: Locale }[]\n } else {\n if (isClass(element.type as Function)) {\n throw new Error('Class component is not supported.')\n }\n // If it's a custom component, Satori strictly requires it to be pure,\n // stateless, and not relying on any React APIs such as hooks or suspense.\n // So we can safely evaluate it to render. Otherwise, an error will be\n // thrown by React.\n iter = layout((element.type as Function)(element.props), context)\n yield (await iter.next()).value as { word: string; locale?: string }[]\n }\n\n await iter.next()\n const offset = yield\n return (await iter.next(offset)).value as string\n }\n\n // Process as element.\n const { type, props } = element\n if (props && hasDangerouslySetInnerHTMLProp(props)) {\n throw new Error(\n 'dangerouslySetInnerHTML property is not supported. See documentation for more information https://github.com/vercel/satori#jsx.'\n )\n }\n let { style, children, tw, lang: _newLocale = locale } = props || {}\n const newLocale = normalizeLocale(_newLocale)\n\n // Extend Tailwind styles.\n if (tw) {\n const twStyles = getTwStyles(tw, style)\n style = Object.assign(twStyles, style)\n }\n\n const node = Yoga.Node.create()\n parent.insertChild(node, parent.getChildCount())\n\n const [computedStyle, newInheritableStyle] = await computeStyle(\n node,\n type,\n inheritedStyle,\n style,\n props\n )\n // Post-process styles to attach inheritable properties for Satori.\n\n // If the element is inheriting the parent `transform`, or applying its own.\n // This affects the coordinate system.\n const isInheritingTransform =\n computedStyle.transform === inheritedStyle.transform\n if (!isInheritingTransform) {\n ;(computedStyle.transform as any).__parent = inheritedStyle.transform\n }\n\n // If the element has `overflow` set to `hidden` or clip-path is set, we need to create a clip\n // path and use it in all its children.\n if (\n computedStyle.overflow === 'hidden' ||\n (computedStyle.clipPath && computedStyle.clipPath !== 'none')\n ) {\n newInheritableStyle._inheritedClipPathId = `satori_cp-${id}`\n newInheritableStyle._inheritedMaskId = `satori_om-${id}`\n }\n\n if (computedStyle.maskImage) {\n newInheritableStyle._inheritedMaskId = `satori_mi-${id}`\n }\n\n // If the element has `background-clip: text` set, we need to create a clip\n // path and use it in all its children.\n if (computedStyle.backgroundClip === 'text') {\n const mutateRefValue = { value: '' } as any\n newInheritableStyle._inheritedBackgroundClipTextPath = mutateRefValue\n computedStyle._inheritedBackgroundClipTextPath = mutateRefValue\n }\n\n // 2. Do layout recursively for its children.\n const normalizedChildren = normalizeChildren(children)\n const iterators: ReturnType[] = []\n\n let i = 0\n const segmentsMissingFont: { word: string; locale?: string }[] = []\n for (const child of normalizedChildren) {\n const iter = layout(child, {\n id: id + '-' + i++,\n parentStyle: computedStyle,\n inheritedStyle: newInheritableStyle,\n isInheritingTransform: true,\n parent: node,\n font,\n embedFont,\n debug,\n graphemeImages,\n canLoadAdditionalAssets,\n locale: newLocale,\n getTwStyles,\n onNodeDetected: context.onNodeDetected,\n })\n if (canLoadAdditionalAssets) {\n segmentsMissingFont.push(...(((await iter.next()).value as any) || []))\n } else {\n await iter.next()\n }\n iterators.push(iter)\n }\n yield segmentsMissingFont\n for (const iter of iterators) await iter.next()\n\n // 3. Post-process the node.\n const [x, y] = yield\n let { left, top, width, height } = node.getComputedLayout()\n // Attach offset to the current node.\n left += x\n top += y\n\n let childrenRenderResult = ''\n let baseRenderResult = ''\n let depsRenderResult = ''\n\n // Emit event for the current node. We don't pass the children prop to the\n // event handler because everything is already flattened, unless it's a text\n // node.\n const { children: childrenNode, ...restProps } = props\n context.onNodeDetected?.({\n left,\n top,\n width,\n height,\n type,\n props: restProps,\n key: element.key,\n textContent: isReactElement(childrenNode) ? undefined : childrenNode,\n })\n\n // Generate the rendered markup for the current node.\n if (type === 'img') {\n const src = computedStyle.__src as string\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else if (type === 'svg') {\n // When entering a node, we need to convert it to a with the\n // SVG data URL embedded.\n const currentColor = computedStyle.color\n const src = await SVGNodeToImage(element, currentColor)\n baseRenderResult = await rect(\n {\n id,\n left,\n top,\n width,\n height,\n src,\n isInheritingTransform,\n debug,\n },\n computedStyle,\n newInheritableStyle\n )\n } else {\n const display = style?.display\n if (\n type === 'div' &&\n children &&\n typeof children !== 'string' &&\n display !== 'flex' &&\n display !== 'none'\n ) {\n throw new Error(\n `Expected
to have explicit \"display: flex\" or \"display: none\" if it has more than one child node.`\n )\n }\n baseRenderResult = await rect(\n { id, left, top, width, height, isInheritingTransform, debug },\n computedStyle,\n newInheritableStyle\n )\n }\n\n // Generate the rendered markup for the children.\n for (const iter of iterators) {\n childrenRenderResult += (await iter.next([left, top])).value\n }\n\n // An extra pass to generate the special background-clip shape collected from\n // children.\n if (computedStyle._inheritedBackgroundClipTextPath) {\n depsRenderResult += buildXMLString(\n 'clipPath',\n {\n id: `satori_bct-${id}`,\n 'clip-path': computedStyle._inheritedClipPathId\n ? `url(#${computedStyle._inheritedClipPathId})`\n : undefined,\n },\n (computedStyle._inheritedBackgroundClipTextPath as any).value\n )\n }\n\n return depsRenderResult + baseRenderResult + childrenRenderResult\n}\n","/**\n * This class handles everything related to fonts.\n */\nimport opentype from '@shuding/opentype.js'\nimport { Locale, locales, isValidLocale } from './language.js'\n\nexport type Weight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\nexport type WeightName = 'normal' | 'bold'\nexport type FontWeight = Weight | WeightName\nexport type FontStyle = 'normal' | 'italic'\nconst SUFFIX_WHEN_LANG_NOT_SET = 'unknown'\n\nexport interface FontOptions {\n data: Buffer | ArrayBuffer\n name: string\n weight?: Weight\n style?: FontStyle\n lang?: string\n}\n\nexport type FontEngine = {\n has: (s: string) => boolean\n baseline: (s?: string, resolvedFont?: any) => number\n height: (s?: string, resolvedFont?: any) => number\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => number\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => string\n}\n\nfunction compareFont(\n weight,\n style,\n [matchedWeight, matchedStyle],\n [nextWeight, nextStyle]\n) {\n if (matchedWeight !== nextWeight) {\n // Put the defined weight first.\n if (!matchedWeight) return 1\n if (!nextWeight) return -1\n\n // Exact match.\n if (matchedWeight === weight) return -1\n if (nextWeight === weight) return 1\n\n // 400 and 500.\n if (weight === 400 && matchedWeight === 500) return -1\n if (weight === 500 && matchedWeight === 400) return -1\n if (weight === 400 && nextWeight === 500) return 1\n if (weight === 500 && nextWeight === 400) return 1\n\n // Less than 400.\n if (weight < 400) {\n if (matchedWeight < weight && nextWeight < weight)\n return nextWeight - matchedWeight\n if (matchedWeight < weight) return -1\n if (nextWeight < weight) return 1\n return matchedWeight - nextWeight\n }\n\n // Greater than 500.\n if (weight < matchedWeight && weight < nextWeight)\n return matchedWeight - nextWeight\n if (weight < matchedWeight) return -1\n if (weight < nextWeight) return 1\n return nextWeight - matchedWeight\n }\n\n if (matchedStyle !== nextStyle) {\n // Exact match.\n if (matchedStyle === style) return -1\n if (nextStyle === style) return 1\n }\n\n return -1\n}\n\nexport default class FontLoader {\n defaultFont: opentype.Font\n fonts = new Map()\n constructor(fontOptions: FontOptions[]) {\n this.addFonts(fontOptions)\n }\n\n // Get font by name and weight.\n private get({\n name,\n weight,\n style,\n }: {\n name: string\n weight: Weight | WeightName\n style: FontStyle\n }) {\n if (!this.fonts.has(name)) {\n return null\n }\n\n if (weight === 'normal') weight = 400\n if (weight === 'bold') weight = 700\n if (typeof weight === 'string')\n weight = Number.parseInt(weight, 10) as Weight\n\n const fonts = [...this.fonts.get(name)]\n\n let matchedFont = fonts[0]\n\n // Fallback to the closest weight and style according to the strategy here:\n // https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight#fallback_weights\n for (let i = 1; i < fonts.length; i++) {\n const [, weight1, style1] = matchedFont\n const [, weight2, style2] = fonts[i]\n if (\n compareFont(weight, style, [weight1, style1], [weight2, style2]) > 0\n ) {\n matchedFont = fonts[i]\n }\n }\n\n return matchedFont[0]\n }\n\n public addFonts(fontOptions: FontOptions[]) {\n for (const fontOption of fontOptions) {\n const { name, data, lang } = fontOption\n if (lang && !isValidLocale(lang)) {\n throw new Error(\n `Invalid value for props \\`lang\\`: \"${lang}\". The value must be one of the following: ${locales.join(\n ', '\n )}.`\n )\n }\n const _lang = lang ?? SUFFIX_WHEN_LANG_NOT_SET\n const font = opentype.parse(\n // Buffer to ArrayBuffer.\n 'buffer' in data\n ? data.buffer.slice(\n data.byteOffset,\n data.byteOffset + data.byteLength\n )\n : data,\n // @ts-ignore\n { lowMemory: true }\n )\n\n // Modify the `charToGlyphIndex` method, so we can know which char is\n // being mapped to which glyph.\n const originalCharToGlyphIndex = font.charToGlyphIndex\n font.charToGlyphIndex = (char) => {\n const index = originalCharToGlyphIndex.call(font, char)\n if (index === 0) {\n // The current requested char is missing a glyph.\n if ((font as any)._trackBrokenChars) {\n ;(font as any)._trackBrokenChars.push(char)\n }\n }\n return index\n }\n\n // We use the first font as the default font fallback.\n if (!this.defaultFont) this.defaultFont = font\n\n const _name = `${name.toLowerCase()}_${_lang}`\n\n if (!this.fonts.has(_name)) {\n this.fonts.set(_name, [])\n }\n this.fonts.get(_name).push([font, fontOption.weight, fontOption.style])\n }\n }\n\n public getEngine(\n fontSize = 16,\n lineHeight: number | string = 'normal',\n {\n fontFamily = 'sans-serif',\n fontWeight = 400,\n fontStyle = 'normal',\n }: {\n fontFamily?: string | string[]\n fontWeight?: FontWeight\n fontStyle?: FontStyle\n },\n locale: Locale | undefined\n ): FontEngine {\n if (!this.fonts.size) {\n throw new Error(\n 'No fonts are loaded. At least one font is required to calculate the layout.'\n )\n }\n\n fontFamily = (Array.isArray(fontFamily) ? fontFamily : [fontFamily]).map(\n (name) => name.toLowerCase()\n )\n const fonts = []\n fontFamily.forEach((face) => {\n const getNormal = this.get({\n name: face,\n weight: fontWeight,\n style: fontStyle,\n })\n if (getNormal) {\n fonts.push(getNormal)\n return\n }\n\n const getUnknown = this.get({\n name: face + '_unknown',\n weight: fontWeight,\n style: fontStyle,\n })\n\n if (getUnknown) {\n fonts.push(getUnknown)\n return\n }\n })\n\n // Add additional fonts as the fallback.\n const keys = Array.from(this.fonts.keys())\n const specifiedLangFonts = []\n const nonSpecifiedLangFonts = []\n const additionalFonts = []\n for (const name of keys) {\n if (fontFamily.includes(name)) continue\n if (locale) {\n const lang = getLangFromFontName(name)\n if (lang) {\n if (lang === locale) {\n specifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n } else {\n nonSpecifiedLangFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n } else {\n additionalFonts.push(\n this.get({\n name,\n weight: fontWeight,\n style: fontStyle,\n })\n )\n }\n }\n\n const cachedFontResolver = new Map()\n const resolveFont = (word: string, fallback = true) => {\n const _fonts = [\n ...fonts,\n ...additionalFonts,\n ...specifiedLangFonts,\n ...(fallback ? nonSpecifiedLangFonts : []),\n ]\n\n if (typeof word === 'undefined') {\n if (fallback) {\n return _fonts[_fonts.length - 1]\n }\n return undefined\n }\n\n const code = word.charCodeAt(0)\n if (cachedFontResolver.has(code)) return cachedFontResolver.get(code)\n\n const font = _fonts.find((_font, index) => {\n return (\n !!_font.charToGlyphIndex(word) ||\n (fallback && index === _fonts.length - 1)\n )\n })\n\n if (font) {\n cachedFontResolver.set(code, font)\n }\n\n return font\n }\n\n const ascender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _ascender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoAscender : 0) ||\n resolvedFont.ascender\n return (_ascender / resolvedFont.unitsPerEm) * fontSize\n }\n\n const descender = (resolvedFont: opentype.Font, useOS2Table = false) => {\n const _descender =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoDescender : 0) ||\n resolvedFont.descender\n return (_descender / resolvedFont.unitsPerEm) * fontSize\n }\n\n const height = (resolvedFont: opentype.Font, useOS2Table = false) => {\n if ('string' === typeof lineHeight && 'normal' === lineHeight) {\n const _lineGap =\n (useOS2Table ? resolvedFont.tables?.os2?.sTypoLineGap : 0) || 0\n return (\n ascender(resolvedFont, useOS2Table) -\n descender(resolvedFont, useOS2Table) +\n (_lineGap / resolvedFont.unitsPerEm) * fontSize\n )\n } else if ('number' === typeof lineHeight) {\n return fontSize * lineHeight\n }\n }\n\n const resolve = (s: string) => {\n return resolveFont(s, false)\n }\n\n const engine = {\n has: (s: string) => {\n if (s === '\\n') return true\n const font = resolve(s)\n if (!font) return false\n ;(font as any)._trackBrokenChars = []\n font.stringToGlyphs(s)\n if (!(font as any)._trackBrokenChars.length) return true\n ;(font as any)._trackBrokenChars = undefined\n return false\n },\n baseline: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n const asc = ascender(resolvedFont)\n const desc = descender(resolvedFont)\n const contentHeight = asc - desc\n\n return asc + (height(resolvedFont) - contentHeight) / 2\n },\n height: (\n s?: string,\n resolvedFont = typeof s === 'undefined' ? fonts[0] : resolveFont(s)\n ) => {\n return height(resolvedFont)\n },\n measure: (\n s: string,\n style: {\n fontSize: number\n letterSpacing: number\n }\n ) => {\n return this.measure(resolveFont, s, style)\n },\n getSVG: (\n s: string,\n style: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) => {\n return this.getSVG(resolveFont, s, style)\n },\n }\n\n return engine\n }\n\n private patchFontFallbackResolver(\n font: opentype.Font,\n resolveFont: (word: string, fallback?: boolean) => opentype.Font\n ) {\n const brokenChars = []\n ;(font as any)._trackBrokenChars = brokenChars\n\n const originalStringToGlyphs = font.stringToGlyphs\n font.stringToGlyphs = (s: string, ...args: any) => {\n const glyphs = originalStringToGlyphs.call(font, s, ...args)\n\n for (let i = 0; i < glyphs.length; i++) {\n // Hitting an undefined glyph. We have to try to resolve it from other\n // fonts.\n // @TODO: This affects the kerning resolution but should be fine for now.\n if (glyphs[i].unicode === undefined) {\n const char = brokenChars.shift()\n const anotherFont = resolveFont(char)\n if (anotherFont !== font) {\n const glyph = anotherFont.charToGlyph(char)\n // Scale the glyph to match the current units per em.\n const scale = font.unitsPerEm / anotherFont.unitsPerEm\n const p = new opentype.Path()\n p.unitsPerEm = font.unitsPerEm\n p.commands = glyph.path.commands.map((command) => {\n const scaledCommand = { ...command }\n for (let k in scaledCommand) {\n if (typeof scaledCommand[k] === 'number') {\n scaledCommand[k] *= scale\n }\n }\n return scaledCommand\n })\n const g = new opentype.Glyph({\n ...glyph,\n advanceWidth: glyph.advanceWidth * scale,\n xMin: glyph.xMin * scale,\n xMax: glyph.xMax * scale,\n yMin: glyph.yMin * scale,\n yMax: glyph.yMax * scale,\n path: p,\n })\n\n glyphs[i] = g\n }\n }\n }\n\n return glyphs\n }\n\n return () => {\n font.stringToGlyphs = originalStringToGlyphs\n ;(font as any)._trackBrokenChars = undefined\n }\n }\n\n private measure(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n letterSpacing = 0,\n }: {\n fontSize: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n return font.getAdvanceWidth(content, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n } finally {\n unpatch()\n }\n }\n\n private getSVG(\n resolveFont: (word: string, fallback?: boolean) => opentype.Font,\n content: string,\n {\n fontSize,\n top,\n left,\n letterSpacing = 0,\n }: {\n fontSize: number\n top: number\n left: number\n letterSpacing: number\n }\n ) {\n const font = resolveFont(content)\n const unpatch = this.patchFontFallbackResolver(font, resolveFont)\n\n try {\n if (fontSize === 0) {\n return ''\n }\n return font\n .getPath(content.replace(/\\n/g, ''), left, top, fontSize, {\n letterSpacing: letterSpacing / fontSize,\n })\n .toPathData(1)\n } finally {\n unpatch()\n }\n }\n}\n\nfunction getLangFromFontName(name: string): Locale | undefined {\n const arr = name.split('_')\n const lang = arr[arr.length - 1]\n\n return lang === SUFFIX_WHEN_LANG_NOT_SET ? undefined : (lang as Locale)\n}\n","import { buildXMLString } from '../utils.js'\n\nexport default function svg({\n width,\n height,\n content,\n}: {\n width: number\n height: number\n content: string\n}) {\n return buildXMLString(\n 'svg',\n {\n width,\n height,\n viewBox: `0 0 ${width} ${height}`,\n xmlns: 'http://www.w3.org/2000/svg',\n },\n content\n )\n}\n","import resolveConfig from 'tailwindcss/resolveConfig';\nimport Cache from './cache';\nimport ClassParser from './ClassParser';\nimport { parseInputs } from './parse-inputs';\nimport { complete, warn } from './helpers';\nimport { getAddedUtilities } from './plugin';\nimport { removeOpacityHelpers } from './resolve/color';\nexport function create(customConfig, platform) {\n const config = resolveConfig(withContent(customConfig));\n const device = {};\n const pluginUtils = getAddedUtilities(config.plugins);\n const customStringUtils = {};\n const customStyleUtils = Object.entries(pluginUtils)\n .map(([util, style]) => {\n if (typeof style === `string`) {\n // mutating while mapping, i know - bad form, but for performance sake... ¯\\_(ツ)_/¯\n customStringUtils[util] = style;\n return [util, { kind: `null` }];\n }\n return [util, complete(style)];\n })\n .filter(([, ir]) => ir.kind !== `null`);\n function deriveCacheGroup() {\n return ([\n device.windowDimensions ? `w${device.windowDimensions.width}` : false,\n device.windowDimensions ? `h${device.windowDimensions.height}` : false,\n device.fontScale ? `fs${device.fontScale}` : false,\n device.colorScheme === `dark` ? `dark` : false,\n device.pixelDensity === 2 ? `retina` : false,\n ]\n .filter(Boolean)\n .join(`--`) || `default`);\n }\n let cacheGroup = deriveCacheGroup();\n const contextCaches = {};\n function getCache() {\n const existing = contextCaches[cacheGroup];\n if (existing) {\n return existing;\n }\n const cache = new Cache(customStyleUtils);\n contextCaches[cacheGroup] = cache;\n return cache;\n }\n function style(...inputs) {\n const cache = getCache();\n let resolved = {};\n const dependents = [];\n const ordered = [];\n const [utilities, userStyle] = parseInputs(inputs);\n // check if we've seen this full set of classes before\n // if we have a cached copy, we can skip examining each utility\n const joined = utilities.join(` `);\n const cached = cache.getStyle(joined);\n if (cached) {\n return { ...cached, ...(userStyle ? userStyle : {}) };\n }\n for (const utility of utilities) {\n let styleIr = cache.getIr(utility);\n if (!styleIr && utility in customStringUtils) {\n const customStyle = style(customStringUtils[utility]);\n cache.setIr(utility, complete(customStyle));\n resolved = { ...resolved, ...customStyle };\n continue;\n }\n const parser = new ClassParser(utility, config, cache, device, platform);\n styleIr = parser.parse();\n switch (styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...styleIr.style };\n cache.setIr(utility, styleIr);\n break;\n case `dependent`:\n dependents.push(styleIr);\n break;\n case `ordered`:\n ordered.push(styleIr);\n break;\n case `null`:\n cache.setIr(utility, styleIr);\n break;\n }\n }\n if (ordered.length > 0) {\n ordered.sort((a, b) => a.order - b.order);\n for (const orderedStyle of ordered) {\n switch (orderedStyle.styleIr.kind) {\n case `complete`:\n resolved = { ...resolved, ...orderedStyle.styleIr.style };\n break;\n case `dependent`:\n dependents.push(orderedStyle.styleIr);\n break;\n }\n }\n }\n if (dependents.length > 0) {\n for (const dependent of dependents) {\n const error = dependent.complete(resolved);\n if (error) {\n warn(error);\n }\n }\n removeOpacityHelpers(resolved);\n }\n // cache the full set of classes for future re-renders\n // it's important we cache BEFORE merging in userStyle below\n if (joined !== ``) {\n cache.setStyle(joined, resolved);\n }\n if (userStyle) {\n resolved = { ...resolved, ...userStyle };\n }\n return resolved;\n }\n function color(utils) {\n const styleObj = style(utils\n .split(/\\s+/g)\n .map((util) => util.replace(/^(bg|text|border)-/, ``))\n .map((util) => `bg-${util}`)\n .join(` `));\n return typeof styleObj.backgroundColor === `string`\n ? styleObj.backgroundColor\n : undefined;\n }\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const tailwindFn = (strings, ...values) => {\n let str = ``;\n strings.forEach((string, i) => {\n var _a;\n str += string + ((_a = values[i]) !== null && _a !== void 0 ? _a : ``);\n });\n return style(str);\n };\n tailwindFn.style = style;\n tailwindFn.color = color;\n tailwindFn.prefixMatch = (...prefixes) => {\n const joined = prefixes.sort().join(`:`);\n const cache = getCache();\n const cached = cache.getPrefixMatch(joined);\n if (cached !== undefined) {\n return cached;\n }\n const parser = new ClassParser(`${joined}:flex`, config, cache, device, platform);\n const ir = parser.parse();\n const prefixMatches = ir.kind !== `null`;\n cache.setPrefixMatch(joined, prefixMatches);\n return prefixMatches;\n };\n tailwindFn.setWindowDimensions = (newDimensions) => {\n device.windowDimensions = newDimensions;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setFontScale = (newFontScale) => {\n device.fontScale = newFontScale;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setPixelDensity = (newPixelDensity) => {\n device.pixelDensity = newPixelDensity;\n cacheGroup = deriveCacheGroup();\n };\n tailwindFn.setColorScheme = (newColorScheme) => {\n device.colorScheme = newColorScheme;\n cacheGroup = deriveCacheGroup();\n };\n return tailwindFn;\n}\nexport default create;\nfunction withContent(config) {\n return {\n ...config,\n // prevent warnings from tailwind about not having a `content` prop\n // we don't need one because we have our own jit parser which\n // does not rely on knowing content paths to search\n content: [`_no_warnings_please`],\n };\n}\n","export const PLATFORMS = [`ios`, `android`, `windows`, `macos`, `web`];\nexport function isPlatform(x) {\n return PLATFORMS.includes(x);\n}\nexport const ORIENTATIONS = [`portrait`, `landscape`];\nexport function isOrientation(x) {\n return ORIENTATIONS.includes(x);\n}\nexport var ConfigType;\n(function (ConfigType) {\n ConfigType[\"fontSize\"] = \"fontSize\";\n ConfigType[\"lineHeight\"] = \"lineHeight\";\n})(ConfigType || (ConfigType = {}));\nexport var Unit;\n(function (Unit) {\n Unit[\"rem\"] = \"rem\";\n Unit[\"em\"] = \"em\";\n Unit[\"px\"] = \"px\";\n Unit[\"percent\"] = \"%\";\n Unit[\"vw\"] = \"vw\";\n Unit[\"vh\"] = \"vh\";\n Unit[\"none\"] = \"\";\n})(Unit || (Unit = {}));\nexport function isString(value) {\n return typeof value === `string`;\n}\nexport function isObject(value) {\n return typeof value === `object`;\n}\n","var _a;\nimport { Unit } from './types';\nexport function complete(style) {\n return { kind: `complete`, style };\n}\nexport function parseNumericValue(value, context = {}) {\n const { fractions } = context;\n if (fractions && value.includes(`/`)) {\n const [numerator = ``, denominator = ``] = value.split(`/`, 2);\n const parsedNumerator = parseNumericValue(numerator);\n const parsedDenominator = parseNumericValue(denominator);\n if (!parsedNumerator || !parsedDenominator) {\n return null;\n }\n return [parsedNumerator[0] / parsedDenominator[0], parsedDenominator[1]];\n }\n const number = parseFloat(value);\n if (Number.isNaN(number)) {\n return null;\n }\n const match = value.match(/(([a-z]{2,}|%))$/);\n if (!match) {\n return [number, Unit.none];\n }\n switch (match === null || match === void 0 ? void 0 : match[1]) {\n case `rem`:\n return [number, Unit.rem];\n case `px`:\n return [number, Unit.px];\n case `em`:\n return [number, Unit.em];\n case `%`:\n return [number, Unit.percent];\n case `vw`:\n return [number, Unit.vw];\n case `vh`:\n return [number, Unit.vh];\n default:\n return null;\n }\n}\nexport function getCompleteStyle(prop, value, context = {}) {\n const styleVal = parseStyleVal(value, context);\n return styleVal === null ? null : complete({ [prop]: styleVal });\n}\nexport function mergeStyle(prop, value, style) {\n const styleVal = parseStyleVal(value);\n if (styleVal !== null) {\n style[prop] = styleVal;\n }\n return style;\n}\nexport function getStyle(prop, value) {\n const styleVal = parseStyleVal(value);\n return styleVal === null ? null : { [prop]: styleVal };\n}\nexport function parseStyleVal(value, context = {}) {\n if (value === undefined) {\n return null;\n }\n const parsed = parseNumericValue(String(value), context);\n if (parsed) {\n return toStyleVal(...parsed, context);\n }\n else {\n return null;\n }\n}\nexport function toStyleVal(number, unit, context = {}) {\n const { isNegative, device } = context;\n switch (unit) {\n case Unit.rem:\n return number * 16 * (isNegative ? -1 : 1);\n case Unit.px:\n return number * (isNegative ? -1 : 1);\n case Unit.percent:\n return `${isNegative ? `-` : ``}${number}%`;\n case Unit.none:\n return number * (isNegative ? -1 : 1);\n case Unit.vw:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vw\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.width * (number / 100);\n case Unit.vh:\n if (!(device === null || device === void 0 ? void 0 : device.windowDimensions)) {\n warn(`\\`vh\\` CSS unit requires configuration with \\`useDeviceContext()\\``);\n return null;\n }\n return device.windowDimensions.height * (number / 100);\n default:\n return null;\n }\n}\nexport function toPx(value) {\n const parsed = parseNumericValue(value);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n switch (unit) {\n case Unit.rem:\n return number * 16;\n case Unit.px:\n return number;\n default:\n return null;\n }\n}\nconst DIR_MAP = {\n t: `Top`,\n tr: `TopRight`,\n tl: `TopLeft`,\n b: `Bottom`,\n br: `BottomRight`,\n bl: `BottomLeft`,\n l: `Left`,\n r: `Right`,\n x: `Horizontal`,\n y: `Vertical`,\n};\nexport function getDirection(string) {\n return DIR_MAP[string !== null && string !== void 0 ? string : ``] || `All`;\n}\nexport function parseAndConsumeDirection(utilityFragment) {\n let direction = `All`;\n const consumed = utilityFragment.replace(/^-(t|b|r|l|tr|tl|br|bl)(-|$)/, (_, dir) => {\n direction = getDirection(dir);\n return ``;\n });\n return [consumed, direction];\n}\nexport function parseUnconfigged(value, context = {}) {\n if (value.includes(`/`)) {\n const style = unconfiggedStyleVal(value, { ...context, fractions: true });\n if (style)\n return style;\n }\n if (value[0] === `[`) {\n value = value.slice(1, -1);\n }\n return unconfiggedStyleVal(value, context);\n}\nexport function unconfiggedStyle(prop, value, context = {}) {\n const styleVal = parseUnconfigged(value, context);\n if (styleVal === null) {\n return null;\n }\n return complete({ [prop]: styleVal });\n}\nfunction unconfiggedStyleVal(value, context = {}) {\n if (value === `px`) {\n return 1;\n }\n const parsed = parseNumericValue(value, context);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (context.fractions) {\n unit = Unit.percent;\n number *= 100;\n }\n // not sure if this is the right approach, but this allows arbitrary\n // non-bracket numbers, like top-73 and it INFERS the meaning to be\n // tailwind's default scale for spacing, which is 1 = 0.25rem\n if (unit === Unit.none) {\n number = number / 4;\n unit = Unit.rem;\n }\n return toStyleVal(number, unit, context);\n}\nfunction consoleWarn(...args) {\n console.warn(...args);\n}\nfunction noopWarn(..._) {\n // ¯\\_(ツ)_/¯\n}\nexport const warn = typeof process === `undefined` || ((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.JEST_WORKER_ID) === undefined\n ? consoleWarn\n : noopWarn;\n","import { complete } from './helpers';\nconst defaultStyles = [\n [`aspect-square`, complete({ aspectRatio: 1 })],\n [`aspect-video`, complete({ aspectRatio: 16 / 9 })],\n [`items-center`, complete({ alignItems: `center` })],\n [`items-start`, complete({ alignItems: `flex-start` })],\n [`items-end`, complete({ alignItems: `flex-end` })],\n [`items-baseline`, complete({ alignItems: `baseline` })],\n [`items-stretch`, complete({ alignItems: `stretch` })],\n [`justify-start`, complete({ justifyContent: `flex-start` })],\n [`justify-end`, complete({ justifyContent: `flex-end` })],\n [`justify-center`, complete({ justifyContent: `center` })],\n [`justify-between`, complete({ justifyContent: `space-between` })],\n [`justify-around`, complete({ justifyContent: `space-around` })],\n [`justify-evenly`, complete({ justifyContent: `space-evenly` })],\n [`content-start`, complete({ alignContent: `flex-start` })],\n [`content-end`, complete({ alignContent: `flex-end` })],\n [`content-between`, complete({ alignContent: `space-between` })],\n [`content-around`, complete({ alignContent: `space-around` })],\n [`content-stretch`, complete({ alignContent: `stretch` })],\n [`content-center`, complete({ alignContent: `center` })],\n [`self-auto`, complete({ alignSelf: `auto` })],\n [`self-start`, complete({ alignSelf: `flex-start` })],\n [`self-end`, complete({ alignSelf: `flex-end` })],\n [`self-center`, complete({ alignSelf: `center` })],\n [`self-stretch`, complete({ alignSelf: `stretch` })],\n [`self-baseline`, complete({ alignSelf: `baseline` })],\n [`direction-inherit`, complete({ direction: `inherit` })],\n [`direction-ltr`, complete({ direction: `ltr` })],\n [`direction-rtl`, complete({ direction: `rtl` })],\n [`hidden`, complete({ display: `none` })],\n [`flex`, complete({ display: `flex` })],\n [`flex-row`, complete({ flexDirection: `row` })],\n [`flex-row-reverse`, complete({ flexDirection: `row-reverse` })],\n [`flex-col`, complete({ flexDirection: `column` })],\n [`flex-col-reverse`, complete({ flexDirection: `column-reverse` })],\n [`flex-wrap`, complete({ flexWrap: `wrap` })],\n [`flex-wrap-reverse`, complete({ flexWrap: `wrap-reverse` })],\n [`flex-nowrap`, complete({ flexWrap: `nowrap` })],\n [`flex-auto`, complete({ flexGrow: 1, flexShrink: 1, flexBasis: `auto` })],\n [`flex-initial`, complete({ flexGrow: 0, flexShrink: 1, flexBasis: `auto` })],\n [`flex-none`, complete({ flexGrow: 0, flexShrink: 0, flexBasis: `auto` })],\n [`overflow-hidden`, complete({ overflow: `hidden` })],\n [`overflow-visible`, complete({ overflow: `visible` })],\n [`overflow-scroll`, complete({ overflow: `scroll` })],\n [`absolute`, complete({ position: `absolute` })],\n [`relative`, complete({ position: `relative` })],\n [`italic`, complete({ fontStyle: `italic` })],\n [`not-italic`, complete({ fontStyle: `normal` })],\n [`oldstyle-nums`, fontVariant(`oldstyle-nums`)],\n [`small-caps`, fontVariant(`small-caps`)],\n [`lining-nums`, fontVariant(`lining-nums`)],\n [`tabular-nums`, fontVariant(`tabular-nums`)],\n [`proportional-nums`, fontVariant(`proportional-nums`)],\n [`font-thin`, complete({ fontWeight: `100` })],\n [`font-100`, complete({ fontWeight: `100` })],\n [`font-extralight`, complete({ fontWeight: `200` })],\n [`font-200`, complete({ fontWeight: `200` })],\n [`font-light`, complete({ fontWeight: `300` })],\n [`font-300`, complete({ fontWeight: `300` })],\n [`font-normal`, complete({ fontWeight: `normal` })],\n [`font-400`, complete({ fontWeight: `400` })],\n [`font-medium`, complete({ fontWeight: `500` })],\n [`font-500`, complete({ fontWeight: `500` })],\n [`font-semibold`, complete({ fontWeight: `600` })],\n [`font-600`, complete({ fontWeight: `600` })],\n [`font-bold`, complete({ fontWeight: `bold` })],\n [`font-700`, complete({ fontWeight: `700` })],\n [`font-extrabold`, complete({ fontWeight: `800` })],\n [`font-800`, complete({ fontWeight: `800` })],\n [`font-black`, complete({ fontWeight: `900` })],\n [`font-900`, complete({ fontWeight: `900` })],\n [`include-font-padding`, complete({ includeFontPadding: true })],\n [`remove-font-padding`, complete({ includeFontPadding: false })],\n // not sure if RN supports `max-width: none;`, but this should be equivalent\n [`max-w-none`, complete({ maxWidth: `99999%` })],\n [`text-left`, complete({ textAlign: `left` })],\n [`text-center`, complete({ textAlign: `center` })],\n [`text-right`, complete({ textAlign: `right` })],\n [`text-justify`, complete({ textAlign: `justify` })],\n [`text-auto`, complete({ textAlign: `auto` })],\n [`underline`, complete({ textDecorationLine: `underline` })],\n [`line-through`, complete({ textDecorationLine: `line-through` })],\n [`no-underline`, complete({ textDecorationLine: `none` })],\n [`uppercase`, complete({ textTransform: `uppercase` })],\n [`lowercase`, complete({ textTransform: `lowercase` })],\n [`capitalize`, complete({ textTransform: `capitalize` })],\n [`normal-case`, complete({ textTransform: `none` })],\n [`w-auto`, complete({ width: `auto` })],\n [`h-auto`, complete({ height: `auto` })],\n // default box-shadow implementations\n [\n `shadow-sm`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.025,\n elevation: 1,\n }),\n ],\n [\n `shadow`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 1,\n shadowOpacity: 0.075,\n elevation: 2,\n }),\n ],\n [\n `shadow-md`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowRadius: 3,\n shadowOpacity: 0.125,\n elevation: 3,\n }),\n ],\n [\n `shadow-lg`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.15,\n shadowRadius: 8,\n elevation: 8,\n }),\n ],\n [\n `shadow-xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.19,\n shadowRadius: 20,\n elevation: 12,\n }),\n ],\n [\n `shadow-2xl`,\n complete({\n shadowOffset: { width: 1, height: 1 },\n shadowColor: `#000`,\n shadowOpacity: 0.25,\n shadowRadius: 30,\n elevation: 16,\n }),\n ],\n [\n `shadow-none`,\n complete({\n shadowOffset: { width: 0, height: 0 },\n shadowColor: `#000`,\n shadowRadius: 0,\n shadowOpacity: 0,\n elevation: 0,\n }),\n ],\n];\nexport default defaultStyles;\nfunction fontVariant(type) {\n return {\n kind: `dependent`,\n complete(style) {\n if (!style.fontVariant || !Array.isArray(style.fontVariant)) {\n style.fontVariant = [];\n }\n style.fontVariant.push(type);\n },\n };\n}\n","import defaultStyles from './styles';\nexport default class Cache {\n constructor(customStyles) {\n this.ir = new Map(defaultStyles);\n this.styles = new Map();\n this.prefixes = new Map();\n this.ir = new Map([...defaultStyles, ...(customStyles !== null && customStyles !== void 0 ? customStyles : [])]);\n }\n getStyle(key) {\n return this.styles.get(key);\n }\n setStyle(key, style) {\n this.styles.set(key, style);\n }\n getIr(key) {\n return this.ir.get(key);\n }\n setIr(key, ir) {\n this.ir.set(key, ir);\n }\n getPrefixMatch(key) {\n return this.prefixes.get(key);\n }\n setPrefixMatch(key, value) {\n this.prefixes.set(key, value);\n }\n}\n","import { Unit } from '../types';\nimport { getCompleteStyle, complete, getStyle, mergeStyle, parseNumericValue, unconfiggedStyle, } from '../helpers';\nexport default function fontSize(value, config, context = {}) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return unconfiggedStyle(`fontSize`, value, context);\n }\n if (typeof configValue === `string`) {\n return getCompleteStyle(`fontSize`, configValue);\n }\n let style = {};\n const [fontSize, rest] = configValue;\n const fontSizeStyle = getStyle(`fontSize`, fontSize);\n if (fontSizeStyle) {\n style = fontSizeStyle;\n }\n if (typeof rest === `string`) {\n return complete(mergeStyle(`lineHeight`, calculateLineHeight(rest, style), style));\n }\n const { lineHeight, letterSpacing } = rest;\n if (lineHeight) {\n mergeStyle(`lineHeight`, calculateLineHeight(lineHeight, style), style);\n }\n if (letterSpacing) {\n mergeStyle(`letterSpacing`, letterSpacing, style);\n }\n return complete(style);\n}\n// calculates line-height for relative units\nfunction calculateLineHeight(lineHeight, style) {\n const parsed = parseNumericValue(lineHeight);\n if (parsed) {\n const [number, unit] = parsed;\n if ((unit === Unit.none || unit === Unit.em) && typeof style.fontSize === `number`) {\n return style.fontSize * number;\n }\n }\n return lineHeight;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal } from '../helpers';\nexport default function lineHeight(value, config) {\n var _a;\n const parseValue = (_a = config === null || config === void 0 ? void 0 : config[value]) !== null && _a !== void 0 ? _a : (value.startsWith(`[`) ? value.slice(1, -1) : value);\n const parsed = parseNumericValue(parseValue);\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.none) {\n // we have a relative line-height like `2` for `leading-loose`\n return {\n kind: `dependent`,\n complete(style) {\n if (typeof style.fontSize !== `number`) {\n return `relative line-height utilities require that font-size be set`;\n }\n style.lineHeight = style.fontSize * number;\n },\n };\n }\n const styleVal = toStyleVal(number, unit);\n return styleVal !== null ? complete({ lineHeight: styleVal }) : null;\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, parseUnconfigged, toStyleVal } from '../helpers';\nexport default function spacing(type, direction, isNegative, value, config) {\n let numericValue = ``;\n if (value[0] === `[`) {\n numericValue = value.slice(1, -1);\n }\n else {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n const unconfigged = parseUnconfigged(value);\n if (unconfigged && typeof unconfigged === `number`) {\n return spacingStyle(unconfigged, Unit.px, direction, type);\n }\n return null;\n }\n else {\n numericValue = configValue;\n }\n }\n if (numericValue === `auto`) {\n return expand(direction, type, `auto`);\n }\n const parsed = parseNumericValue(numericValue);\n if (!parsed) {\n return null;\n }\n let [number, unit] = parsed;\n if (isNegative) {\n number = -number;\n }\n return spacingStyle(number, unit, direction, type);\n}\nfunction spacingStyle(number, unit, direction, type) {\n const pixels = toStyleVal(number, unit);\n if (pixels === null) {\n return null;\n }\n return expand(direction, type, pixels);\n}\nfunction expand(direction, type, value) {\n switch (direction) {\n case `All`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Right`]: value,\n [`${type}Bottom`]: value,\n [`${type}Left`]: value,\n },\n };\n case `Bottom`:\n case `Top`:\n case `Left`:\n case `Right`:\n return {\n kind: `complete`,\n style: {\n [`${type}${direction}`]: value,\n },\n };\n case `Vertical`:\n return {\n kind: `complete`,\n style: {\n [`${type}Top`]: value,\n [`${type}Bottom`]: value,\n },\n };\n case `Horizontal`:\n return {\n kind: `complete`,\n style: {\n [`${type}Left`]: value,\n [`${type}Right`]: value,\n },\n };\n default:\n return null;\n }\n}\n","import { toPx, warn } from './helpers';\nexport default function screens(input) {\n if (!input) {\n return {};\n }\n const screenData = Object.entries(input).reduce((acc, [screen, value]) => {\n const data = [0, Infinity, 0];\n const values = typeof value === `string` ? { min: value } : value;\n const minPx = values.min ? toPx(values.min) : 0;\n if (minPx === null) {\n warn(`invalid screen config value: ${screen}->min: ${values.min}`);\n }\n else {\n data[0] = minPx;\n }\n const maxPx = values.max ? toPx(values.max) : Infinity;\n if (maxPx === null) {\n warn(`invalid screen config value: ${screen}->max: ${values.max}`);\n }\n else {\n data[1] = maxPx;\n }\n acc[screen] = data;\n return acc;\n }, {});\n const values = Object.values(screenData);\n values.sort((a, b) => {\n const [minA, maxA] = a;\n const [minB, maxB] = b;\n if (maxA === Infinity || maxB === Infinity) {\n return minA - minB;\n }\n return maxA - maxB;\n });\n let order = 0;\n values.forEach((value) => (value[2] = order++));\n return screenData;\n}\n","import { complete } from '../helpers';\nexport default function fontFamily(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (!configValue) {\n return null;\n }\n if (typeof configValue === `string`) {\n return complete({ fontFamily: configValue });\n }\n const firstFamily = configValue[0];\n if (!firstFamily) {\n return null;\n }\n return complete({ fontFamily: firstFamily });\n}\n","import { isObject, isString } from '../types';\nimport { warn, complete } from '../helpers';\nexport function color(type, value, config) {\n if (!config) {\n return null;\n }\n // support opacity shorthand: `bg-red-200/50`\n let shorthandOpacity = undefined;\n if (value.includes(`/`)) {\n [value = ``, shorthandOpacity] = value.split(`/`, 2);\n }\n let color = ``;\n // for arbitrary support: `bg-[#eaeaea]`, `text-[rgba(1, 1, 1, 0.5)]`\n if (value.startsWith(`[#`) || value.startsWith(`[rgb`)) {\n color = value.slice(1, -1);\n // search for color in config\n }\n else {\n color = findColorInConfigRecursive(value, config);\n }\n if (!color) {\n return null;\n }\n if (shorthandOpacity) {\n const opacity = Number(shorthandOpacity);\n if (!Number.isNaN(opacity)) {\n color = addOpacity(color, opacity / 100);\n return complete({ [STYLE_PROPS[type].color]: color });\n }\n }\n // return a dependent style to support merging of classes\n // like `bg-red-800 bg-opacity-75`\n return {\n kind: `dependent`,\n complete(style) {\n const opacityProp = STYLE_PROPS[type].opacity;\n const opacity = style[opacityProp];\n if (typeof opacity === `number`) {\n color = addOpacity(color, opacity);\n }\n style[STYLE_PROPS[type].color] = color;\n },\n };\n}\nexport function colorOpacity(type, value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n const opacity = percentage / 100;\n const style = { [STYLE_PROPS[type].opacity]: opacity };\n return { kind: `complete`, style };\n}\nfunction addOpacity(color, opacity) {\n if (color.startsWith(`#`)) {\n color = hexToRgba(color);\n }\n else if (color.startsWith(`rgb(`)) {\n color = color.replace(/^rgb\\(/, `rgba(`).replace(/\\)$/, `, 1)`);\n }\n // @TODO: support hls/hlsa if anyone opens an issue...\n return color.replace(/, ?\\d*\\.?(\\d+)\\)$/, `, ${opacity})`);\n}\nexport function removeOpacityHelpers(style) {\n for (const key in style) {\n if (key.startsWith(`__opacity_`)) {\n delete style[key];\n }\n }\n}\nconst STYLE_PROPS = {\n bg: { opacity: `__opacity_bg`, color: `backgroundColor` },\n text: { opacity: `__opacity_text`, color: `color` },\n border: { opacity: `__opacity_border`, color: `borderColor` },\n borderTop: { opacity: `__opacity_border`, color: `borderTopColor` },\n borderBottom: { opacity: `__opacity_border`, color: `borderBottomColor` },\n borderLeft: { opacity: `__opacity_border`, color: `borderLeftColor` },\n borderRight: { opacity: `__opacity_border`, color: `borderRightColor` },\n shadow: { opacity: `__opacity_shadow`, color: `shadowColor` },\n tint: { opacity: `__opacity_tint`, color: `tintColor` },\n};\nfunction hexToRgba(hex) {\n const orig = hex;\n hex = hex.replace(MATCH_SHORT_HEX, (_, r, g, b) => r + r + g + g + b + b);\n const result = MATCH_FULL_HEX.exec(hex);\n if (!result) {\n warn(`invalid config hex color value: ${orig}`);\n return `rgba(0, 0, 0, 1)`;\n }\n const r = parseInt(result[1], 16);\n const g = parseInt(result[2], 16);\n const b = parseInt(result[3], 16);\n return `rgba(${r}, ${g}, ${b}, 1)`;\n}\nfunction findColorInConfigRecursive(colorName, config) {\n const configColor = config[colorName];\n // the color is found at the current config level\n if (isString(configColor)) {\n return configColor;\n }\n else if (isObject(configColor) && isString(configColor.DEFAULT)) {\n return configColor.DEFAULT;\n }\n // search for a matching sub-string at the current config level\n let [colorNameStart = ``, ...colorNameRest] = colorName.split(`-`);\n while (colorNameStart !== colorName) {\n const subConfig = config[colorNameStart];\n if (isObject(subConfig)) {\n return findColorInConfigRecursive(colorNameRest.join(`-`), subConfig);\n }\n else if (colorNameRest.length === 0) {\n return ``;\n }\n colorNameStart = `${colorNameStart}-${colorNameRest.shift()}`;\n }\n return ``;\n}\nconst MATCH_SHORT_HEX = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\nconst MATCH_FULL_HEX = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i;\n","import { parseAndConsumeDirection, complete, getCompleteStyle, unconfiggedStyle, } from '../helpers';\nimport { color } from './color';\nexport function border(value, theme) {\n let [rest, direction] = parseAndConsumeDirection(value);\n const widthUtilityMatch = rest.match(/^(-?(\\d)+)?$/);\n if (widthUtilityMatch) {\n return borderWidth(rest, direction, theme === null || theme === void 0 ? void 0 : theme.borderWidth);\n }\n rest = rest.replace(/^-/, ``);\n if ([`dashed`, `solid`, `dotted`].includes(rest)) {\n return complete({ borderStyle: rest });\n }\n let colorType = `border`;\n switch (direction) {\n case `Bottom`:\n colorType = `borderBottom`;\n break;\n case `Top`:\n colorType = `borderTop`;\n break;\n case `Left`:\n colorType = `borderLeft`;\n break;\n case `Right`:\n colorType = `borderRight`;\n break;\n }\n const colorStyle = color(colorType, rest, theme === null || theme === void 0 ? void 0 : theme.borderColor);\n if (colorStyle) {\n return colorStyle;\n }\n // Finally Handling Arbitrary Width Case\n // border-[20px] or border-[2.5rem]\n const prop = `border${direction === `All` ? `` : direction}Width`;\n rest = rest.replace(/^-/, ``);\n const numericValue = rest.slice(1, -1);\n const arbitraryWidth = unconfiggedStyle(prop, numericValue);\n // can't use % for border-radius in RN\n if (typeof (arbitraryWidth === null || arbitraryWidth === void 0 ? void 0 : arbitraryWidth.style[prop]) !== `number`) {\n return null;\n }\n return arbitraryWidth;\n}\nfunction borderWidth(value, direction, config) {\n if (!config) {\n return null;\n }\n value = value.replace(/^-/, ``);\n const key = value === `` ? `DEFAULT` : value;\n const configValue = config[key];\n if (configValue === undefined) {\n return null;\n }\n const prop = `border${direction === `All` ? `` : direction}Width`;\n return getCompleteStyle(prop, configValue);\n}\nexport function borderRadius(value, config) {\n if (!config) {\n return null;\n }\n let [rest, direction] = parseAndConsumeDirection(value);\n rest = rest.replace(/^-/, ``);\n if (rest === ``) {\n rest = `DEFAULT`;\n }\n const prop = `border${direction === `All` ? `` : direction}Radius`;\n const configValue = config[rest];\n if (configValue) {\n return expand(getCompleteStyle(prop, configValue));\n }\n const arbitrary = unconfiggedStyle(prop, rest);\n // can't use % for border-radius in RN\n if (typeof (arbitrary === null || arbitrary === void 0 ? void 0 : arbitrary.style[prop]) !== `number`) {\n return null;\n }\n return expand(arbitrary);\n}\n// RN only supports `borderRadius` + `border(top|bottom)(left|right)Radius`\nfunction expand(ir) {\n if ((ir === null || ir === void 0 ? void 0 : ir.kind) !== `complete`)\n return ir;\n const top = ir.style.borderTopRadius;\n if (top !== undefined) {\n ir.style.borderTopLeftRadius = top;\n ir.style.borderTopRightRadius = top;\n delete ir.style.borderTopRadius;\n }\n const bottom = ir.style.borderBottomRadius;\n if (bottom !== undefined) {\n ir.style.borderBottomLeftRadius = bottom;\n ir.style.borderBottomRightRadius = bottom;\n delete ir.style.borderBottomRadius;\n }\n const left = ir.style.borderLeftRadius;\n if (left !== undefined) {\n ir.style.borderBottomLeftRadius = left;\n ir.style.borderTopLeftRadius = left;\n delete ir.style.borderLeftRadius;\n }\n const right = ir.style.borderRightRadius;\n if (right !== undefined) {\n ir.style.borderBottomRightRadius = right;\n ir.style.borderTopRightRadius = right;\n delete ir.style.borderRightRadius;\n }\n return ir;\n}\n","import { complete, parseStyleVal, parseUnconfigged } from '../helpers';\nexport function inset(type, value, isNegative, config) {\n let insetDir = null;\n if (type === `inset`) {\n value = value.replace(/^(x|y)-/, (_, dir) => {\n insetDir = dir === `x` ? `x` : `y`;\n return ``;\n });\n }\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const styleVal = parseStyleVal(configValue, { isNegative });\n if (styleVal !== null) {\n return insetStyle(type, insetDir, styleVal);\n }\n }\n const unconfigged = parseUnconfigged(value, { isNegative });\n if (unconfigged !== null) {\n return insetStyle(type, insetDir, unconfigged);\n }\n return null;\n}\nfunction insetStyle(type, dir, styleVal) {\n if (type !== `inset`) {\n return complete({ [type]: styleVal });\n }\n switch (dir) {\n case null:\n return complete({\n top: styleVal,\n left: styleVal,\n right: styleVal,\n bottom: styleVal,\n });\n case `y`:\n return complete({\n top: styleVal,\n bottom: styleVal,\n });\n case `x`:\n return complete({\n left: styleVal,\n right: styleVal,\n });\n }\n}\n","import { complete, parseStyleVal } from '../helpers';\nexport function flexGrowShrink(type, value, config) {\n var _a;\n value = value.replace(/^-/, ``);\n const configKey = value === `` ? `DEFAULT` : value;\n const numericValue = Number((_a = config === null || config === void 0 ? void 0 : config[configKey]) !== null && _a !== void 0 ? _a : value);\n if (!Number.isNaN(numericValue)) {\n return complete({ [`flex${type}`]: numericValue });\n }\n return null;\n}\nexport function flex(value, config) {\n var _a, _b;\n value = (config === null || config === void 0 ? void 0 : config[value]) || value;\n if ([`min-content`, `revert`, `unset`].includes(value)) {\n // unsupported\n return null;\n }\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n // MDN: One value, unitless number: flex-grow flex-basis is then equal to 0.\n if (value.match(/^\\d+(\\.\\d+)?$/)) {\n return complete({\n flexGrow: Number(value),\n flexBasis: `0%`,\n });\n }\n // MDN: Two values (both integers): flex-grow | flex-basis\n let match = value.match(/^(\\d+)\\s+(\\d+)$/);\n if (match) {\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n });\n }\n // MDN: Two values: flex-grow | flex-basis\n match = value.match(/^(\\d+)\\s+([^ ]+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_a = match[2]) !== null && _a !== void 0 ? _a : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexBasis,\n });\n }\n // MDN: Three values: flex-grow | flex-shrink | flex-basis\n match = value.match(/^(\\d+)\\s+(\\d+)\\s+(.+)$/);\n if (match) {\n const flexBasis = parseStyleVal((_b = match[3]) !== null && _b !== void 0 ? _b : ``);\n if (!flexBasis) {\n return null;\n }\n return complete({\n flexGrow: Number(match[1]),\n flexShrink: Number(match[2]),\n flexBasis,\n });\n }\n return null;\n}\n","import { getCompleteStyle, complete, parseStyleVal, unconfiggedStyle } from '../helpers';\nexport function widthHeight(type, value, context = {}, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue !== undefined) {\n return getCompleteStyle(type, configValue, context);\n }\n return unconfiggedStyle(type, value, context);\n}\nexport function minMaxWidthHeight(type, value, context = {}, config) {\n const styleVal = parseStyleVal(config === null || config === void 0 ? void 0 : config[value], context);\n if (styleVal) {\n return complete({ [type]: styleVal });\n }\n if (value === `screen`) {\n value = type.includes(`Width`) ? `100vw` : `100vh`;\n }\n return unconfiggedStyle(type, value, context);\n}\n","import { Unit } from '../types';\nimport { parseNumericValue, complete, toStyleVal, unconfiggedStyle, warn, } from '../helpers';\nexport function letterSpacing(value, isNegative, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsed = parseNumericValue(configValue, { isNegative });\n if (!parsed) {\n return null;\n }\n const [number, unit] = parsed;\n if (unit === Unit.em) {\n return relativeLetterSpacing(number);\n }\n // @TODO, if we get a percentage based config value, theoretically we could\n // make a font-size dependent style as well, wait for someone to raise an issue\n if (unit === Unit.percent) {\n warn(`percentage-based letter-spacing configuration currently unsupported, switch to \\`em\\`s, or open an issue if you'd like to see support added.`);\n return null;\n }\n const styleVal = toStyleVal(number, unit, { isNegative });\n if (styleVal !== null) {\n return complete({ letterSpacing: styleVal });\n }\n return null;\n }\n return unconfiggedStyle(`letterSpacing`, value, { isNegative });\n}\nfunction relativeLetterSpacing(ems) {\n return {\n kind: `dependent`,\n complete(style) {\n const fontSize = style.fontSize;\n if (typeof fontSize !== `number` || Number.isNaN(fontSize)) {\n return `tracking-X relative letter spacing classes require font-size to be set`;\n }\n style.letterSpacing = Math.round((ems * fontSize + Number.EPSILON) * 100) / 100;\n },\n };\n}\n","import { parseNumericValue, complete } from '../helpers';\nexport function opacity(value, config) {\n const configValue = config === null || config === void 0 ? void 0 : config[value];\n if (configValue) {\n const parsedConfig = parseNumericValue(String(configValue));\n if (parsedConfig) {\n return complete({ opacity: parsedConfig[0] });\n }\n }\n const parsedArbitrary = parseNumericValue(value);\n if (parsedArbitrary) {\n return complete({ opacity: parsedArbitrary[0] / 100 });\n }\n return null;\n}\n","import { parseUnconfigged } from '../helpers';\nexport function shadowOpacity(value) {\n const percentage = parseInt(value, 10);\n if (Number.isNaN(percentage)) {\n return null;\n }\n return {\n kind: `complete`,\n style: { shadowOpacity: percentage / 100 },\n };\n}\nexport function shadowOffset(value) {\n if (value.includes(`/`)) {\n const [widthStr = ``, heightStr = ``] = value.split(`/`, 2);\n const width = offsetValue(widthStr);\n const height = offsetValue(heightStr);\n if (width === null || height === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width,\n height,\n },\n },\n };\n }\n const number = offsetValue(value);\n if (number === null) {\n return null;\n }\n return {\n kind: `complete`,\n style: {\n shadowOffset: {\n width: number,\n height: number,\n },\n },\n };\n}\nfunction offsetValue(value) {\n const parsed = parseUnconfigged(value);\n return typeof parsed === `number` ? parsed : null;\n}\n","import fontSize from './resolve/font-size';\nimport lineHeight from './resolve/line-height';\nimport spacing from './resolve/spacing';\nimport screens from './screens';\nimport { isOrientation, isPlatform, } from './types';\nimport fontFamily from './resolve/font-family';\nimport { color, colorOpacity } from './resolve/color';\nimport { border, borderRadius } from './resolve/borders';\nimport { getCompleteStyle, getDirection, unconfiggedStyle, warn, complete, parseNumericValue, } from './helpers';\nimport { inset } from './resolve/inset';\nimport { flexGrowShrink, flex } from './resolve/flex';\nimport { widthHeight, minMaxWidthHeight } from './resolve/width-height';\nimport { letterSpacing } from './resolve/letter-spacing';\nimport { opacity } from './resolve/opacity';\nimport { shadowOpacity, shadowOffset } from './resolve/shadow';\nexport default class ClassParser {\n constructor(input, config = {}, cache, device, platform) {\n var _a, _b, _c, _d, _e, _f;\n this.config = config;\n this.cache = cache;\n this.position = 0;\n this.isNull = false;\n this.isNegative = false;\n this.context = {};\n this.context.device = device;\n const parts = input.trim().split(`:`);\n let prefixes = [];\n if (parts.length === 1) {\n this.string = input;\n }\n else {\n this.string = (_a = parts.pop()) !== null && _a !== void 0 ? _a : ``;\n prefixes = parts;\n }\n this.char = this.string[0];\n const widthBreakpoints = screens((_b = this.config.theme) === null || _b === void 0 ? void 0 : _b.screens);\n // loop through the prefixes ONE time, extracting useful info\n for (const prefix of prefixes) {\n if (widthBreakpoints[prefix]) {\n const breakpointOrder = (_c = widthBreakpoints[prefix]) === null || _c === void 0 ? void 0 : _c[2];\n if (breakpointOrder !== undefined) {\n this.order = ((_d = this.order) !== null && _d !== void 0 ? _d : 0) + breakpointOrder;\n }\n const windowWidth = (_e = device.windowDimensions) === null || _e === void 0 ? void 0 : _e.width;\n if (windowWidth) {\n const [min, max] = (_f = widthBreakpoints[prefix]) !== null && _f !== void 0 ? _f : [0, 0];\n if (windowWidth <= min || windowWidth > max) {\n // breakpoint does not match\n this.isNull = true;\n }\n }\n else {\n this.isNull = true;\n }\n }\n else if (isPlatform(prefix)) {\n this.isNull = prefix !== platform;\n }\n else if (isOrientation(prefix)) {\n if (!device.windowDimensions) {\n this.isNull = true;\n }\n else {\n const deviceOrientation = device.windowDimensions.width > device.windowDimensions.height\n ? `landscape`\n : `portrait`;\n if (deviceOrientation !== prefix) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n }\n else if (prefix === `retina`) {\n if (device.pixelDensity === 2) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n }\n else if (prefix === `dark`) {\n if (device.colorScheme !== `dark`) {\n this.isNull = true;\n }\n else {\n this.incrementOrder();\n }\n }\n else if (!this.handlePossibleArbitraryBreakpointPrefix(prefix)) {\n this.isNull = true;\n }\n }\n }\n parse() {\n if (this.isNull) {\n return { kind: `null` };\n }\n // resolve things like ios:hidden, after prefix removed\n const cached = this.cache.getIr(this.rest);\n if (cached) {\n return cached;\n }\n this.parseIsNegative();\n const ir = this.parseUtility();\n if (!ir) {\n return { kind: `null` };\n }\n if (this.order !== undefined) {\n return { kind: `ordered`, order: this.order, styleIr: ir };\n }\n return ir;\n }\n parseUtility() {\n var _a, _b, _c, _d, _e;\n const theme = this.config.theme;\n let style = null;\n switch (this.char) {\n case `m`:\n case `p`: {\n const match = this.peekSlice(1, 3).match(/^(t|b|r|l|x|y)?-/);\n if (match) {\n const prop = this.char === `m` ? `margin` : `padding`;\n this.advance(((_b = (_a = match[0]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) + 1);\n const spacingDirection = getDirection(match[1]);\n const style = spacing(prop, spacingDirection, this.isNegative, this.rest, (_c = this.config.theme) === null || _c === void 0 ? void 0 : _c[prop]);\n if (style)\n return style;\n }\n }\n }\n if (this.consumePeeked(`h-`)) {\n style = widthHeight(`height`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.height);\n if (style)\n return style;\n }\n if (this.consumePeeked(`w-`)) {\n style = widthHeight(`width`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.width);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-w-`)) {\n style = minMaxWidthHeight(`minWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`min-h-`)) {\n style = minMaxWidthHeight(`minHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.minHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-w-`)) {\n style = minMaxWidthHeight(`maxWidth`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxWidth);\n if (style)\n return style;\n }\n if (this.consumePeeked(`max-h-`)) {\n style = minMaxWidthHeight(`maxHeight`, this.rest, this.context, theme === null || theme === void 0 ? void 0 : theme.maxHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`leading-`)) {\n style = lineHeight(this.rest, theme === null || theme === void 0 ? void 0 : theme.lineHeight);\n if (style)\n return style;\n }\n if (this.consumePeeked(`text-`)) {\n style = fontSize(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontSize, this.context);\n if (style)\n return style;\n style = color(`text`, this.rest, theme === null || theme === void 0 ? void 0 : theme.textColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`text`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`font-`)) {\n style = fontFamily(this.rest, theme === null || theme === void 0 ? void 0 : theme.fontFamily);\n if (style)\n return style;\n }\n if (this.consumePeeked(`aspect-`)) {\n if (this.consumePeeked(`ratio-`)) {\n warn(`\\`aspect-ratio-{ratio}\\` is deprecated, use \\`aspect-{ratio}\\` instead`);\n }\n style = getCompleteStyle(`aspectRatio`, this.rest, { fractions: true });\n if (style)\n return style;\n }\n if (this.consumePeeked(`tint-`)) {\n style = color(`tint`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bg-`)) {\n style = color(`bg`, this.rest, theme === null || theme === void 0 ? void 0 : theme.backgroundColor);\n if (style)\n return style;\n if (this.consumePeeked(`opacity-`)) {\n style = colorOpacity(`bg`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`border`)) {\n style = border(this.rest, theme);\n if (style)\n return style;\n if (this.consumePeeked(`-opacity-`)) {\n style = colorOpacity(`border`, this.rest);\n if (style)\n return style;\n }\n }\n if (this.consumePeeked(`rounded`)) {\n style = borderRadius(this.rest, theme === null || theme === void 0 ? void 0 : theme.borderRadius);\n if (style)\n return style;\n }\n if (this.consumePeeked(`bottom-`)) {\n style = inset(`bottom`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`top-`)) {\n style = inset(`top`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`left-`)) {\n style = inset(`left`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`right-`)) {\n style = inset(`right`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`inset-`)) {\n style = inset(`inset`, this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.inset);\n if (style)\n return style;\n }\n if (this.consumePeeked(`flex-`)) {\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n }\n else if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n }\n else {\n style = flex(this.rest, theme === null || theme === void 0 ? void 0 : theme.flex);\n }\n if (style)\n return style;\n }\n if (this.consumePeeked(`grow`)) {\n style = flexGrowShrink(`Grow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexGrow);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shrink`)) {\n style = flexGrowShrink(`Shrink`, this.rest, theme === null || theme === void 0 ? void 0 : theme.flexShrink);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-color-opacity-`)) {\n style = colorOpacity(`shadow`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-opacity-`)) {\n style = shadowOpacity(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-offset-`)) {\n style = shadowOffset(this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-radius-`)) {\n style = unconfiggedStyle(`shadowRadius`, this.rest);\n if (style)\n return style;\n }\n if (this.consumePeeked(`shadow-`)) {\n style = color(`shadow`, this.rest, theme === null || theme === void 0 ? void 0 : theme.colors);\n if (style)\n return style;\n }\n if (this.consumePeeked(`elevation-`)) {\n const elevation = parseInt(this.rest, 10);\n if (!Number.isNaN(elevation)) {\n return complete({ elevation });\n }\n }\n if (this.consumePeeked(`opacity-`)) {\n style = opacity(this.rest, theme === null || theme === void 0 ? void 0 : theme.opacity);\n if (style)\n return style;\n }\n if (this.consumePeeked(`tracking-`)) {\n style = letterSpacing(this.rest, this.isNegative, theme === null || theme === void 0 ? void 0 : theme.letterSpacing);\n if (style)\n return style;\n }\n if (this.consumePeeked(`z-`)) {\n const zIndex = Number((_e = (_d = theme === null || theme === void 0 ? void 0 : theme.zIndex) === null || _d === void 0 ? void 0 : _d[this.rest]) !== null && _e !== void 0 ? _e : this.rest);\n if (!Number.isNaN(zIndex)) {\n return complete({ zIndex });\n }\n }\n warn(`\\`${this.rest}\\` unknown or invalid utility`);\n return null;\n }\n handlePossibleArbitraryBreakpointPrefix(prefix) {\n var _a;\n // save the expense of running the regex with a quick sniff test\n if (prefix[0] !== `m`)\n return false;\n const match = prefix.match(/^(min|max)-(w|h)-\\[([^\\]]+)\\]$/);\n if (!match)\n return false;\n if (!((_a = this.context.device) === null || _a === void 0 ? void 0 : _a.windowDimensions)) {\n this.isNull = true;\n return true;\n }\n const windowDims = this.context.device.windowDimensions;\n const [, type = ``, dir = ``, amount = ``] = match;\n const checkDimension = dir === `w` ? windowDims.width : windowDims.height;\n const parsedAmount = parseNumericValue(amount, this.context);\n if (parsedAmount === null) {\n this.isNull = true;\n return true;\n }\n const [bound, unit] = parsedAmount;\n if (unit !== `px`) {\n this.isNull = true;\n }\n if (type === `min` ? checkDimension >= bound : checkDimension <= bound) {\n this.incrementOrder();\n }\n else {\n this.isNull = true;\n }\n return true;\n }\n advance(amount = 1) {\n this.position += amount;\n this.char = this.string[this.position];\n }\n get rest() {\n return this.peekSlice(0, this.string.length);\n }\n peekSlice(begin, end) {\n return this.string.slice(this.position + begin, this.position + end);\n }\n consumePeeked(string) {\n if (this.peekSlice(0, string.length) === string) {\n this.advance(string.length);\n return true;\n }\n return false;\n }\n parseIsNegative() {\n if (this.char === `-`) {\n this.advance();\n this.isNegative = true;\n this.context.isNegative = true;\n }\n }\n incrementOrder() {\n var _a;\n this.order = ((_a = this.order) !== null && _a !== void 0 ? _a : 0) + 1;\n }\n}\n","export function parseInputs(inputs) {\n let classNames = [];\n let styles = null;\n inputs.forEach((input) => {\n if (typeof input === `string`) {\n classNames = [...classNames, ...split(input)];\n }\n else if (Array.isArray(input)) {\n classNames = [...classNames, ...input.flatMap(split)];\n }\n else if (typeof input === `object` && input !== null) {\n for (const [key, value] of Object.entries(input)) {\n if (typeof value === `boolean`) {\n classNames = [...classNames, ...(value ? split(key) : [])];\n }\n else if (styles) {\n styles[key] = value;\n }\n else {\n styles = { [key]: value };\n }\n }\n }\n });\n return [classNames.filter(Boolean).filter(unique), styles];\n}\nfunction split(str) {\n return str.trim().split(/\\s+/);\n}\nfunction unique(className, index, classes) {\n return classes.indexOf(className) === index;\n}\n","const plugin = (handler) => {\n return { handler, config: undefined };\n};\nexport default plugin;\nexport function getAddedUtilities(plugins) {\n var _a;\n return ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.reduce((utils, plugin) => ({ ...utils, ...callPluginFunction(plugin.handler) }), {})) !== null && _a !== void 0 ? _a : {});\n}\nfunction callPluginFunction(pluginFn) {\n let added = {};\n pluginFn({\n addUtilities: (utilities) => {\n added = utilities;\n },\n ...core,\n });\n return added;\n}\nfunction notImplemented(fn) {\n throw new Error(`tailwindcss plugin function argument object prop \"${fn}\" not implemented`);\n}\nconst core = {\n addComponents: notImplemented,\n addBase: notImplemented,\n addVariant: notImplemented,\n e: notImplemented,\n prefix: notImplemented,\n theme: notImplemented,\n variants: notImplemented,\n config: notImplemented,\n corePlugins: notImplemented,\n matchUtilities: notImplemented,\n postcss: null,\n};\n","import type { TwConfig } from 'twrnc'\n\nimport * as twrnc from 'twrnc/create'\n\ntype TwPlugin = TwConfig['plugins'][number]\n\nconst defaultShadows: TwPlugin = {\n handler: ({ addUtilities }) => {\n const presets = {\n 'shadow-sm': { boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n shadow: {\n boxShadow:\n '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n },\n 'shadow-md': {\n boxShadow:\n '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n },\n 'shadow-lg': {\n boxShadow:\n '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n },\n 'shadow-xl': {\n boxShadow:\n '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n },\n 'shadow-2xl': {\n boxShadow: '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n },\n 'shadow-inner': {\n boxShadow: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n },\n 'shadow-none': { boxShadow: '0 0 #0000' },\n }\n\n addUtilities(presets)\n },\n}\n\nfunction createTw(config?: TwConfig) {\n return twrnc.create(\n {\n ...config,\n plugins: [...(config?.plugins ?? []), defaultShadows],\n },\n 'web'\n )\n}\n\nlet tw\nexport default function getTw({\n width,\n height,\n config,\n}: {\n width: number\n height: number\n config?: TwConfig\n}) {\n if (!tw) {\n tw = createTw(config)\n }\n tw.setWindowDimensions({ width: +width, height: +height })\n return tw\n}\n","import type { ReactNode } from 'react'\nimport type { TwConfig } from 'twrnc'\nimport type { SatoriNode } from './layout.js'\n\nimport getYoga, { init } from './yoga/index.js'\nimport layout from './layout.js'\nimport FontLoader, { FontOptions } from './font.js'\nimport svg from './builder/svg.js'\nimport { segment } from './utils.js'\nimport { detectLanguageCode, LangCode, Locale } from './language.js'\nimport getTw from './handler/tailwind.js'\nimport { preProcessNode } from './handler/preprocess.js'\nimport { cache, inflightRequests } from './handler/image.js'\n\n// We don't need to initialize the opentype instances every time.\nconst fontCache = new WeakMap()\n\nexport type SatoriOptions = (\n | {\n width: number\n height: number\n }\n | {\n width: number\n }\n | {\n height: number\n }\n) & {\n fonts: FontOptions[]\n embedFont?: boolean\n debug?: boolean\n graphemeImages?: Record\n loadAdditionalAsset?: (\n languageCode: string,\n segment: string\n ) => Promise>\n tailwindConfig?: TwConfig\n onNodeDetected?: (node: SatoriNode) => void\n}\nexport type { SatoriNode }\n\nexport { init }\n\nexport default async function satori(\n element: ReactNode,\n options: SatoriOptions\n): Promise {\n const Yoga = await getYoga()\n if (!Yoga || !Yoga.Node) {\n throw new Error(\n 'Satori is not initialized: expect `yoga` to be loaded, got ' + Yoga\n )\n }\n options.fonts = options.fonts || []\n\n let font: FontLoader\n if (fontCache.has(options.fonts)) {\n font = fontCache.get(options.fonts)\n } else {\n fontCache.set(options.fonts, (font = new FontLoader(options.fonts)))\n }\n\n const definedWidth = 'width' in options ? options.width : undefined\n const definedHeight = 'height' in options ? options.height : undefined\n\n const root = Yoga.Node.create()\n if (definedWidth) root.setWidth(definedWidth)\n if (definedHeight) root.setHeight(definedHeight)\n root.setFlexDirection(Yoga.FLEX_DIRECTION_ROW)\n root.setFlexWrap(Yoga.WRAP_WRAP)\n root.setAlignContent(Yoga.ALIGN_AUTO)\n root.setAlignItems(Yoga.ALIGN_FLEX_START)\n root.setJustifyContent(Yoga.JUSTIFY_FLEX_START)\n root.setOverflow(Yoga.OVERFLOW_HIDDEN)\n\n const graphemeImages = { ...options.graphemeImages }\n // Some Chinese characters have different glyphs in Chinese and\n // Japanese, but their Unicode is the same. If the user needs to display\n // the Chinese and Japanese characters simultaneously correctly, the user\n // needs to download the Chinese and Japanese fonts, respectively.\n // Assuming that the user has downloaded the corresponding Japanese font,\n // to let the program realize that the font has not been downloaded in Chinese,\n // we need to prohibit Japanese as the fallback when executing `engine.has`.\n //\n // This causes a problem. Consider a scenario where we need to display Chinese\n // correctly under tags with `lang=\"ja\"` set. `engine.has` will repeatedly treat\n // the Chinese as missing font because we have removed the Chinese as a fallback.\n // To address this situation, we may need to add `processedWordsMissingFont`\n const processedWordsMissingFonts = new Set()\n\n cache.clear()\n inflightRequests.clear()\n await preProcessNode(element)\n\n const handler = layout(element, {\n id: 'id',\n parentStyle: {},\n inheritedStyle: {\n fontSize: 16,\n fontWeight: 'normal',\n fontFamily: 'serif',\n fontStyle: 'normal',\n lineHeight: 'normal',\n color: 'black',\n opacity: 1,\n whiteSpace: 'normal',\n\n // Special style properties:\n _viewportWidth: definedWidth,\n _viewportHeight: definedHeight,\n },\n parent: root,\n font,\n embedFont: options.embedFont,\n debug: options.debug,\n graphemeImages,\n canLoadAdditionalAssets: !!options.loadAdditionalAsset,\n onNodeDetected: options.onNodeDetected,\n getTwStyles: (tw, style) => {\n const twToStyles = getTw({\n width: definedWidth,\n height: definedHeight,\n config: options.tailwindConfig,\n })\n const twStyles = { ...twToStyles([tw] as any) }\n if (typeof twStyles.lineHeight === 'number') {\n twStyles.lineHeight =\n twStyles.lineHeight / (+twStyles.fontSize || style.fontSize || 16)\n }\n if (twStyles.shadowColor && twStyles.boxShadow) {\n twStyles.boxShadow = (twStyles.boxShadow as string).replace(\n /rgba?\\([^)]+\\)/,\n twStyles.shadowColor as string\n )\n }\n return twStyles\n },\n })\n\n const segmentsMissingFont = (await handler.next()).value as {\n word: string\n locale?: Locale\n }[]\n\n if (options.loadAdditionalAsset) {\n if (segmentsMissingFont.length) {\n const languageCodes = convertToLanguageCodes(segmentsMissingFont)\n const fonts: FontOptions[] = []\n const images: Record = {}\n\n await Promise.all(\n Object.entries(languageCodes).flatMap(([code, segments]) =>\n segments.map((_segment) => {\n const key = `${code}_${_segment}`\n if (processedWordsMissingFonts.has(key)) {\n return null\n }\n processedWordsMissingFonts.add(key)\n\n return options\n .loadAdditionalAsset(code, _segment)\n .then((asset: any) => {\n if (typeof asset === 'string') {\n images[_segment] = asset\n } else if (asset) {\n if (Array.isArray(asset)) {\n fonts.push(...asset)\n } else {\n fonts.push(asset)\n }\n }\n })\n })\n )\n )\n\n // Directly mutate the font provider and the grapheme map.\n font.addFonts(fonts)\n Object.assign(graphemeImages, images)\n }\n }\n\n await handler.next()\n root.calculateLayout(definedWidth, definedHeight, Yoga.DIRECTION_LTR)\n\n const content = (await handler.next([0, 0])).value as string\n\n const computedWidth = root.getComputedWidth()\n const computedHeight = root.getComputedHeight()\n\n root.freeRecursive()\n\n return svg({ width: computedWidth, height: computedHeight, content })\n}\n\nfunction convertToLanguageCodes(\n segmentsMissingFont: { word: string; locale?: Locale }[]\n): Partial> {\n const languageCodes = {}\n let wordsByCode = {}\n\n for (const { word, locale } of segmentsMissingFont) {\n const code = detectLanguageCode(word, locale).join('|')\n wordsByCode[code] = wordsByCode[code] || ''\n wordsByCode[code] += word\n }\n\n Object.keys(wordsByCode).forEach((code: LangCode) => {\n languageCodes[code] = languageCodes[code] || []\n if (code === 'emoji') {\n languageCodes[code].push(\n ...unique(segment(wordsByCode[code], 'grapheme'))\n )\n } else {\n languageCodes[code][0] = languageCodes[code][0] || ''\n languageCodes[code][0] += unique(\n segment(\n wordsByCode[code],\n 'grapheme',\n code === 'unknown' ? undefined : code\n )\n ).join('')\n }\n })\n\n return languageCodes\n}\n\nfunction unique(arr: T[]): T[] {\n return Array.from(new Set(arr))\n}\n","import path from \"node:path\";\nimport fs from \"node:fs/promises\";\nimport type { Readable } from \"node:stream\";\nimport { styleText } from \"node:util\";\nimport satori, { type FontWeight, type SatoriOptions } from \"satori\";\nimport sharp from \"sharp\";\nimport readingTime from \"reading-time\";\nimport type {\n QuartzEmitterPlugin,\n BuildCtx,\n FilePath,\n FullSlug,\n GlobalConfiguration,\n QuartzPluginData,\n} from \"@quartz-community/types\";\nimport { joinSegments } from \"@quartz-community/types\";\nimport { unescapeHTML } from \"@quartz-community/utils\";\nimport { getDate } from \"@quartz-community/utils/sort\";\nimport type { JSX } from \"preact\";\nimport { type ThemeKey } from \"@quartz-community/types\";\nimport { getIconCode } from \"@quartz-community/utils/emoji\";\nimport { type FontSpecification, type Theme, getFontSpecificationName } from \"./theme.js\";\nimport { loadEmoji } from \"./emoji.js\";\n\nconst QUARTZ = \"quartz\";\n\ntype Frontmatter = {\n title?: string;\n description?: string;\n socialDescription?: string;\n socialImage?: string;\n tags?: string[];\n} & Record;\n\ntype LocalQuartzPluginData = {\n slug?: FullSlug;\n frontmatter?: Frontmatter;\n description?: string;\n text?: string;\n filePath?: string;\n dates?: Record;\n};\n\nconst defaultHeaderWeight = [700];\nconst defaultBodyWeight = [400];\n\nconst write = async (args: {\n ctx: BuildCtx;\n content: string | Buffer | Readable;\n slug: FullSlug;\n ext: string;\n}): Promise => {\n const pathToPage = joinSegments(args.ctx.argv.output, args.slug + args.ext) as FilePath;\n const dir = path.dirname(pathToPage);\n await fs.mkdir(dir, { recursive: true });\n await fs.writeFile(pathToPage, args.content);\n return pathToPage;\n};\n\nfunction getFileExtension(path: string): string | undefined {\n return path.match(/\\.([^./?#]+)(?:[?#]|$)/)?.[1];\n}\n\nfunction isAbsoluteURL(url: string): boolean {\n return /^https?:\\/\\//.test(url);\n}\n\nfunction formatDate(d: Date, locale: string = \"en-US\"): string {\n return d.toLocaleDateString(locale, {\n year: \"numeric\",\n month: \"short\",\n day: \"2-digit\",\n });\n}\n\nexport async function getSatoriFonts(headerFont: FontSpecification, bodyFont: FontSpecification) {\n const headerWeights: FontWeight[] = (\n typeof headerFont === \"string\"\n ? defaultHeaderWeight\n : (headerFont.weights ?? defaultHeaderWeight)\n ) as FontWeight[];\n const bodyWeights: FontWeight[] = (\n typeof bodyFont === \"string\" ? defaultBodyWeight : (bodyFont.weights ?? defaultBodyWeight)\n ) as FontWeight[];\n\n const headerFontName = typeof headerFont === \"string\" ? headerFont : headerFont.name;\n const bodyFontName = typeof bodyFont === \"string\" ? bodyFont : bodyFont.name;\n\n const headerFontPromises = headerWeights.map(async (weight) => {\n const data = await fetchTtf(headerFontName, weight);\n if (!data) return null;\n return {\n name: headerFontName,\n data,\n weight,\n style: \"normal\" as const,\n };\n });\n\n const bodyFontPromises = bodyWeights.map(async (weight) => {\n const data = await fetchTtf(bodyFontName, weight);\n if (!data) return null;\n return {\n name: bodyFontName,\n data,\n weight,\n style: \"normal\" as const,\n };\n });\n\n const [headerFonts, bodyFonts] = await Promise.all([\n Promise.all(headerFontPromises),\n Promise.all(bodyFontPromises),\n ]);\n\n const fonts: SatoriOptions[\"fonts\"] = [\n ...headerFonts.filter((font): font is NonNullable => font !== null),\n ...bodyFonts.filter((font): font is NonNullable => font !== null),\n ];\n\n return fonts;\n}\n\nexport async function fetchTtf(\n rawFontName: string,\n weight: FontWeight,\n): Promise {\n const fontName = rawFontName.replaceAll(\" \", \"+\");\n const cacheKey = `${fontName}-${weight}`;\n const cacheDir = path.join(QUARTZ, \".quartz-cache\", \"fonts\");\n const cachePath = path.join(cacheDir, cacheKey);\n\n try {\n await fs.access(cachePath);\n return fs.readFile(cachePath);\n } catch {\n /* file not cached, will fetch below */\n }\n\n const cssResponse = await fetch(\n `https://fonts.googleapis.com/css2?family=${fontName}:wght@${weight}`,\n );\n const css = await cssResponse.text();\n\n const urlRegex = /url\\((https:\\/\\/fonts.gstatic.com\\/s\\/.*?.ttf)\\)/g;\n const match = urlRegex.exec(css);\n\n if (!match) {\n console.log(\n styleText(\n \"yellow\",\n `\\nWarning: Failed to fetch font ${rawFontName} with weight ${weight}, got ${cssResponse.statusText}`,\n ),\n );\n return;\n }\n\n const fontUrl = match[1];\n if (!fontUrl) {\n return;\n }\n const fontResponse = await fetch(fontUrl);\n const fontData = Buffer.from(await fontResponse.arrayBuffer());\n await fs.mkdir(cacheDir, { recursive: true });\n await fs.writeFile(cachePath, fontData);\n\n return fontData;\n}\n\nexport type SocialImageOptions = {\n colorScheme: ThemeKey;\n height: number;\n width: number;\n excludeRoot: boolean;\n defaultTitle?: string;\n defaultDescription?: string;\n readingTimeText?: (minutes: number) => string;\n imageStructure: (\n options: ImageOptions & {\n userOpts: UserOpts;\n iconBase64?: string;\n },\n ) => JSX.Element;\n};\n\nexport type UserOpts = Omit;\n\nexport type ImageOptions = {\n title: string;\n description: string;\n fonts: SatoriOptions[\"fonts\"];\n cfg: GlobalConfiguration;\n fileData: LocalQuartzPluginData;\n};\n\nexport const defaultImage: SocialImageOptions[\"imageStructure\"] = ({\n cfg,\n userOpts,\n title,\n description,\n fileData,\n iconBase64,\n}) => {\n const { colorScheme } = userOpts;\n const theme = cfg.theme as Theme;\n const fontBreakPoint = 32;\n const useSmallerFont = title.length > fontBreakPoint;\n\n const rawDate = getDate(fileData as QuartzPluginData);\n const date = rawDate ? formatDate(rawDate, cfg.locale) : null;\n\n const { minutes } = readingTime(fileData.text ?? \"\");\n const readingTimeText = (userOpts.readingTimeText ?? ((time) => `${time} min read`))(\n Math.ceil(minutes),\n );\n\n const tags = fileData.frontmatter?.tags ?? [];\n const bodyFont = getFontSpecificationName(theme.typography.body);\n const headerFont = getFontSpecificationName(theme.typography.header);\n\n return (\n \n \n {iconBase64 && (\n \n )}\n \n {cfg.baseUrl}\n
\n \n\n \n \n {title}\n \n \n\n \n \n {description}\n

\n \n\n \n \n {date && (\n
\n \n \n \n \n \n \n {date}\n
\n )}\n
\n \n \n \n \n {readingTimeText}\n
\n \n\n \n {tags.slice(0, 3).map((tag) => (\n \n #{tag}\n \n ))}\n \n \n \n );\n};\n\nconst defaultOptions: SocialImageOptions = {\n colorScheme: \"lightMode\",\n width: 1200,\n height: 630,\n imageStructure: defaultImage,\n excludeRoot: false,\n defaultTitle: \"Untitled\",\n defaultDescription: \"No description provided\",\n readingTimeText: (minutes) => `${minutes} min read`,\n};\n\nasync function generateSocialImage(\n { cfg, description, fonts, title, fileData }: ImageOptions,\n userOpts: SocialImageOptions,\n): Promise {\n const { width, height } = userOpts;\n const iconPath = joinSegments(QUARTZ, \"static\", \"icon.png\");\n let iconBase64: string | undefined = undefined;\n\n try {\n const iconData = await fs.readFile(iconPath);\n iconBase64 = `data:image/png;base64,${iconData.toString(\"base64\")}`;\n } catch {\n console.warn(styleText(\"yellow\", `Warning: Could not find icon at ${iconPath}`));\n }\n\n const imageComponent = userOpts.imageStructure({\n cfg,\n userOpts,\n title,\n description,\n fonts,\n fileData,\n iconBase64,\n });\n\n const svg = await satori(imageComponent as Parameters[0], {\n width,\n height,\n fonts,\n loadAdditionalAsset: async (languageCode: string, segment: string) => {\n if (languageCode === \"emoji\") {\n return await loadEmoji(getIconCode(segment));\n }\n\n return languageCode;\n },\n });\n\n return sharp(Buffer.from(svg)).webp({ quality: 40 });\n}\n\nasync function processOgImage(\n ctx: BuildCtx,\n fileData: QuartzPluginData,\n fonts: SatoriOptions[\"fonts\"],\n fullOptions: SocialImageOptions,\n) {\n const cfg = ctx.cfg.configuration;\n const slug = fileData.slug!;\n const titleSuffix = cfg.pageTitleSuffix ?? \"\";\n const frontmatter = fileData.frontmatter;\n const title = (frontmatter?.title ?? fullOptions.defaultTitle ?? \"\") + titleSuffix;\n const description =\n frontmatter?.socialDescription ??\n frontmatter?.description ??\n unescapeHTML(fileData.description?.trim() ?? fullOptions.defaultDescription ?? \"\");\n\n const stream = await generateSocialImage(\n {\n title,\n description,\n fonts,\n cfg,\n fileData,\n },\n fullOptions,\n );\n\n return write({\n ctx,\n content: stream,\n slug: `${slug}-og-image` as FullSlug,\n ext: \".webp\",\n });\n}\n\nexport const CustomOgImagesEmitterName = \"CustomOgImages\";\nexport const CustomOgImages: QuartzEmitterPlugin> = (userOpts) => {\n const fullOptions = { ...defaultOptions, ...userOpts };\n\n return {\n name: CustomOgImagesEmitterName,\n getQuartzComponents() {\n return [];\n },\n async *emit(ctx, content, _resources) {\n const cfg = ctx.cfg.configuration;\n const theme = cfg.theme as Theme;\n const headerFont = theme.typography.header;\n const bodyFont = theme.typography.body;\n const fonts = await getSatoriFonts(headerFont, bodyFont);\n\n for (const [_tree, vfile] of content) {\n const data = vfile.data as QuartzPluginData;\n if (data.frontmatter?.socialImage !== undefined) continue;\n yield processOgImage(ctx, data, fonts, fullOptions);\n }\n },\n async *partialEmit(ctx, _content, _resources, changeEvents) {\n const cfg = ctx.cfg.configuration;\n const theme = cfg.theme as Theme;\n const headerFont = theme.typography.header;\n const bodyFont = theme.typography.body;\n const fonts = await getSatoriFonts(headerFont, bodyFont);\n\n for (const changeEvent of changeEvents) {\n if (!changeEvent.file) continue;\n const data = changeEvent.file.data as QuartzPluginData;\n if (data.frontmatter?.socialImage !== undefined) continue;\n if (changeEvent.type === \"add\" || changeEvent.type === \"change\") {\n yield processOgImage(ctx, data, fonts, fullOptions);\n }\n }\n },\n externalResources: (ctx) => {\n if (!ctx.cfg.configuration.baseUrl) {\n return {};\n }\n\n const baseUrl = ctx.cfg.configuration.baseUrl;\n return {\n additionalHead: [\n (pageData: QuartzPluginData) => {\n const isRealFile = pageData.filePath !== undefined;\n let userDefinedOgImagePath = pageData.frontmatter?.socialImage;\n\n if (userDefinedOgImagePath) {\n userDefinedOgImagePath = isAbsoluteURL(userDefinedOgImagePath)\n ? userDefinedOgImagePath\n : `https://${baseUrl}/static/${userDefinedOgImagePath}`;\n }\n\n const generatedOgImagePath = isRealFile\n ? `https://${baseUrl}/${pageData.slug!}-og-image.webp`\n : undefined;\n const defaultOgImagePath = `https://${baseUrl}/static/og-image.png`;\n const ogImagePath =\n userDefinedOgImagePath ?? generatedOgImagePath ?? defaultOgImagePath;\n const ogImageMimeType = `image/${getFileExtension(ogImagePath) ?? \"png\"}`;\n return (\n <>\n {!userDefinedOgImagePath && (\n <>\n \n \n \n )}\n \n \n \n \n \n );\n },\n ],\n };\n },\n };\n};\n","export interface ColorScheme {\n light: string;\n lightgray: string;\n gray: string;\n darkgray: string;\n dark: string;\n secondary: string;\n tertiary: string;\n highlight: string;\n textHighlight: string;\n}\n\ninterface Colors {\n lightMode: ColorScheme;\n darkMode: ColorScheme;\n}\n\nexport type FontSpecification =\n | string\n | {\n name: string;\n weights?: number[];\n includeItalic?: boolean;\n };\n\nexport interface Theme {\n typography: {\n title?: FontSpecification;\n header: FontSpecification;\n body: FontSpecification;\n code: FontSpecification;\n };\n cdnCaching: boolean;\n colors: Colors;\n fontOrigin: \"googleFonts\" | \"local\";\n}\n\nexport type ThemeKey = keyof Colors;\n\nexport function getFontSpecificationName(spec: FontSpecification): string {\n if (typeof spec === \"string\") {\n return spec;\n }\n return spec.name;\n}\n","type EmojiMap = {\n codePointToName: Record;\n nameToBase64: Record;\n};\n\nlet emojimap: EmojiMap | undefined = undefined;\nexport async function loadEmoji(code: string) {\n if (!emojimap) {\n const path = await import(\"node:path\");\n const fs = await import(\"node:fs/promises\");\n const mapPath = path.join(\"quartz\", \"util\", \"emojimap.json\");\n const data = JSON.parse(await fs.readFile(mapPath, \"utf-8\"));\n emojimap = data;\n }\n\n const name = emojimap!.codePointToName[`${code.toUpperCase()}`];\n if (!name) throw new Error(`codepoint ${code} not found in map`);\n\n const b64 = emojimap!.nameToBase64[name];\n if (!b64) throw new Error(`name ${name} not found in map`);\n\n return b64;\n}\n"]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b2592ff..f88334f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1118,7 +1118,7 @@ }, "node_modules/@quartz-community/types": { "version": "0.2.1", - "resolved": "git+ssh://git@github.com/quartz-community/types.git#b1dc9ac610c253d0673d1c8c9a695cd4c5aac0ae", + "resolved": "git+ssh://git@github.com/quartz-community/types.git#d413569b02ff0cd9a7e8d74dee125d20a5e5ec72", "license": "MIT", "engines": { "node": ">=22", @@ -1139,7 +1139,7 @@ }, "node_modules/@quartz-community/utils": { "version": "0.1.0", - "resolved": "git+ssh://git@github.com/quartz-community/utils.git#8b6e32ba07b62500dce10f0c79ca43bb7d7e55bc", + "resolved": "git+ssh://git@github.com/quartz-community/utils.git#20b1ac1844ea477b4e32f206a515a5be8d01c56e", "license": "MIT", "dependencies": { "@quartz-community/types": "github:quartz-community/types" diff --git a/src/emitter.tsx b/src/emitter.tsx index 0bf00f3..3a8719a 100644 --- a/src/emitter.tsx +++ b/src/emitter.tsx @@ -11,9 +11,11 @@ import type { FilePath, FullSlug, GlobalConfiguration, + QuartzPluginData, } from "@quartz-community/types"; import { joinSegments } from "@quartz-community/types"; import { unescapeHTML } from "@quartz-community/utils"; +import { getDate } from "@quartz-community/utils/sort"; import type { JSX } from "preact"; import { type ThemeKey } from "@quartz-community/types"; import { getIconCode } from "@quartz-community/utils/emoji"; @@ -30,7 +32,7 @@ type Frontmatter = { tags?: string[]; } & Record; -type QuartzPluginData = { +type LocalQuartzPluginData = { slug?: FullSlug; frontmatter?: Frontmatter; description?: string; @@ -63,10 +65,6 @@ function isAbsoluteURL(url: string): boolean { return /^https?:\/\//.test(url); } -function getDate(cfg: GlobalConfiguration, data: Record): Date | undefined { - return (data.dates as Record | undefined)?.[cfg.defaultDateType ?? "modified"]; -} - function formatDate(d: Date, locale: string = "en-US"): string { return d.toLocaleDateString(locale, { year: "numeric", @@ -192,7 +190,7 @@ export type ImageOptions = { description: string; fonts: SatoriOptions["fonts"]; cfg: GlobalConfiguration; - fileData: QuartzPluginData; + fileData: LocalQuartzPluginData; }; export const defaultImage: SocialImageOptions["imageStructure"] = ({ @@ -208,7 +206,7 @@ export const defaultImage: SocialImageOptions["imageStructure"] = ({ const fontBreakPoint = 32; const useSmallerFont = title.length > fontBreakPoint; - const rawDate = getDate(cfg, fileData); + const rawDate = getDate(fileData as QuartzPluginData); const date = rawDate ? formatDate(rawDate, cfg.locale) : null; const { minutes } = readingTime(fileData.text ?? "");