{"version":3,"file":"static/js/394.383c64ad.chunk.js","mappings":";oGACAA,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQE,cAAW,EACnBF,EAAQE,SAAW,CACfC,QAAS,CACL,SACA,SACA,UACA,YACA,WACA,SACA,YAEJ,QAAS,CACL,UACA,SACA,WACA,WACA,aACA,UACA,WAEJ,QAAS,CACL,UACA,SACA,WACA,WACA,aACA,UACA,WAEJ,QAAS,CACL,UACA,SACA,WACA,WACA,aACA,UACA,WAEJ,QAAS,CACL,UACA,QACA,SACA,YACA,SACA,UACA,UAEJ,QAAS,CACL,UACA,QACA,SACA,YACA,SACA,UACA,UAEJ,QAAS,CACL,UACA,QACA,SACA,YACA,SACA,UACA,UAEJ,QAAS,CACL,UACA,QACA,SACA,YACA,SACA,UACA,UAEJ,QAAS,CACL,UACA,QACA,SACA,YACA,SACA,UACA,UAEJ,QAAS,CACL,WACA,QACA,QACA,WACA,QACA,WACA,UAEJ,QAAS,CACL,WACA,QACA,QACA,WACA,QACA,WACA,UAEJ,QAAS,CACL,WACA,QACA,QACA,WACA,QACA,WACA,UAEJ,QAAS,CACL,WACA,QACA,OACA,SACA,YACA,SACA,WAEJ,QAAS,CACL,SACA,QACA,SACA,OACA,QACA,QACA,SAEJ,QAAS,CACL,WACA,SACA,UACA,YACA,UACA,UACA,UAEJ,QAAS,CACL,WACA,SACA,UACA,YACA,UACA,UACA,UAEJ,QAAS,CACL,SACA,UACA,UACA,WACA,YACA,UACA,YAEJ,QAAS,CACL,UACA,gBACA,cACA,eACA,eACA,cACA,UAEJ,QAAS,CACL,aACA,YACA,YACA,SACA,cACA,WACA,YAEJ,QAAS,CACL,SACA,SACA,UACA,SACA,UACA,WACA,sCCrLRL,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQI,gBAAa,EACrBJ,EAAQI,WAAa,CACjBD,QAAS,CACL,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,SACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,SACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,SACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEJ,QAAS,CACL,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEJ,QAAS,CACL,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEJ,QAAS,CACL,QACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,aACA,UACA,YACA,aAEJ,QAAS,CACL,UACA,UACA,OACA,QACA,MACA,OACA,UACA,OACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,UACA,OACA,QACA,MACA,OACA,UACA,OACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,UACA,OACA,QACA,MACA,OACA,UACA,OACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,SACA,UACA,UACA,UACA,QACA,SACA,SACA,YACA,aACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,WACA,QACA,QACA,MACA,OACA,OACA,UACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,WACA,QACA,SACA,SACA,SACA,SACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,WACA,QACA,SACA,SACA,SACA,SACA,SACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,WACA,MACA,QACA,MACA,OACA,OACA,WACA,YACA,UACA,WACA,YAEJ,QAAS,CACL,UACA,YACA,QACA,QACA,OACA,QACA,QACA,SACA,WACA,UACA,WACA,YAEJ,QAAS,CACL,SACA,aACA,SACA,SACA,UACA,WACA,UACA,UACA,UACA,SACA,YACA,WAEJ,QAAS,CACL,QACA,SACA,QACA,SACA,KACA,MACA,QACA,QACA,UACA,UACA,QACA,uCC3QRL,OAA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aAAc,OACdiZ,QAAQ,EACRjyB,KAAM,EACNkyB,MAAO,SAACluB,EAAmBhE,GACvB,OAAQA,GACJ,IAAK,OACD,OAAO,EACX,IAAK,SACD,OAAO,EACX,IAAK,SACD,OAAO,EACX,IAAK,UACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,IAAK,uBACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,IAAK,cACD,OAAO,EACX,IAAK,cACD,OAAO,GACX,IAAK,eACD,OAAO,GACX,IAAK,WACD,OAAO,GACX,IAAK,UACD,OAAO,GACX,IAAK,YACD,OAAO,GACX,IAAK,qBACD,OAAO,GACX,IAAK,oBACD,OAAO,GACX,IAAK,kBACD,OAAO,GACX,IAAK,aACD,OAAO,GACX,IAAK,mBACD,OAAO,GACX,IAAK,WACD,OAAO,GACX,IAAK,WACD,OAAO,GACX,IAAK,WAEL,IAAK,SACD,OAAO,GACX,IAAK,WACD,OAAO,GACX,IAAK,iBACD,OAAO,GACX,IAAK,kBACD,OAAO,GACX,IAAK,oBACD,OAAO,GACX,IAAK,UACD,OAAO,GACX,IAAK,WACD,OAAO,GACX,IAAK,iBACD,OAAO,GACX,IAAK,QACD,OAAO,GACX,IAAK,uBACD,OAAO,GACX,IAAK,sBACD,OAAO,GACX,IAAK,wBACD,OAAO,GACX,IAAK,MACD,OAAO,GACX,IAAK,iBACD,OAAO,GACX,IAAK,YACD,OAAO,GACX,IAAK,YACD,OAAO,GACX,IAAK,UACD,OAAO,GACX,IAAK,QACD,OAAO,GACX,IAAK,UACD,OAAO,GACX,IAAK,sBACD,OAAO,GACX,IAAK,wBACD,OAAO,GACX,IAAK,QACD,OAAO,GACX,IAAK,SACD,OAAO,GACX,IAAK,OACD,OAAO,GACX,IAAK,UACD,OAAO,GACX,IAAK,sBACD,OAAO,GACX,IAAK,wBACD,OAAO,GACX,IAAK,iBACD,OAAO,GACX,IAAK,kBACD,OAAO,GACX,IAAK,oBACD,OAAO,GAEX,QACI,YC5KVw4B,GAAgB,SAACjC,GAAgD,OACnE77B,KAAM,UAAU67B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","sources":["webpack:///./node_modules/@im/localization/cultures/constant-values/day-names.js","webpack:///./node_modules/@im/localization/cultures/constant-values/month-names.js","webpack:///./node_modules/@im/localization/cultures/constant-values/short-currency-notations.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/all-cultures.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/at-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/au-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/be-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/br-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/ca-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/ch-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/cl-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/cn-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/co-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/de-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/dk-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/es-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/fi-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/fr-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/hk-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/hu-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/id-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/in-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/it-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/mx-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/my-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/nl-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/no-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/nz-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/pe-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/pt-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/se-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/sg-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/th-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/uk-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/us-culture.js","webpack:///./node_modules/@im/localization/cultures/im-cultures/usme-culture.js","webpack:///./node_modules/@im/localization/cultures/providers/constant-provider.js","webpack:///./node_modules/@im/localization/cultures/providers/im-culture-provider.js","webpack:///./node_modules/@im/localization/features/im-api-translator.js","webpack:///./node_modules/@im/localization/features/im-currency-formatter.js","webpack:///./node_modules/@im/localization/features/im-date-formatter.js","webpack:///./node_modules/@im/localization/features/im-file-translator.js","webpack:///./node_modules/@im/localization/features/im-translator.js","webpack:///./node_modules/@im/localization/index.js","webpack:///./node_modules/@im/localization/services/im-localization-service.js","webpack:///./node_modules/@im/react-localization/localization/localizationContext.js","webpack:///./node_modules/@mui/material/Fab/fabClasses.js","webpack:///./node_modules/@mui/material/Fab/Fab.js","webpack:///./node_modules/@im/react-localization/localization/editTranslate/showHideResouceKey.js","webpack:///./node_modules/@im/react-localization/localization/LocalizationProvider.js","webpack:///./node_modules/@im/react-localization/localization/Translate.js","webpack:///./node_modules/@im/react-localization/localization/editTranslate/EditTranslateModal.js","webpack:///./node_modules/@im/react-localization/localization/editTranslate/api-customize-hooks.js","webpack:///./node_modules/@im/react-localization/localization/editTranslate/EditTranslate.js","webpack:///./node_modules/@im/react-localization/localization/useLocalization.js","webpack:///./node_modules/@im/react-localization/localization/useTranslate.js","webpack:///./node_modules/@mui/material/Dialog/dialogClasses.js","webpack:///./node_modules/@mui/material/Dialog/Dialog.js","webpack:///./node_modules/@mui/material/Dialog/DialogContext.js","webpack:///./node_modules/@mui/material/Stack/Stack.js","webpack:///./node_modules/html2canvas/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/html2canvas/node_modules/src/Util.ts","webpack:///./node_modules/src/css/layout/bounds.ts","webpack:///./node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts","webpack:///./node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts","webpack:///./node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts","webpack:///./node_modules/html2canvas/node_modules/src/linebreak-trie.ts","webpack:///./node_modules/html2canvas/node_modules/src/LineBreak.ts","webpack:///./node_modules/src/css/syntax/tokenizer.ts","webpack:///./node_modules/src/css/syntax/parser.ts","webpack:///./node_modules/src/css/types/length.ts","webpack:///./node_modules/src/css/types/length-percentage.ts","webpack:///./node_modules/src/css/types/angle.ts","webpack:///./node_modules/src/css/types/color.ts","webpack:///./node_modules/src/css/property-descriptors/background-clip.ts","webpack:///./node_modules/src/css/property-descriptors/background-color.ts","webpack:///./node_modules/src/css/types/functions/gradient.ts","webpack:///./node_modules/src/css/types/functions/-prefix-linear-gradient.ts","webpack:///./node_modules/src/css/types/functions/radial-gradient.ts","webpack:///./node_modules/src/css/types/functions/-prefix-radial-gradient.ts","webpack:///./node_modules/src/css/types/image.ts","webpack:///./node_modules/src/css/property-descriptors/background-size.ts","webpack:///./node_modules/src/css/types/functions/linear-gradient.ts","webpack:///./node_modules/src/css/types/functions/-webkit-gradient.ts","webpack:///./node_modules/src/css/property-descriptors/background-image.ts","webpack:///./node_modules/src/css/property-descriptors/background-origin.ts","webpack:///./node_modules/src/css/property-descriptors/background-position.ts","webpack:///./node_modules/src/css/property-descriptors/background-repeat.ts","webpack:///./node_modules/src/css/property-descriptors/line-break.ts","webpack:///./node_modules/src/css/property-descriptors/border-color.ts","webpack:///./node_modules/src/css/property-descriptors/border-radius.ts","webpack:///./node_modules/src/css/property-descriptors/border-style.ts","webpack:///./node_modules/src/css/property-descriptors/border-width.ts","webpack:///./node_modules/src/css/property-descriptors/color.ts","webpack:///./node_modules/src/css/property-descriptors/direction.ts","webpack:///./node_modules/src/css/property-descriptors/display.ts","webpack:///./node_modules/src/css/property-descriptors/float.ts","webpack:///./node_modules/src/css/property-descriptors/letter-spacing.ts","webpack:///./node_modules/src/css/property-descriptors/word-break.ts","webpack:///./node_modules/src/css/property-descriptors/line-height.ts","webpack:///./node_modules/src/css/property-descriptors/list-style-image.ts","webpack:///./node_modules/src/css/property-descriptors/list-style-position.ts","webpack:///./node_modules/src/css/property-descriptors/list-style-type.ts","webpack:///./node_modules/src/css/property-descriptors/margin.ts","webpack:///./node_modules/src/css/property-descriptors/overflow.ts","webpack:///./node_modules/src/css/property-descriptors/overflow-wrap.ts","webpack:///./node_modules/src/css/property-descriptors/padding.ts","webpack:///./node_modules/src/css/property-descriptors/text-align.ts","webpack:///./node_modules/src/css/property-descriptors/position.ts","webpack:///./node_modules/src/css/property-descriptors/text-shadow.ts","webpack:///./node_modules/src/css/property-descriptors/text-transform.ts","webpack:///./node_modules/src/css/property-descriptors/transform.ts","webpack:///./node_modules/src/css/property-descriptors/transform-origin.ts","webpack:///./node_modules/src/css/property-descriptors/visibility.ts","webpack:///./node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts","webpack:///./node_modules/src/css/property-descriptors/z-index.ts","webpack:///./node_modules/src/css/types/time.ts","webpack:///./node_modules/src/css/property-descriptors/opacity.ts","webpack:///./node_modules/src/css/property-descriptors/text-decoration-color.ts","webpack:///./node_modules/src/css/property-descriptors/text-decoration-line.ts","webpack:///./node_modules/src/css/property-descriptors/font-family.ts","webpack:///./node_modules/src/css/property-descriptors/font-size.ts","webpack:///./node_modules/src/css/property-descriptors/font-weight.ts","webpack:///./node_modules/src/css/property-descriptors/font-variant.ts","webpack:///./node_modules/src/css/property-descriptors/font-style.ts","webpack:///./node_modules/src/core/bitwise.ts","webpack:///./node_modules/src/css/property-descriptors/content.ts","webpack:///./node_modules/src/css/property-descriptors/counter-increment.ts","webpack:///./node_modules/src/css/property-descriptors/counter-reset.ts","webpack:///./node_modules/src/css/property-descriptors/duration.ts","webpack:///./node_modules/src/css/property-descriptors/quotes.ts","webpack:///./node_modules/src/css/property-descriptors/box-shadow.ts","webpack:///./node_modules/src/css/property-descriptors/paint-order.ts","webpack:///./node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts","webpack:///./node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts","webpack:///./node_modules/src/css/index.ts","webpack:///./node_modules/src/core/debugger.ts","webpack:///./node_modules/src/dom/element-container.ts","webpack:///./node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts","webpack:///./node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts","webpack:///./node_modules/html2canvas/node_modules/src/GraphemeBreak.ts","webpack:///./node_modules/src/dom/document-cloner.ts","webpack:///./node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts","webpack:///./node_modules/src/core/features.ts","webpack:///./node_modules/src/css/layout/text.ts","webpack:///./node_modules/src/dom/text-container.ts","webpack:///./node_modules/src/dom/replaced-elements/image-element-container.ts","webpack:///./node_modules/src/dom/replaced-elements/canvas-element-container.ts","webpack:///./node_modules/src/dom/replaced-elements/svg-element-container.ts","webpack:///./node_modules/src/dom/elements/li-element-container.ts","webpack:///./node_modules/src/dom/elements/ol-element-container.ts","webpack:///./node_modules/src/dom/replaced-elements/input-element-container.ts","webpack:///./node_modules/src/dom/elements/select-element-container.ts","webpack:///./node_modules/src/dom/elements/textarea-element-container.ts","webpack:///./node_modules/src/dom/replaced-elements/iframe-element-container.ts","webpack:///./node_modules/src/dom/node-parser.ts","webpack:///./node_modules/src/css/types/functions/counter.ts","webpack:///./node_modules/src/render/bound-curves.ts","webpack:///./node_modules/src/core/cache-storage.ts","webpack:///./node_modules/src/render/vector.ts","webpack:///./node_modules/src/render/bezier-curve.ts","webpack:///./node_modules/src/render/effects.ts","webpack:///./node_modules/src/render/path.ts","webpack:///./node_modules/src/render/stacking-context.ts","webpack:///./node_modules/src/render/border.ts","webpack:///./node_modules/src/render/box-sizing.ts","webpack:///./node_modules/src/render/background.ts","webpack:///./node_modules/src/render/font-metrics.ts","webpack:///./node_modules/src/core/util.ts","webpack:///./node_modules/src/render/renderer.ts","webpack:///./node_modules/src/render/canvas/canvas-renderer.ts","webpack:///./node_modules/src/render/canvas/foreignobject-renderer.ts","webpack:///./node_modules/src/core/logger.ts","webpack:///./node_modules/src/core/context.ts","webpack:///./node_modules/src/index.ts","webpack:///./node_modules/react/jsx-runtime.js","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DayNames = void 0;\nexports.DayNames = {\n    default: [\n        \"Sunday\",\n        \"Monday\",\n        \"Tuesday\",\n        \"Wednesday\",\n        \"Thursday\",\n        \"Friday\",\n        \"Saturday\",\n    ],\n    \"de-at\": [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\",\n    ],\n    \"de-ch\": [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\",\n    ],\n    \"de-de\": [\n        \"Sonntag\",\n        \"Montag\",\n        \"Dienstag\",\n        \"Mittwoch\",\n        \"Donnerstag\",\n        \"Freitag\",\n        \"Samstag\",\n    ],\n    \"es-mx\": [\n        \"domingo\",\n        \"lunes\",\n        \"martes\",\n        \"miércoles\",\n        \"jueves\",\n        \"viernes\",\n        \"sábado\",\n    ],\n    \"es-co\": [\n        \"domingo\",\n        \"lunes\",\n        \"martes\",\n        \"miércoles\",\n        \"jueves\",\n        \"viernes\",\n        \"sábado\",\n    ],\n    \"es-cl\": [\n        \"Domingo\",\n        \"Lunes\",\n        \"Martes\",\n        \"Miércoles\",\n        \"Jueves\",\n        \"Viernes\",\n        \"Sábado\",\n    ],\n    \"es-es\": [\n        \"domingo\",\n        \"lunes\",\n        \"martes\",\n        \"miércoles\",\n        \"jueves\",\n        \"viernes\",\n        \"sábado\",\n    ],\n    \"es-pe\": [\n        \"domingo\",\n        \"lunes\",\n        \"martes\",\n        \"miércoles\",\n        \"jueves\",\n        \"viernes\",\n        \"sábado\",\n    ],\n    \"fr-ca\": [\n        \"dimanche\",\n        \"lundi\",\n        \"mardi\",\n        \"mercredi\",\n        \"jeudi\",\n        \"vendredi\",\n        \"samedi\",\n    ],\n    \"fr-ch\": [\n        \"dimanche\",\n        \"lundi\",\n        \"mardi\",\n        \"mercredi\",\n        \"jeudi\",\n        \"vendredi\",\n        \"samedi\",\n    ],\n    \"fr-fr\": [\n        \"dimanche\",\n        \"lundi\",\n        \"mardi\",\n        \"mercredi\",\n        \"jeudi\",\n        \"vendredi\",\n        \"samedi\",\n    ],\n    \"hu-hu\": [\n        \"vasárnap\",\n        \"hétfő\",\n        \"kedd\",\n        \"szerda\",\n        \"csütörtök\",\n        \"péntek\",\n        \"szombat\",\n    ],\n    \"id-id\": [\n        \"Minggu\",\n        \"Senin\",\n        \"Selasa\",\n        \"Rabu\",\n        \"Kamis\",\n        \"Jumat\",\n        \"Sabtu\",\n    ],\n    \"it-ch\": [\n        \"domenica\",\n        \"lunedì\",\n        \"martedì\",\n        \"mercoledì\",\n        \"giovedì\",\n        \"venerdì\",\n        \"sabato\",\n    ],\n    \"it-it\": [\n        \"domenica\",\n        \"lunedì\",\n        \"martedì\",\n        \"mercoledì\",\n        \"giovedì\",\n        \"venerdì\",\n        \"sabato\",\n    ],\n    \"nl-nl\": [\n        \"zondag\",\n        \"maandag\",\n        \"dinsdag\",\n        \"woensdag\",\n        \"donderdag\",\n        \"vrijdag\",\n        \"zaterdag\",\n    ],\n    \"pt-pt\": [\n        \"domingo\",\n        \"segunda-feira\",\n        \"terça-feira\",\n        \"quarta-feira\",\n        \"quinta-feira\",\n        \"sexta-feira\",\n        \"sábado\",\n    ],\n    \"th-th\": [\n        \"วันอาทิตย์\",\n        \"วันจันทร์\",\n        \"วันอังคาร\",\n        \"วันพุธ\",\n        \"วันพฤหัสบดี\",\n        \"วันศุกร์\",\n        \"วันเสาร์\"\n    ],\n    \"hi-in\": [\n        \"रविवार\",\n        \"सोमवार\",\n        \"मंगलवार\",\n        \"बुधवार\",\n        \"गुरुवार\",\n        \"शुक्रवार\",\n        \"शनिवार\"\n    ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MonthNames = void 0;\nexports.MonthNames = {\n    default: [\n        \"January\",\n        \"February\",\n        \"March\",\n        \"April\",\n        \"May\",\n        \"June\",\n        \"July\",\n        \"August\",\n        \"September\",\n        \"October\",\n        \"November\",\n        \"December\",\n    ],\n    \"de-at\": [\n        \"Januar\",\n        \"Februar\",\n        \"März\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\",\n    ],\n    \"de-ch\": [\n        \"Januar\",\n        \"Februar\",\n        \"März\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\",\n    ],\n    \"de-de\": [\n        \"Januar\",\n        \"Februar\",\n        \"März\",\n        \"April\",\n        \"Mai\",\n        \"Juni\",\n        \"Juli\",\n        \"August\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Dezember\",\n    ],\n    \"es-mx\": [\n        \"enero\",\n        \"febrero\",\n        \"marzo\",\n        \"abril\",\n        \"mayo\",\n        \"junio\",\n        \"julio\",\n        \"agosto\",\n        \"septiembre\",\n        \"octubre\",\n        \"noviembre\",\n        \"diciembre\",\n    ],\n    \"es-co\": [\n        \"enero\",\n        \"febrero\",\n        \"marzo\",\n        \"abril\",\n        \"mayo\",\n        \"junio\",\n        \"julio\",\n        \"agosto\",\n        \"septiembre\",\n        \"octubre\",\n        \"noviembre\",\n        \"diciembre\",\n    ],\n    \"es-es\": [\n        \"enero\",\n        \"febrero\",\n        \"marzo\",\n        \"abril\",\n        \"mayo\",\n        \"junio\",\n        \"julio\",\n        \"agosto\",\n        \"septiembre\",\n        \"octubre\",\n        \"noviembre\",\n        \"diciembre\",\n    ],\n    \"es-pe\": [\n        \"enero\",\n        \"febrero\",\n        \"marzo\",\n        \"abril\",\n        \"mayo\",\n        \"junio\",\n        \"julio\",\n        \"agosto\",\n        \"septiembre\",\n        \"octubre\",\n        \"noviembre\",\n        \"diciembre\",\n    ],\n    \"fr-ca\": [\n        \"janvier\",\n        \"février\",\n        \"mars\",\n        \"avril\",\n        \"mai\",\n        \"juin\",\n        \"juillet\",\n        \"août\",\n        \"septembre\",\n        \"octobre\",\n        \"novembre\",\n        \"décembre\",\n    ],\n    \"fr-ch\": [\n        \"janvier\",\n        \"février\",\n        \"mars\",\n        \"avril\",\n        \"mai\",\n        \"juin\",\n        \"juillet\",\n        \"août\",\n        \"septembre\",\n        \"octobre\",\n        \"novembre\",\n        \"décembre\",\n    ],\n    \"fr-fr\": [\n        \"janvier\",\n        \"février\",\n        \"mars\",\n        \"avril\",\n        \"mai\",\n        \"juin\",\n        \"juillet\",\n        \"août\",\n        \"septembre\",\n        \"octobre\",\n        \"novembre\",\n        \"décembre\",\n    ],\n    \"hu-hu\": [\n        \"január\",\n        \"február\",\n        \"március\",\n        \"április\",\n        \"május\",\n        \"június\",\n        \"július\",\n        \"augusztus\",\n        \"szeptember\",\n        \"október\",\n        \"november\",\n        \"december\",\n    ],\n    \"id-id\": [\n        \"Januari\",\n        \"Februari\",\n        \"Maret\",\n        \"April\",\n        \"Mei\",\n        \"Juni\",\n        \"Juli\",\n        \"Agustus\",\n        \"September\",\n        \"Oktober\",\n        \"November\",\n        \"Desember\",\n    ],\n    \"it-it\": [\n        \"gennaio\",\n        \"febbraio\",\n        \"marzo\",\n        \"aprile\",\n        \"maggio\",\n        \"giugno\",\n        \"luglio\",\n        \"agosto\",\n        \"settembre\",\n        \"ottobre\",\n        \"novembre\",\n        \"dicembre\",\n    ],\n    \"it-ch\": [\n        \"gennaio\",\n        \"febbraio\",\n        \"marzo\",\n        \"aprile\",\n        \"maggio\",\n        \"giugno\",\n        \"luglio\",\n        \"agosto\",\n        \"settembre\",\n        \"ottobre\",\n        \"novembre\",\n        \"dicembre\",\n    ],\n    \"nl-nl\": [\n        \"januari\",\n        \"februari\",\n        \"mrt\",\n        \"april\",\n        \"mei\",\n        \"juni\",\n        \"juli\",\n        \"augustus\",\n        \"september\",\n        \"oktober\",\n        \"november\",\n        \"december\",\n    ],\n    \"pt-pt\": [\n        \"janeiro\",\n        \"fevereiro\",\n        \"março\",\n        \"abril\",\n        \"maio\",\n        \"junho\",\n        \"julho\",\n        \"agosto\",\n        \"setembro\",\n        \"outubro\",\n        \"novembro\",\n        \"dezembro\",\n    ],\n    \"th-th\": [\n        \"มกราคม\",\n        \"กุมภาพันธ์\",\n        \"มีนาคม\",\n        \"เมษายน\",\n        \"พฤษภาคม\",\n        \"มิถุนายน\",\n        \"กรกฎาคม\",\n        \"สิงหาคม\",\n        \"กันยายน\",\n        \"ตุลาคม\",\n        \"พฤศจิกายน\",\n        \"ธันวาคม\"\n    ],\n    \"hi-in\": [\n        \"जनवरी\",\n        \"फ़रवरी\",\n        \"मार्च\",\n        \"अप्रैल\",\n        \"मई\",\n        \"जून\",\n        \"जुलाई\",\n        \"अगस्त\",\n        \"सितम्बर\",\n        \"अक्टूबर\",\n        \"नवंबर\",\n        \"दिसंबर\"\n    ]\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ThousandsNotation = exports.MillionsNotation = exports.BillionsNotation = void 0;\nexports.BillionsNotation = {\n    default: \"B\",\n    \"en-US\": \"B\",\n};\nexports.MillionsNotation = {\n    default: \"M\",\n    \"en-US\": \"M\",\n};\nexports.ThousandsNotation = {\n    default: \"K\",\n    \"en-US\": \"K\",\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AllCultures = void 0;\nconst at_culture_1 = require(\"./at-culture\");\nconst au_culture_1 = require(\"./au-culture\");\nconst be_culture_1 = require(\"./be-culture\");\nconst br_culture_1 = require(\"./br-culture\");\nconst ca_culture_1 = require(\"./ca-culture\");\nconst ch_culture_1 = require(\"./ch-culture\");\nconst cl_culture_1 = require(\"./cl-culture\");\nconst cn_culture_1 = require(\"./cn-culture\");\nconst co_culture_1 = require(\"./co-culture\");\nconst de_culture_1 = require(\"./de-culture\");\nconst dk_culture_1 = require(\"./dk-culture\");\nconst es_culture_1 = require(\"./es-culture\");\nconst fi_culture_1 = require(\"./fi-culture\");\nconst fr_culture_1 = require(\"./fr-culture\");\nconst uk_culture_1 = require(\"./uk-culture\");\nconst hk_culture_1 = require(\"./hk-culture\");\nconst hu_culture_1 = require(\"./hu-culture\");\nconst id_culture_1 = require(\"./id-culture\");\nconst in_culture_1 = require(\"./in-culture\");\nconst it_culture_1 = require(\"./it-culture\");\nconst mx_culture_1 = require(\"./mx-culture\");\nconst my_culture_1 = require(\"./my-culture\");\nconst nl_culture_1 = require(\"./nl-culture\");\nconst no_culture_1 = require(\"./no-culture\");\nconst nz_culture_1 = require(\"./nz-culture\");\nconst pe_culture_1 = require(\"./pe-culture\");\nconst pt_culture_1 = require(\"./pt-culture\");\nconst se_culture_1 = require(\"./se-culture\");\nconst sg_culture_1 = require(\"./sg-culture\");\nconst us_culture_1 = require(\"./us-culture\");\nconst usme_culture_1 = require(\"./usme-culture\");\nconst th_culture_1 = require(\"./th-culture\");\nexports.AllCultures = {\n    \"de-at\": {\n        \"EUR\": new at_culture_1.DeAtEur(),\n        \"USD\": new at_culture_1.DeAtUsd()\n    },\n    \"en-at\": {\n        \"EUR\": new at_culture_1.EnAtEur(),\n        \"USD\": new at_culture_1.EnAtUsd()\n    },\n    \"en-au\": {\n        \"AUD\": new au_culture_1.EnAuAud(),\n        \"USD\": new au_culture_1.EnAuUsd()\n    },\n    \"en-be\": {\n        \"EUR\": new be_culture_1.EnBeEur(),\n        \"USD\": new be_culture_1.EnBeUsd()\n    },\n    \"nl-be\": {\n        \"EUR\": new be_culture_1.NlBeEur(),\n        \"USD\": new be_culture_1.NlBeUsd()\n    },\n    \"fr-be\": {\n        \"EUR\": new be_culture_1.FrBeEur(),\n        \"USD\": new be_culture_1.FrBeUsd()\n    },\n    \"en-br\": {\n        \"BRR\": new br_culture_1.EnBrBrr(),\n        \"USD\": new br_culture_1.EnBrUsd()\n    },\n    \"pt-br\": {\n        \"BRR\": new br_culture_1.PtBrBrr(),\n        \"USD\": new br_culture_1.PtBrUsd()\n    },\n    \"en-ca\": {\n        \"CAD\": new ca_culture_1.EnCaCad(),\n        \"USD\": new ca_culture_1.EnCaUsd()\n    },\n    \"fr-ca\": {\n        \"CAD\": new ca_culture_1.FrCaCad(),\n        \"USD\": new ca_culture_1.FrCaUsd()\n    },\n    \"de-ch\": {\n        \"CHF\": new ch_culture_1.DeChChf(),\n        \"EUR\": new ch_culture_1.DeChEur(),\n        \"USD\": new ch_culture_1.DeChUsd(),\n        \"GBP\": new ch_culture_1.DeChGbp()\n    },\n    \"fr-ch\": {\n        \"CHF\": new ch_culture_1.FrChChf(),\n        \"EUR\": new ch_culture_1.FrChEur(),\n        \"USD\": new ch_culture_1.FrChUsd(),\n        \"GBP\": new ch_culture_1.FrChGbp()\n    },\n    \"it-ch\": {\n        \"CHF\": new ch_culture_1.ItChChf(),\n        \"EUR\": new ch_culture_1.ItChEur(),\n        \"USD\": new ch_culture_1.ItChUsd(),\n        \"GBP\": new ch_culture_1.ItChGbp()\n    },\n    \"en-ch\": {\n        \"CHF\": new ch_culture_1.EnChChf(),\n        \"EUR\": new ch_culture_1.EnChEur(),\n        \"USD\": new ch_culture_1.EnChUsd(),\n        \"GBP\": new ch_culture_1.EnChGbp()\n    },\n    \"es-cl\": {\n        \"USD\": new cl_culture_1.EsClUsd(),\n        \"CLP\": new cl_culture_1.EsClClp()\n    },\n    \"en-cl\": {\n        \"USD\": new cl_culture_1.EnClUsd()\n    },\n    \"zh-cn\": {\n        \"CNY\": new cn_culture_1.ZhCnCny()\n    },\n    \"en-cn\": {\n        \"CNY\": new cn_culture_1.EnCnCny()\n    },\n    \"es-co\": {\n        \"COP\": new co_culture_1.EsCoCop(),\n        \"USD\": new co_culture_1.EsCoUsd()\n    },\n    \"de-de\": {\n        \"EUR\": new de_culture_1.DeDeEur(),\n        \"DKK\": new de_culture_1.DeDeDkk(),\n        \"CZK\": new de_culture_1.DeDeCzk(),\n        \"NOK\": new de_culture_1.DeDeNok(),\n        \"PLN\": new de_culture_1.DeDePln(),\n        \"USD\": new de_culture_1.DeDeUsd()\n    },\n    \"en-de\": {\n        \"EUR\": new de_culture_1.EnDeEur(),\n        \"DKK\": new de_culture_1.EnDeDkk(),\n        \"CZK\": new de_culture_1.EnDeCzk(),\n        \"NOK\": new de_culture_1.EnDeNok(),\n        \"PLN\": new de_culture_1.EnDePln(),\n        \"USD\": new de_culture_1.EnDeUsd()\n    },\n    \"en-dk\": {\n        \"DKK\": new dk_culture_1.EnDkDkk(),\n        \"USD\": new dk_culture_1.EnDkUsd(),\n        \"EUR\": new dk_culture_1.EnDkEur(),\n        \"SEK\": new dk_culture_1.EnDkSek(),\n        \"NOK\": new dk_culture_1.EnDkNok()\n    },\n    \"es-es\": {\n        \"EUR\": new es_culture_1.EsEsEur(),\n        \"USD\": new es_culture_1.EsEsUsd()\n    },\n    \"en-es\": {\n        \"EUR\": new es_culture_1.EnEsEur(),\n        \"USD\": new es_culture_1.EnEsUsd()\n    },\n    \"pt-es\": {\n        \"EUR\": new es_culture_1.PtEsEur(),\n        \"USD\": new es_culture_1.PtEsUsd()\n    },\n    \"en-fi\": {\n        \"EUR\": new fi_culture_1.EnFiEur(),\n        \"USD\": new fi_culture_1.EnFiUsd(),\n        \"SEK\": new fi_culture_1.EnFiSek(),\n        \"DKK\": new fi_culture_1.EnFiDkk(),\n        \"NOK\": new fi_culture_1.EnFiNok()\n    },\n    \"fr-fr\": {\n        \"EUR\": new fr_culture_1.FrFrEur(),\n        \"USD\": new fr_culture_1.FrFrUsd()\n    },\n    \"en-fr\": {\n        \"EUR\": new fr_culture_1.EnFrEur(),\n        \"USD\": new fr_culture_1.EnFrUsd()\n    },\n    \"en-gb\": {\n        \"GBP\": new uk_culture_1.EnGbGbp(),\n        \"EUR\": new uk_culture_1.EnGbEur(),\n        \"USD\": new uk_culture_1.EnGbUsd()\n    },\n    \"en-hk\": {\n        \"HKD\": new hk_culture_1.EnHkHkd(),\n        \"USD\": new hk_culture_1.EnHkUsd()\n    },\n    \"hu-hu\": {\n        \"HUF\": new hu_culture_1.HuHuHuf(),\n        \"EUR\": new hu_culture_1.HuHuEur(),\n        \"USD\": new hu_culture_1.HuHuUsd()\n    },\n    \"en-hu\": {\n        \"HUF\": new hu_culture_1.EnHuHuf(),\n        \"EUR\": new hu_culture_1.EnHuEur(),\n        \"USD\": new hu_culture_1.EnHuUsd()\n    },\n    \"id-id\": {\n        \"IDR\": new id_culture_1.IdIdIdr()\n    },\n    \"en-id\": {\n        \"IDR\": new id_culture_1.EnIdIdr()\n    },\n    \"en-in\": {\n        \"INR\": new in_culture_1.EnInInr(),\n        \"USD\": new in_culture_1.EnInUsd()\n    },\n    \"hi-in\": {\n        \"INR\": new in_culture_1.HiInInr(),\n        \"USD\": new in_culture_1.HiInUsd()\n    },\n    \"it-it\": {\n        \"EUR\": new it_culture_1.ItItEur(),\n        \"USD\": new it_culture_1.ItItUsd()\n    },\n    \"en-it\": {\n        \"EUR\": new it_culture_1.EnItEur(),\n        \"USD\": new it_culture_1.EnItUsd()\n    },\n    \"es-mx\": {\n        \"MXP\": new mx_culture_1.EsMxMxp(),\n        \"MXN\": new mx_culture_1.EsMxMxn(),\n        \"USD\": new mx_culture_1.EsMxUsd()\n    },\n    \"en-mx\": {\n        \"MXP\": new mx_culture_1.EnMxMxp(),\n        \"MXN\": new mx_culture_1.EnMxMxn(),\n        \"USD\": new mx_culture_1.EnMxUsd()\n    },\n    \"en-my\": {\n        \"MYR\": new my_culture_1.EnMyMyr(),\n        \"USD\": new my_culture_1.EnMyUsd()\n    },\n    \"nl-nl\": {\n        \"EUR\": new nl_culture_1.NlNlEur(),\n        \"USD\": new nl_culture_1.NlNlUsd()\n    },\n    \"en-nl\": {\n        \"EUR\": new nl_culture_1.EnNlEur(),\n        \"USD\": new nl_culture_1.EnNlUsd()\n    },\n    \"en-no\": {\n        \"EUR\": new no_culture_1.EnNoEur(),\n        \"USD\": new no_culture_1.EnNoUsd(),\n        \"SEK\": new no_culture_1.EnNoSek(),\n        \"DKK\": new no_culture_1.EnNoDkk(),\n        \"NOK\": new no_culture_1.EnNoNok()\n    },\n    \"en-nz\": {\n        \"NZD\": new nz_culture_1.EnNzNzd(),\n        \"USD\": new nz_culture_1.EnNzUsd(),\n        \"AUD\": new nz_culture_1.EnNzAud()\n    },\n    \"es-pe\": {\n        \"USD\": new pe_culture_1.EsPeUsd(),\n        \"PEN\": new pe_culture_1.EsPePen()\n    },\n    \"en-pe\": {\n        \"USD\": new pe_culture_1.EnPeUsd(),\n        \"PEN\": new pe_culture_1.EnPePen()\n    },\n    \"pt-pt\": {\n        \"EUR\": new pt_culture_1.PtPtEur(),\n        \"USD\": new pt_culture_1.PtPtUsd()\n    },\n    \"en-pt\": {\n        \"EUR\": new pt_culture_1.EnPtEur(),\n        \"USD\": new pt_culture_1.EnPtUsd()\n    },\n    \"en-se\": {\n        \"EUR\": new se_culture_1.EnSeEur(),\n        \"SEK\": new se_culture_1.EnSeSek(),\n        \"DKK\": new se_culture_1.EnSeDkk(),\n        \"NOK\": new se_culture_1.EnSeNok(),\n        \"USD\": new se_culture_1.EnSeUsd()\n    },\n    \"sv-se\": {\n        \"EUR\": new se_culture_1.SvSeEur(),\n        \"SEK\": new se_culture_1.SvSeSek(),\n        \"DKK\": new se_culture_1.SvSeDkk(),\n        \"NOK\": new se_culture_1.SvSeNok(),\n        \"USD\": new se_culture_1.SvSeUsd()\n    },\n    \"se-se\": {\n        \"SEK\": new se_culture_1.SeSeSek(),\n        \"DKK\": new se_culture_1.SeSeDkk(),\n        \"NOK\": new se_culture_1.SeSeNok()\n    },\n    \"en-sg\": {\n        \"SGD\": new sg_culture_1.EnSgSgd(),\n        \"USD\": new sg_culture_1.EnSgUsd(),\n        \"EUR\": new sg_culture_1.EnSgEur(),\n        \"JPY\": new sg_culture_1.EnSgJpy()\n    },\n    \"en-us\": {\n        \"USD\": new us_culture_1.EnUsUsd()\n    },\n    \"en-usme\": {\n        \"USD\": new usme_culture_1.EnUsmeUsd()\n    },\n    \"es-usme\": {\n        \"USD\": new usme_culture_1.EsUsmeUsd()\n    },\n    \"en-th\": {\n        \"THB\": new th_culture_1.EnThThb()\n    },\n    \"th-th\": {\n        \"THB\": new th_culture_1.ThThThb()\n    }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnAtUsd = exports.EnAtEur = exports.DeAtUsd = exports.DeAtEur = void 0;\nclass DeAtEur {\n    constructor() {\n        this.locale = \"de-at\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"EUR\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.DeAtEur = DeAtEur;\nclass DeAtUsd {\n    constructor() {\n        this.locale = \"de-at\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeAtUsd = DeAtUsd;\nclass EnAtEur {\n    constructor() {\n        this.locale = \"en-at\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"EUR\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnAtEur = EnAtEur;\nclass EnAtUsd {\n    constructor() {\n        this.locale = \"en-at\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnAtUsd = EnAtUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnAuUsd = exports.EnAuAud = void 0;\nclass EnAuAud {\n    constructor() {\n        this.locale = \"en-au\";\n        this.dateFormat = {\n            short: \"d/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"AUD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnAuAud = EnAuAud;\nclass EnAuUsd {\n    constructor() {\n        this.locale = \"en-au\";\n        this.dateFormat = {\n            short: \"d/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnAuUsd = EnAuUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FrBeUsd = exports.FrBeEur = exports.NlBeUsd = exports.NlBeEur = exports.EnBeUsd = exports.EnBeEur = void 0;\nclass EnBeEur {\n    constructor() {\n        this.locale = \"en-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnBeEur = EnBeEur;\nclass EnBeUsd {\n    constructor() {\n        this.locale = \"en-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnBeUsd = EnBeUsd;\nclass NlBeEur {\n    constructor() {\n        this.locale = \"nl-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.NlBeEur = NlBeEur;\nclass NlBeUsd {\n    constructor() {\n        this.locale = \"nl-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.NlBeUsd = NlBeUsd;\nclass FrBeEur {\n    constructor() {\n        this.locale = \"fr-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.FrBeEur = FrBeEur;\nclass FrBeUsd {\n    constructor() {\n        this.locale = \"fr-be\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.FrBeUsd = FrBeUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PtBrUsd = exports.PtBrBrr = exports.EnBrUsd = exports.EnBrBrr = void 0;\nclass EnBrBrr {\n    constructor() {\n        this.locale = \"en-br\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"BRR\",\n            symbol: \"R$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnBrBrr = EnBrBrr;\nclass EnBrUsd {\n    constructor() {\n        this.locale = \"en-br\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\",\n        };\n    }\n}\nexports.EnBrUsd = EnBrUsd;\nclass PtBrBrr {\n    constructor() {\n        this.locale = \"pt-br\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, d' de 'MMMM' de 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"BRR\",\n            symbol: \"R$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.PtBrBrr = PtBrBrr;\nclass PtBrUsd {\n    constructor() {\n        this.locale = \"pt-br\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, d' de 'MMMM' de 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\",\n        };\n    }\n}\nexports.PtBrUsd = PtBrUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FrCaUsd = exports.FrCaCad = exports.EnCaUsd = exports.EnCaCad = void 0;\nclass EnCaCad {\n    constructor() {\n        this.locale = \"en-ca\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"MMMM d, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CAD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnCaCad = EnCaCad;\nclass EnCaUsd {\n    constructor() {\n        this.locale = \"en-ca\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"MMMM d, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnCaUsd = EnCaUsd;\nclass FrCaCad {\n    constructor() {\n        this.locale = \"fr-ca\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CAD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"Cn\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.FrCaCad = FrCaCad;\nclass FrCaUsd {\n    constructor() {\n        this.locale = \"fr-ca\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"Cn\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.FrCaUsd = FrCaUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnChGbp = exports.EnChUsd = exports.EnChEur = exports.EnChChf = exports.ItChGbp = exports.ItChUsd = exports.ItChEur = exports.ItChChf = exports.FrChGbp = exports.FrChUsd = exports.FrChEur = exports.FrChChf = exports.DeChGbp = exports.DeChUsd = exports.DeChEur = exports.DeChChf = void 0;\nclass DeChChf {\n    constructor() {\n        this.locale = \"de-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CHF\",\n            symbol: \"CHF\",\n            decimalSeparator: \".\",\n            groupSeparator: \"'\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeChChf = DeChChf;\nclass DeChEur {\n    constructor() {\n        this.locale = \"de-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeChEur = DeChEur;\nclass DeChUsd {\n    constructor() {\n        this.locale = \"de-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeChUsd = DeChUsd;\nclass DeChGbp {\n    constructor() {\n        this.locale = \"de-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"GBP\",\n            symbol: \"£\",\n            decimalSeparator: \".\",\n            groupSeparator: \"’\",\n            positivePattern: \"C n\",\n            negativePattern: \"C-n\"\n        };\n    }\n}\nexports.DeChGbp = DeChGbp;\nclass FrChChf {\n    constructor() {\n        this.locale = \"fr-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CHF\",\n            symbol: \"CHF\",\n            decimalSeparator: \".\",\n            groupSeparator: \"'\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.FrChChf = FrChChf;\nclass FrChEur {\n    constructor() {\n        this.locale = \"fr-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.FrChEur = FrChEur;\nclass FrChUsd {\n    constructor() {\n        this.locale = \"fr-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.FrChUsd = FrChUsd;\nclass FrChGbp {\n    constructor() {\n        this.locale = \"fr-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"GBP\",\n            symbol: \"£\",\n            decimalSeparator: \".\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.FrChGbp = FrChGbp;\nclass ItChChf {\n    constructor() {\n        this.locale = \"it-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CHF\",\n            symbol: \"CHF\",\n            decimalSeparator: \".\",\n            groupSeparator: \"'\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.ItChChf = ItChChf;\nclass ItChEur {\n    constructor() {\n        this.locale = \"it-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.ItChEur = ItChEur;\nclass ItChUsd {\n    constructor() {\n        this.locale = \"it-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.ItChUsd = ItChUsd;\nclass ItChGbp {\n    constructor() {\n        this.locale = \"it-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"GBP\",\n            symbol: \"£\",\n            decimalSeparator: \".\",\n            groupSeparator: \"’\",\n            positivePattern: \"C n\",\n            negativePattern: \"C-n\"\n        };\n    }\n}\nexports.ItChGbp = ItChGbp;\nclass EnChChf {\n    constructor() {\n        this.locale = \"en-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CHF\",\n            symbol: \"CHF\",\n            decimalSeparator: \".\",\n            groupSeparator: \"'\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnChChf = EnChChf;\nclass EnChEur {\n    constructor() {\n        this.locale = \"en-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnChEur = EnChEur;\nclass EnChUsd {\n    constructor() {\n        this.locale = \"en-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd. MMMM yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnChUsd = EnChUsd;\nclass EnChGbp {\n    constructor() {\n        this.locale = \"en-ch\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d. MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"GBP\",\n            symbol: \"£\",\n            decimalSeparator: \".\",\n            groupSeparator: \"’\",\n            positivePattern: \"C n\",\n            negativePattern: \"C-n\"\n        };\n    }\n}\nexports.EnChGbp = EnChGbp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnClUsd = exports.EsClClp = exports.EsClUsd = void 0;\nclass EsClUsd {\n    constructor() {\n        this.locale = \"es-cl\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d 'de' MMMM 'de' yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EsClUsd = EsClUsd;\nclass EsClClp {\n    constructor() {\n        this.locale = \"es-cl\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, d 'de' MMMM 'del' yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CLP\",\n            symbol: \"CLP$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EsClClp = EsClClp;\nclass EnClUsd {\n    constructor() {\n        this.locale = \"en-cl\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnClUsd = EnClUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnCnCny = exports.ZhCnCny = void 0;\nclass ZhCnCny {\n    constructor() {\n        this.locale = \"zh-cn\";\n        this.dateFormat = {\n            short: \"yyyy/M/d\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"yyyy'年'M'月'd'日'\",\n        };\n        this.currencyFormat = {\n            code: \"CNY\",\n            symbol: \"元\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"n C\",\n            negativePattern: \"C-n\"\n        };\n    }\n}\nexports.ZhCnCny = ZhCnCny;\nclass EnCnCny {\n    constructor() {\n        this.locale = \"en-cn\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CNY\",\n            symbol: \"元\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"n C\",\n            negativePattern: \"-Cn\"\n        };\n    }\n}\nexports.EnCnCny = EnCnCny;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EsCoUsd = exports.EsCoCop = void 0;\nclass EsCoCop {\n    constructor() {\n        this.locale = \"es-co\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"COP\",\n            symbol: \"$\",\n            decimalSeparator: \"\",\n            groupSeparator: \".\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\",\n        };\n    }\n}\nexports.EsCoCop = EsCoCop;\nclass EsCoUsd {\n    constructor() {\n        this.locale = \"es-co\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \"\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EsCoUsd = EsCoUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnDeUsd = exports.EnDePln = exports.EnDeNok = exports.EnDeCzk = exports.EnDeDkk = exports.EnDeEur = exports.DeDeUsd = exports.DeDePln = exports.DeDeNok = exports.DeDeCzk = exports.DeDeDkk = exports.DeDeEur = void 0;\nclass DeDeEur {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.DeDeEur = DeDeEur;\nclass DeDeDkk {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeDeDkk = DeDeDkk;\nclass DeDeCzk {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CZK\",\n            symbol: \"CZK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeDeCzk = DeDeCzk;\nclass DeDeNok {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeDeNok = DeDeNok;\nclass DeDePln {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"PLN\",\n            symbol: \"PLN\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeDePln = DeDePln;\nclass DeDeUsd {\n    constructor() {\n        this.locale = \"de-de\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"dd.MMMM yyyy\",\n            long: \"dddd dd.MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.DeDeUsd = DeDeUsd;\nclass EnDeEur {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnDeEur = EnDeEur;\nclass EnDeDkk {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnDeDkk = EnDeDkk;\nclass EnDeCzk {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"CZK\",\n            symbol: \"CZK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnDeCzk = EnDeCzk;\nclass EnDeNok {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnDeNok = EnDeNok;\nclass EnDePln {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"PLN\",\n            symbol: \"PLN\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnDePln = EnDePln;\nclass EnDeUsd {\n    constructor() {\n        this.locale = \"en-de\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnDeUsd = EnDeUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnDkNok = exports.EnDkSek = exports.EnDkEur = exports.EnDkUsd = exports.EnDkDkk = void 0;\nclass EnDkDkk {\n    constructor() {\n        this.locale = \"en-dk\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnDkDkk = EnDkDkk;\nclass EnDkUsd {\n    constructor() {\n        this.locale = \"en-dk\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnDkUsd = EnDkUsd;\nclass EnDkEur {\n    constructor() {\n        this.locale = \"en-dk\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnDkEur = EnDkEur;\nclass EnDkSek {\n    constructor() {\n        this.locale = \"en-dk\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"SEK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnDkSek = EnDkSek;\nclass EnDkNok {\n    constructor() {\n        this.locale = \"en-dk\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnDkNok = EnDkNok;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PtEsUsd = exports.PtEsEur = exports.EnEsUsd = exports.EnEsEur = exports.EsEsUsd = exports.EsEsEur = void 0;\nclass EsEsEur {\n    constructor() {\n        this.locale = \"es-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EsEsEur = EsEsEur;\nclass EsEsUsd {\n    constructor() {\n        this.locale = \"es-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EsEsUsd = EsEsUsd;\nclass EnEsEur {\n    constructor() {\n        this.locale = \"en-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnEsEur = EnEsEur;\nclass EnEsUsd {\n    constructor() {\n        this.locale = \"en-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EnEsUsd = EnEsUsd;\nclass PtEsEur {\n    constructor() {\n        this.locale = \"pt-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd' de 'MMMM' de 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.PtEsEur = PtEsEur;\nclass PtEsUsd {\n    constructor() {\n        this.locale = \"pt-es\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, dd' de 'MMMM' de 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.PtEsUsd = PtEsUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnFiNok = exports.EnFiDkk = exports.EnFiSek = exports.EnFiUsd = exports.EnFiEur = void 0;\nclass EnFiEur {\n    constructor() {\n        this.locale = \"en-fi\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnFiEur = EnFiEur;\nclass EnFiUsd {\n    constructor() {\n        this.locale = \"en-fi\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnFiUsd = EnFiUsd;\nclass EnFiSek {\n    constructor() {\n        this.locale = \"en-fi\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"SEK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnFiSek = EnFiSek;\nclass EnFiDkk {\n    constructor() {\n        this.locale = \"en-fi\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnFiDkk = EnFiDkk;\nclass EnFiNok {\n    constructor() {\n        this.locale = \"en-fi\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnFiNok = EnFiNok;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnFrUsd = exports.EnFrEur = exports.FrFrUsd = exports.FrFrEur = void 0;\nclass FrFrEur {\n    constructor() {\n        this.locale = \"fr-fr\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd-MMM-yy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.FrFrEur = FrFrEur;\nclass FrFrUsd {\n    constructor() {\n        this.locale = \"fr-fr\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd-MMM-yy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.FrFrUsd = FrFrUsd;\nclass EnFrEur {\n    constructor() {\n        this.locale = \"en-fr\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd-MMM-yy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnFrEur = EnFrEur;\nclass EnFrUsd {\n    constructor() {\n        this.locale = \"en-fr\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd-MMM-yy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnFrUsd = EnFrUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnHkUsd = exports.EnHkHkd = void 0;\nclass EnHkHkd {\n    constructor() {\n        this.locale = \"en-hk\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"HKD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnHkHkd = EnHkHkd;\nclass EnHkUsd {\n    constructor() {\n        this.locale = \"en-hk\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnHkUsd = EnHkUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnHuUsd = exports.EnHuEur = exports.EnHuHuf = exports.HuHuUsd = exports.HuHuEur = exports.HuHuHuf = void 0;\nclass HuHuHuf {\n    constructor() {\n        this.locale = \"hu-hu\";\n        this.dateFormat = {\n            short: \"yyyy.MM.dd.\",\n            medium: \"yyyy. MMMM d.\",\n            long: \"yyyy. MMMM d., dddd\",\n        };\n        this.currencyFormat = {\n            code: \"HUF\",\n            symbol: \"Ft\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.HuHuHuf = HuHuHuf;\nclass HuHuEur {\n    constructor() {\n        this.locale = \"hu-hu\";\n        this.dateFormat = {\n            short: \"yyyy.MM.dd.\",\n            medium: \"yyyy. MMMM d.\",\n            long: \"yyyy. MMMM d., dddd\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.HuHuEur = HuHuEur;\nclass HuHuUsd {\n    constructor() {\n        this.locale = \"hu-hu\";\n        this.dateFormat = {\n            short: \"yyyy.MM.dd.\",\n            medium: \"yyyy. MMMM d.\",\n            long: \"yyyy. MMMM d., dddd\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.HuHuUsd = HuHuUsd;\nclass EnHuHuf {\n    constructor() {\n        this.locale = \"en-hu\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"HUF\",\n            symbol: \"HUF\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnHuHuf = EnHuHuf;\nclass EnHuEur {\n    constructor() {\n        this.locale = \"en-hu\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnHuEur = EnHuEur;\nclass EnHuUsd {\n    constructor() {\n        this.locale = \"en-hu\";\n        this.dateFormat = {\n            short: \"dd.MM.yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnHuUsd = EnHuUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnIdIdr = exports.IdIdIdr = void 0;\nclass IdIdIdr {\n    constructor() {\n        this.locale = \"id-id\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"IDR\",\n            symbol: \"Rp\",\n            decimalSeparator: \"\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.IdIdIdr = IdIdIdr;\nclass EnIdIdr {\n    constructor() {\n        this.locale = \"en-id\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"IDR\",\n            symbol: \"Rp\",\n            decimalSeparator: \"\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnIdIdr = EnIdIdr;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HiInUsd = exports.HiInInr = exports.EnInUsd = exports.EnInInr = void 0;\nclass EnInInr {\n    constructor() {\n        this.locale = \"en-in\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"INR\",\n            symbol: \"₹\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EnInInr = EnInInr;\nclass EnInUsd {\n    constructor() {\n        this.locale = \"en-in\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EnInUsd = EnInUsd;\nclass HiInInr {\n    constructor() {\n        this.locale = \"hi-in\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"INR\",\n            symbol: \"₹\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.HiInInr = HiInInr;\nclass HiInUsd {\n    constructor() {\n        this.locale = \"hi-in\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.HiInUsd = HiInUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnItUsd = exports.EnItEur = exports.ItItUsd = exports.ItItEur = void 0;\nclass ItItEur {\n    constructor() {\n        this.locale = \"it-it\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.ItItEur = ItItEur;\nclass ItItUsd {\n    constructor() {\n        this.locale = \"it-it\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.ItItUsd = ItItUsd;\nclass EnItEur {\n    constructor() {\n        this.locale = \"en-it\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnItEur = EnItEur;\nclass EnItUsd {\n    constructor() {\n        this.locale = \"en-it\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\",\n        };\n    }\n}\nexports.EnItUsd = EnItUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnMxUsd = exports.EnMxMxn = exports.EnMxMxp = exports.EsMxUsd = exports.EsMxMxn = exports.EsMxMxp = void 0;\nclass EsMxMxp {\n    constructor() {\n        this.locale = \"es-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"MXP\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EsMxMxp = EsMxMxp;\nclass EsMxMxn {\n    constructor() {\n        this.locale = \"es-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"MXN\",\n            symbol: \"MXN $\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EsMxMxn = EsMxMxn;\nclass EsMxUsd {\n    constructor() {\n        this.locale = \"es-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD $\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EsMxUsd = EsMxUsd;\nclass EnMxMxp {\n    constructor() {\n        this.locale = \"en-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"MXP\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EnMxMxp = EnMxMxp;\nclass EnMxMxn {\n    constructor() {\n        this.locale = \"en-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"MXN\",\n            symbol: \"MXN $\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EnMxMxn = EnMxMxn;\nclass EnMxUsd {\n    constructor() {\n        this.locale = \"en-mx\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD $\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\",\n        };\n    }\n}\nexports.EnMxUsd = EnMxUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnMyUsd = exports.EnMyMyr = void 0;\nclass EnMyMyr {\n    constructor() {\n        this.locale = \"en-my\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"MYR\",\n            symbol: \"RM\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnMyMyr = EnMyMyr;\nclass EnMyUsd {\n    constructor() {\n        this.locale = \"en-my\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnMyUsd = EnMyUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnNlUsd = exports.EnNlEur = exports.NlNlUsd = exports.NlNlEur = void 0;\nclass NlNlEur {\n    constructor() {\n        this.locale = \"nl-nl\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.NlNlEur = NlNlEur;\nclass NlNlUsd {\n    constructor() {\n        this.locale = \"nl-nl\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.NlNlUsd = NlNlUsd;\nclass EnNlEur {\n    constructor() {\n        this.locale = \"en-nl\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnNlEur = EnNlEur;\nclass EnNlUsd {\n    constructor() {\n        this.locale = \"en-nl\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM yyyy\",\n            long: \"dddd d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnNlUsd = EnNlUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnNoUsd = exports.EnNoNok = exports.EnNoDkk = exports.EnNoSek = exports.EnNoEur = void 0;\nclass EnNoEur {\n    constructor() {\n        this.locale = \"en-no\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnNoEur = EnNoEur;\nclass EnNoSek {\n    constructor() {\n        this.locale = \"en-no\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"SEK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnNoSek = EnNoSek;\nclass EnNoDkk {\n    constructor() {\n        this.locale = \"en-no\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnNoDkk = EnNoDkk;\nclass EnNoNok {\n    constructor() {\n        this.locale = \"en-no\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\",\n        };\n    }\n}\nexports.EnNoNok = EnNoNok;\nclass EnNoUsd {\n    constructor() {\n        this.locale = \"en-no\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\",\n        };\n    }\n}\nexports.EnNoUsd = EnNoUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnNzAud = exports.EnNzUsd = exports.EnNzNzd = void 0;\nclass EnNzNzd {\n    constructor() {\n        this.locale = \"en-nz\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NZD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnNzNzd = EnNzNzd;\nclass EnNzUsd {\n    constructor() {\n        this.locale = \"en-nz\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnNzUsd = EnNzUsd;\nclass EnNzAud {\n    constructor() {\n        this.locale = \"en-nz\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"dd MMMM, yyyy\",\n            long: \"dddd, dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"AUD\",\n            symbol: \"AU$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnNzAud = EnNzAud;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnPePen = exports.EnPeUsd = exports.EsPePen = exports.EsPeUsd = void 0;\nclass EsPeUsd {\n    constructor() {\n        this.locale = \"es-pe\";\n        this.dateFormat = {\n            short: \"d/MM/yyyy\",\n            medium: \"dd de MMMM de yyyy\",\n            long: \"dddd, d de MMMM de yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EsPeUsd = EsPeUsd;\nclass EsPePen {\n    constructor() {\n        this.locale = \"es-pe\";\n        this.dateFormat = {\n            short: \"d/MM/yyyy\",\n            medium: \"dd de MMMM de yyyy\",\n            long: \"dddd, d de MMMM de yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"PEN\",\n            symbol: \"S/\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"-Cn\"\n        };\n    }\n}\nexports.EsPePen = EsPePen;\nclass EnPeUsd {\n    constructor() {\n        this.locale = \"en-pe\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnPeUsd = EnPeUsd;\nclass EnPePen {\n    constructor() {\n        this.locale = \"en-pe\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"PEN\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\"\n        };\n    }\n}\nexports.EnPePen = EnPePen;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnPtUsd = exports.EnPtEur = exports.PtPtUsd = exports.PtPtEur = void 0;\nclass PtPtEur {\n    constructor() {\n        this.locale = \"pt-pt\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d de MMMM de yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \" \",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.PtPtEur = PtPtEur;\nclass PtPtUsd {\n    constructor() {\n        this.locale = \"pt-pt\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d de MMMM de yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.PtPtUsd = PtPtUsd;\nclass EnPtEur {\n    constructor() {\n        this.locale = \"en-pt\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnPtEur = EnPtEur;\nclass EnPtUsd {\n    constructor() {\n        this.locale = \"en-pt\";\n        this.dateFormat = {\n            short: \"dd-MM-yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnPtUsd = EnPtUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeSeNok = exports.SeSeDkk = exports.SeSeSek = exports.SvSeUsd = exports.SvSeNok = exports.SvSeDkk = exports.SvSeSek = exports.SvSeEur = exports.EnSeUsd = exports.EnSeNok = exports.EnSeDkk = exports.EnSeSek = exports.EnSeEur = void 0;\nclass EnSeEur {\n    constructor() {\n        this.locale = \"en-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnSeEur = EnSeEur;\nclass EnSeSek {\n    constructor() {\n        this.locale = \"en-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"SEK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnSeSek = EnSeSek;\nclass EnSeDkk {\n    constructor() {\n        this.locale = \"en-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"DKK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnSeDkk = EnSeDkk;\nclass EnSeNok {\n    constructor() {\n        this.locale = \"en-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"NOK\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.EnSeNok = EnSeNok;\nclass EnSeUsd {\n    constructor() {\n        this.locale = \"en-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnSeUsd = EnSeUsd;\nclass SvSeEur {\n    constructor() {\n        this.locale = \"sv-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"'den 'd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"€\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.SvSeEur = SvSeEur;\nclass SvSeSek {\n    constructor() {\n        this.locale = \"sv-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"'den 'd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SvSeSek = SvSeSek;\nclass SvSeDkk {\n    constructor() {\n        this.locale = \"sv-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"'den 'd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SvSeDkk = SvSeDkk;\nclass SvSeNok {\n    constructor() {\n        this.locale = \"sv-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"'den 'd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SvSeNok = SvSeNok;\nclass SvSeUsd {\n    constructor() {\n        this.locale = \"sv-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"'den 'd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SvSeUsd = SvSeUsd;\nclass SeSeSek {\n    constructor() {\n        this.locale = \"se-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM d'. b. 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SEK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SeSeSek = SeSeSek;\nclass SeSeDkk {\n    constructor() {\n        this.locale = \"se-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM d'. b. 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"DKK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SeSeDkk = SeSeDkk;\nclass SeSeNok {\n    constructor() {\n        this.locale = \"se-se\";\n        this.dateFormat = {\n            short: \"yyyy-MM-dd\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM d'. b. 'yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"NOK\",\n            symbol: \"kr\",\n            decimalSeparator: \",\",\n            groupSeparator: \".\",\n            positivePattern: \"n C\",\n            negativePattern: \"-n C\"\n        };\n    }\n}\nexports.SeSeNok = SeSeNok;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnSgJpy = exports.EnSgEur = exports.EnSgUsd = exports.EnSgSgd = void 0;\nclass EnSgSgd {\n    constructor() {\n        this.locale = \"en-sg\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"SGD\",\n            symbol: \"SG$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnSgSgd = EnSgSgd;\nclass EnSgUsd {\n    constructor() {\n        this.locale = \"en-sg\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"US$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnSgUsd = EnSgUsd;\nclass EnSgEur {\n    constructor() {\n        this.locale = \"en-sg\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"EUR\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnSgEur = EnSgEur;\nclass EnSgJpy {\n    constructor() {\n        this.locale = \"en-sg\";\n        this.dateFormat = {\n            short: \"d/M/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"JPY\",\n            symbol: \"JP¥\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnSgJpy = EnSgJpy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ThThThb = exports.EnThThb = void 0;\nclass EnThThb {\n    constructor() {\n        this.locale = \"en-th\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"THB\",\n            symbol: \"THB\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.EnThThb = EnThThb;\nclass ThThThb {\n    constructor() {\n        this.locale = \"th-th\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"d MMMM yyyy\",\n            long: \"dddd, d MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"THB\",\n            symbol: \"THB\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"C -n\"\n        };\n    }\n}\nexports.ThThThb = ThThThb;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnGbUsd = exports.EnGbEur = exports.EnGbGbp = void 0;\nclass EnGbGbp {\n    constructor() {\n        this.locale = \"en-gb\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"GBP\",\n            symbol: \"£\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnGbGbp = EnGbGbp;\nclass EnGbEur {\n    constructor() {\n        this.locale = \"en-gb\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"EUR\",\n            symbol: \"EUR\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnGbEur = EnGbEur;\nclass EnGbUsd {\n    constructor() {\n        this.locale = \"en-gb\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dd MMMM yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"USD\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"C n\",\n            negativePattern: \"-C n\"\n        };\n    }\n}\nexports.EnGbUsd = EnGbUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EnUsUsd = void 0;\nclass EnUsUsd {\n    constructor() {\n        this.locale = \"en-us\";\n        this.dateFormat = {\n            short: \"MM/dd/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\"\n        };\n    }\n}\nexports.EnUsUsd = EnUsUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EsUsmeUsd = exports.EnUsmeUsd = void 0;\nclass EnUsmeUsd {\n    constructor() {\n        this.locale = \"en-usme\";\n        this.dateFormat = {\n            short: \"M/d/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\"\n        };\n    }\n}\nexports.EnUsmeUsd = EnUsmeUsd;\nclass EsUsmeUsd {\n    constructor() {\n        this.locale = \"es-usme\";\n        this.dateFormat = {\n            short: \"dd/MM/yyyy\",\n            medium: \"MMMM dd, yyyy\",\n            long: \"dddd, MMMM dd, yyyy\",\n        };\n        this.currencyFormat = {\n            code: \"USD\",\n            symbol: \"$\",\n            decimalSeparator: \".\",\n            groupSeparator: \",\",\n            positivePattern: \"Cn\",\n            negativePattern: \"(Cn)\"\n        };\n    }\n}\nexports.EsUsmeUsd = EsUsmeUsd;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConstantProvider = void 0;\nconst day_names_1 = require(\"./../constant-values/day-names\");\nconst month_names_1 = require(\"./../constant-values/month-names\");\nclass ConstantProvider {\n    static getDayNames(locale) {\n        if (locale in day_names_1.DayNames)\n            return day_names_1.DayNames[locale];\n        else\n            return day_names_1.DayNames[\"default\"];\n    }\n    static getMonthNames(locale) {\n        if (locale in month_names_1.MonthNames)\n            return month_names_1.MonthNames[locale];\n        else\n            return month_names_1.MonthNames[\"default\"];\n    }\n}\nexports.ConstantProvider = ConstantProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CultureProvider = void 0;\nconst all_cultures_1 = require(\"../im-cultures/all-cultures\");\nclass CultureProvider {\n    static getCultureByLocaleCurrency(locale, currency) {\n        if (locale)\n            locale = locale.toLowerCase();\n        if (currency)\n            currency = currency.toLocaleUpperCase();\n        let currencyCultures = all_cultures_1.AllCultures[locale];\n        if (currencyCultures) {\n            let culture;\n            if (currency) {\n                culture = currencyCultures[currency];\n            }\n            else {\n                culture = currencyCultures[Object.keys(currencyCultures)[0]];\n            }\n            if (culture) {\n                return culture;\n            }\n        }\n        throw new Error(`Unknown locale/currency combination ${locale}/${currency}`);\n    }\n    static getAllCurrenciesByLocale(locale) {\n        if (locale)\n            locale = locale.toLowerCase();\n        let currencyCultures = all_cultures_1.AllCultures[locale];\n        if (currencyCultures) {\n            return Object.keys(currencyCultures);\n        }\n        throw new Error(`Unknown locale ${locale}`);\n    }\n}\nexports.CultureProvider = CultureProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImApiTranslator = void 0;\nconst im_translator_1 = require(\"./im-translator\");\nclass ImApiTranslator extends im_translator_1.ImTranslator {\n    constructor(resourceLoader, locale, fallbackLocale) {\n        super(locale, !!resourceLoader.showLogs);\n        this.resourceLoader = resourceLoader;\n        this.fallbackLocale = fallbackLocale;\n    }\n    fetchResource(resource) {\n        let url = `${this.resourceLoader.url}/${resource}` + (this.fallbackLocale ? `?fallbackLocale=${this.fallbackLocale}` : '');\n        if (resource === '*') {\n            url = `${url}${url.includes('?') ? '&' : '?'}flattenResponse=false`;\n        }\n        const fetchOptions = {\n            method: 'GET',\n            headers: Object.assign({ 'IM-SenderID': this.resourceLoader.appName, 'IM-AcceptLanguage': this.locale, 'Accept-Language': this.locale }, this.resourceLoader.headers)\n        };\n        if (!!this.resourceLoader.isEditingEnabled) {\n            fetchOptions.cache = \"no-store\";\n        }\n        return fetch(url, fetchOptions);\n    }\n    loadTranslations(resource) {\n        let loader = this.loaders[resource];\n        if (!loader) {\n            loader = this.loaders[resource] =\n                new Promise((resolve, reject) => {\n                    this.fetchResource(resource)\n                        .then((response) => {\n                        if (response.ok) {\n                            return response.json();\n                        }\n                        this.translations[resource] = {};\n                        console.error(`Failed to load '${resource}' resource for '${this.locale}' locale. Response status - ${response.status}`);\n                        reject();\n                    })\n                        .then((data) => {\n                        if (resource === '*') {\n                            for (const res in data) {\n                                if (!this.loaders[res]) {\n                                    this.translations[res] = data[res];\n                                }\n                            }\n                        }\n                        else {\n                            this.translations[resource] = data;\n                        }\n                        resolve();\n                    })\n                        .catch(err => {\n                        this.translations[resource] = {};\n                        console.error(`Failed to load '${resource}' resource for '${this.locale}' locale. Check if service is available.`);\n                        reject();\n                    });\n                });\n        }\n        return loader;\n    }\n    translate(key, interpolateParams, returnKeyIfNotFound = true) {\n        const resource = this._getResourceName(key);\n        return this._translate(resource, key, interpolateParams, returnKeyIfNotFound);\n    }\n    translateInstant(key, interpolateParams, returnKeyIfNotFound = true) {\n        const resource = this._getResourceName(key);\n        return this._translateInstant(resource, key, interpolateParams, returnKeyIfNotFound);\n    }\n    _getResourceName(key) {\n        let _resource = 'Common';\n        if (typeof key === 'string') {\n            if (key.includes('.')) {\n                _resource = key.split('.')[0];\n            }\n        }\n        else {\n            if (key[0].includes('.')) {\n                _resource = key[0].split('.')[0];\n            }\n        }\n        return _resource;\n    }\n}\nexports.ImApiTranslator = ImApiTranslator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImCurrencyFormatter = void 0;\nconst short_currency_notations_1 = require(\"../cultures/constant-values/short-currency-notations\");\nclass ImCurrencyFormatter {\n    constructor(currencyFormat) {\n        this._currencyFormat = currencyFormat;\n    }\n    format(amount) {\n        const currencyPattern = amount < 0 ? this._currencyFormat.negativePattern : this._currencyFormat.positivePattern;\n        return this.getCurrency(amount, this._currencyFormat.groupSeparator, this._currencyFormat.decimalSeparator, currencyPattern, this._currencyFormat.symbol);\n    }\n    formatByCurrencyCode(amount, currencyFormat) {\n        const currencyPattern = amount < 0 ? currencyFormat.negativePattern : currencyFormat.positivePattern;\n        return this.getCurrency(amount, currencyFormat.groupSeparator, currencyFormat.decimalSeparator, currencyPattern, currencyFormat.symbol);\n    }\n    formatToShort(amount, locale, currencyFormat = null) {\n        const _currencyFormat = currencyFormat || this._currencyFormat;\n        return this.getShortCurrencyFormat(amount, locale, _currencyFormat);\n    }\n    formatToShortByCode(amount, locale, currencyFormat) {\n        return this.getShortCurrencyFormat(amount, locale, currencyFormat);\n    }\n    getShortCurrencyFormat(amount, locale, currencyFormat) {\n        var _a, _b, _c;\n        const currencyPattern = amount < 0 ? currencyFormat.negativePattern : currencyFormat.positivePattern;\n        if ((amount % 1) != 0) {\n            amount = amount < 0 ? Math.ceil(amount) : Math.floor(amount);\n        }\n        let num = (amount < 0 ? amount * -1 : amount);\n        const i = Math.pow(10, Math.max(0, Math.log10(num) - 2));\n        num = num / i * i;\n        let currency = this.getCurrency(this.getShortCurrencyAmount(amount >= 1000000 ? num : amount), currencyFormat.groupSeparator, currencyFormat.decimalSeparator, currencyPattern, currencyFormat.symbol);\n        if (num >= 1000000000)\n            return this.convertToKMB(locale, currency, num / 1000000000, (_a = short_currency_notations_1.BillionsNotation[locale]) !== null && _a !== void 0 ? _a : short_currency_notations_1.BillionsNotation[\"default\"]);\n        if (num >= 1000000)\n            return this.convertToKMB(locale, currency, num / 1000000, (_b = short_currency_notations_1.MillionsNotation[locale]) !== null && _b !== void 0 ? _b : short_currency_notations_1.MillionsNotation[\"default\"]);\n        if (num >= 1000)\n            return this.convertToKMB(locale, currency, num / 1000, (_c = short_currency_notations_1.ThousandsNotation[locale]) !== null && _c !== void 0 ? _c : short_currency_notations_1.ThousandsNotation[\"default\"]);\n        return currency;\n    }\n    convertToKMB(locale, value, amount, kbm) {\n        const str = value.replace(\",\", \"\").replace(\".\", \"\");\n        const strAmt = str.split('').filter(c => /\\d/.test(c)).join('');\n        return str.replace(strAmt, `${amount.toLocaleString(locale, { maximumFractionDigits: 2, minimumFractionDigits: 2 })}${kbm}`);\n    }\n    getShortCurrencyAmount(amount) {\n        if (amount >= 1000000000)\n            return amount / 1000000000;\n        else if (amount >= 1000000)\n            return amount / 1000000;\n        else if (amount >= 1000)\n            return amount / 1000;\n        return amount;\n    }\n    getCurrency(amount, groupSeparator, decimalSeparator, pattern, symbol) {\n        if (isNaN(amount))\n            return '';\n        let formattedAmount = decimalSeparator ? Math.abs(amount).toFixed(2) : Math.floor(Math.abs(amount)).toString();\n        if (decimalSeparator != \"\" && decimalSeparator != \".\") {\n            formattedAmount = formattedAmount.replace('.', decimalSeparator);\n        }\n        formattedAmount = formattedAmount.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator);\n        return pattern.replace('n', formattedAmount).replace('C', symbol);\n    }\n}\nexports.ImCurrencyFormatter = ImCurrencyFormatter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImDateFormatter = void 0;\nconst constant_provider_1 = require(\"./../cultures/providers/constant-provider\");\nclass ImDateFormatter {\n    constructor(locale) {\n        this._dayNames = constant_provider_1.ConstantProvider.getDayNames(locale);\n        this._monthNames = constant_provider_1.ConstantProvider.getMonthNames(locale);\n    }\n    format(date, dateFormat) {\n        if (isNaN(date.getTime()))\n            return '';\n        date = this.getIsoDate(date);\n        let formattedDate = dateFormat;\n        let replaceValues = {};\n        if (formattedDate.includes('ddd')) {\n            const formatDay = this.getDay(date, formattedDate);\n            formattedDate = formattedDate.replace(formatDay.format, '<WEEKDAY>');\n            replaceValues['<WEEKDAY>'] = formatDay.value;\n        }\n        if (formattedDate.includes('M')) {\n            const formatMonth = this.getMonth(date, formattedDate);\n            formattedDate = formattedDate.replace(formatMonth.format, '<MON>');\n            replaceValues['<MON>'] = formatMonth.value;\n        }\n        if (formattedDate.includes('yy')) {\n            const formatYear = this.getYear(date, formattedDate);\n            formattedDate = formattedDate.replace(formatYear.format, formatYear.value);\n        }\n        if (formattedDate.includes('d')) {\n            const formatDate = this.getDate(date, formattedDate);\n            formattedDate = formattedDate.replace(formatDate.format, formatDate.value);\n        }\n        if (formattedDate.includes('h') || formattedDate.includes('H')) {\n            const formatDate = this.getHours(date, formattedDate);\n            formattedDate = formattedDate.replace(formatDate.format, formatDate.value);\n        }\n        if (formattedDate.includes('m')) {\n            const formatDate = this.getMinutes(date, formattedDate);\n            formattedDate = formattedDate.replace(formatDate.format, formatDate.value);\n        }\n        if (formattedDate.includes('s')) {\n            const formatDate = this.getSeconds(date, formattedDate);\n            formattedDate = formattedDate.replace(formatDate.format, formatDate.value);\n        }\n        if (formattedDate.includes('tt')) {\n            const formatDate = this.getAmPm(date);\n            formattedDate = formattedDate.replace(formatDate.format, formatDate.value);\n        }\n        for (const prop in replaceValues) {\n            formattedDate = formattedDate.replace(prop, replaceValues[prop]);\n        }\n        return formattedDate;\n    }\n    getDate(date, dateFormat) {\n        let strDate = date.getDate().toString();\n        let format = dateFormat.includes('dd') ? 'dd' : 'd';\n        if (strDate.length == 1 && format.length == 2) {\n            strDate = '0' + strDate;\n        }\n        return { format: format, value: strDate };\n    }\n    getMonth(date, dateFormat) {\n        const month = date.getMonth();\n        let strMonth = (month + 1).toString();\n        let format = 'M';\n        if (dateFormat.includes('MMMM')) {\n            format = 'MMMM';\n            strMonth = this._monthNames[month];\n        }\n        else if (dateFormat.includes('MMM')) {\n            format = 'MMM';\n            strMonth = this._monthNames[month].substring(0, 3);\n        }\n        else if (dateFormat.includes('MM')) {\n            format = 'MM';\n            if (strMonth.length == 1)\n                strMonth = '0' + strMonth;\n        }\n        return { format: format, value: strMonth };\n    }\n    getYear(date, dateFormat) {\n        let strYear = date.getFullYear().toString();\n        let format = 'yy';\n        if (dateFormat.includes('yyyy')) {\n            format = 'yyyy';\n        }\n        else {\n            strYear = strYear.slice(-2);\n        }\n        return { format: format, value: strYear };\n    }\n    getDay(date, dateFormat) {\n        let dayName = this._dayNames[date.getDay()];\n        const format = dateFormat.includes('dddd') ? 'dddd' : 'ddd';\n        if (format === 'ddd')\n            dayName = dayName.substring(0, 3);\n        return { format: format, value: dayName };\n    }\n    getHours(date, dateFormat) {\n        const hours = date.getHours();\n        let strHours = hours.toString();\n        let format = dateFormat.includes('hh') ? 'hh' : 'h';\n        if (dateFormat.includes('H')) {\n            format = dateFormat.includes('HH') ? 'HH' : 'H';\n        }\n        else {\n            strHours = ((hours % 12) || 12).toString();\n        }\n        if (strHours.length == 1 && format.length == 2) {\n            strHours = '0' + strHours;\n        }\n        return { format: format, value: strHours };\n    }\n    getMinutes(date, dateFormat) {\n        let strMinutes = date.getMinutes().toString();\n        let format = dateFormat.includes('mm') ? 'mm' : 'm';\n        if (strMinutes.length == 1 && format.length == 2) {\n            strMinutes = '0' + strMinutes;\n        }\n        return { format: format, value: strMinutes };\n    }\n    getSeconds(date, dateFormat) {\n        let strSeconds = date.getSeconds().toString();\n        let format = dateFormat.includes('ss') ? 'ss' : 's';\n        if (strSeconds.length == 1 && format.length == 2) {\n            strSeconds = '0' + strSeconds;\n        }\n        return { format: format, value: strSeconds };\n    }\n    getAmPm(date) {\n        let hours = date.getHours();\n        let am_pm = hours >= 12 ? 'pm' : 'am';\n        return { format: 'tt', value: am_pm };\n    }\n    getIsoDate(date) {\n        if (date.getTimezoneOffset() > 0 && date.toISOString().includes('T00:00:00.000Z')) {\n            date.setMinutes(date.getMinutes() + date.getTimezoneOffset());\n        }\n        return date;\n    }\n}\nexports.ImDateFormatter = ImDateFormatter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImFileTranslator = void 0;\nconst im_translator_1 = require(\"./im-translator\");\nclass ImFileTranslator extends im_translator_1.ImTranslator {\n    constructor(resourceLoader, locale) {\n        super(locale, !!resourceLoader.showLogs);\n        this.resourceLoader = resourceLoader;\n    }\n    fetchResource(resource) {\n        const url = `${this.resourceLoader.url}/${resource}.json`;\n        const fetchOptions = { method: 'GET' };\n        if (!!this.resourceLoader.isEditingEnabled) {\n            fetchOptions.cache = \"no-store\";\n        }\n        return fetch(url, fetchOptions);\n    }\n    loadTranslations(resource) {\n        let loader = this.loaders[resource];\n        if (!loader) {\n            loader = this.loaders[resource] =\n                new Promise((resolve, reject) => {\n                    this.fetchResource(resource)\n                        .then((response) => {\n                        if (response.ok) {\n                            return response.json();\n                        }\n                        this.translations[resource] = {};\n                        console.error(`Failed to load '${resource}' resource. Response status - ${response.status}`);\n                        reject();\n                    })\n                        .then((data) => {\n                        this.translations[resource] = this.flattenJSON(data);\n                        resolve();\n                    })\n                        .catch(err => {\n                        this.translations[resource] = {};\n                        console.error(`Failed to load '${resource}' resource. Check if service is available.`);\n                        reject();\n                    });\n                });\n        }\n        return loader;\n    }\n    translate(key, interpolateParams, returnKeyIfNotFound = true) {\n        return this._translate(this.locale, key, interpolateParams, returnKeyIfNotFound);\n    }\n    translateInstant(key, interpolateParams, returnKeyIfNotFound = true) {\n        return this._translateInstant(this.locale, key, interpolateParams, returnKeyIfNotFound);\n    }\n    flattenJSON(obj = {}, res = {}, extraKey = '') {\n        for (const key in obj) {\n            if (typeof obj[key] !== 'object') {\n                res[extraKey + key] = obj[key];\n            }\n            else {\n                this.flattenJSON(obj[key], res, `${extraKey}${key}.`);\n            }\n        }\n        return res;\n    }\n}\nexports.ImFileTranslator = ImFileTranslator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImTranslator = void 0;\nclass ImTranslator {\n    constructor(locale, showLogs) {\n        this.locale = locale;\n        this.showLogs = showLogs;\n        this.translations = {};\n        this.loaders = {};\n    }\n    _translate(resource, key, interpolateParams, returnKeyIfNotFound = true) {\n        return new Promise((resolve, reject) => {\n            if (this.translations[resource]) {\n                const res = this.getValue(returnKeyIfNotFound, resource, key, interpolateParams);\n                resolve(res);\n            }\n            else {\n                this.loadTranslations(resource)\n                    .then(() => {\n                    const res = this.getValue(returnKeyIfNotFound, resource, key, interpolateParams);\n                    resolve(res);\n                })\n                    .catch(err => {\n                    const res = this.getValue(returnKeyIfNotFound, resource, key, interpolateParams);\n                    resolve(res);\n                });\n            }\n        });\n    }\n    _translateInstant(resource, key, interpolateParams, returnKeyIfNotFound = true) {\n        return this.getValue(returnKeyIfNotFound, resource, key, interpolateParams, true);\n    }\n    getValue(returnKeyIfNotFound, resource, key, interpolateParams, isInstantRequest = false) {\n        const translations = this.translations[resource];\n        let response;\n        if (typeof key === 'string') {\n            response = translations ? this.getSingleValue(returnKeyIfNotFound, translations, key, resource, isInstantRequest, interpolateParams) : this.getNotFoundResponse(returnKeyIfNotFound, key, resource, isInstantRequest);\n        }\n        else {\n            response = {};\n            key.forEach(k => {\n                response[k] = translations ? this.getSingleValue(returnKeyIfNotFound, translations, k, resource, isInstantRequest, interpolateParams) : this.getNotFoundResponse(returnKeyIfNotFound, k, resource, isInstantRequest);\n            });\n        }\n        return response;\n    }\n    getSingleValue(returnKeyIfNotFound, translations, key, resource, isInstantRequest, interpolateParams) {\n        let response = translations[key] || undefined;\n        if (response !== undefined) {\n            if (interpolateParams) {\n                response = this.interpolateString(response, interpolateParams);\n            }\n        }\n        else {\n            response = this.getNotFoundResponse(returnKeyIfNotFound, key, resource, isInstantRequest);\n        }\n        return response;\n    }\n    getNotFoundResponse(returnKeyIfNotFound, key, resource, isInstantRequest) {\n        if (this.showLogs) {\n            this.logMissingError(key, resource, isInstantRequest);\n        }\n        return returnKeyIfNotFound ? key : undefined;\n    }\n    interpolateString(expr, params) {\n        for (const key in params) {\n            expr = expr.replace(`{{${key}}}`, params[key]);\n        }\n        return expr;\n    }\n    logMissingError(key, resource, isInstantRequest) {\n        if (isInstantRequest) {\n            if (this.translations.hasOwnProperty(resource)) {\n                console.warn(`Failed to instantly translate '${key}' key for ${this.locale} locale`);\n            }\n        }\n        else {\n            console.warn(`Failed to translate '${key}' key for ${this.locale} locale`);\n        }\n    }\n}\nexports.ImTranslator = ImTranslator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImLocalizationService = void 0;\nvar im_localization_service_1 = require(\"./services/im-localization-service\");\nObject.defineProperty(exports, \"ImLocalizationService\", { enumerable: true, get: function () { return im_localization_service_1.ImLocalizationService; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImLocalizationService = void 0;\nconst im_culture_provider_1 = require(\"../cultures/providers/im-culture-provider\");\nconst im_currency_formatter_1 = require(\"../features/im-currency-formatter\");\nconst im_date_formatter_1 = require(\"../features/im-date-formatter\");\nconst im_api_translator_1 = require(\"../features/im-api-translator\");\nconst im_file_translator_1 = require(\"../features/im-file-translator\");\nclass ImLocalizationService {\n    constructor(config) {\n        this._culture = im_culture_provider_1.CultureProvider.getCultureByLocaleCurrency(config.useLocale, config.currencyCode);\n        this._currencyFormatter = new im_currency_formatter_1.ImCurrencyFormatter(this._culture.currencyFormat);\n        this._dateFormatter = new im_date_formatter_1.ImDateFormatter(this._culture.locale);\n        if (!!config.resourceLoader.useApi) {\n            this._translator = new im_api_translator_1.ImApiTranslator(config.resourceLoader, this._culture.locale, config.fallbackLocale);\n        }\n        else {\n            this._translator = new im_file_translator_1.ImFileTranslator(config.resourceLoader, this._culture.locale);\n            if (config.fallbackLocale && config.fallbackLocale.toLowerCase() !== config.useLocale.toLowerCase()) {\n                this._baseTranslator = new im_file_translator_1.ImFileTranslator(config.resourceLoader, config.fallbackLocale);\n            }\n        }\n        if (config.preloadResources) {\n            config.preloadResources.map((resource) => {\n                this._translator.loadTranslations(resource);\n            });\n        }\n        config.useLocale = this._culture.locale;\n        this._config = config;\n    }\n    updateCulture(locale, currencyCode) {\n        this._culture = im_culture_provider_1.CultureProvider.getCultureByLocaleCurrency(locale, currencyCode);\n        if (this._config.useLocale !== this._culture.locale) {\n            this._config.useLocale = this._culture.locale;\n            if (this._config.resourceLoader.useApi === false)\n                this._translator = new im_file_translator_1.ImFileTranslator(this._config.resourceLoader, this._culture.locale);\n            else\n                this._translator = new im_api_translator_1.ImApiTranslator(this._config.resourceLoader, this._culture.locale);\n            if (this._config.preloadResources) {\n                this._config.preloadResources.map((resource) => {\n                    this._translator.loadTranslations(resource);\n                });\n            }\n        }\n    }\n    updateCurrency(currencyCode) {\n        this._culture = im_culture_provider_1.CultureProvider.getCultureByLocaleCurrency(this._config.useLocale, currencyCode);\n        this._currencyFormatter = new im_currency_formatter_1.ImCurrencyFormatter(this._culture.currencyFormat);\n    }\n    formatCurrency(amount) {\n        return this._currencyFormatter.format(amount);\n    }\n    formatCurrencyByCode(amount, currencyCode) {\n        const culture = im_culture_provider_1.CultureProvider.getCultureByLocaleCurrency(this._culture.locale, currencyCode);\n        return this._currencyFormatter.formatByCurrencyCode(amount, culture.currencyFormat);\n    }\n    formatToShortCurrency(amount) {\n        if (this._culture == null) {\n            throw new Error(\"Culture is not setup. Use SetCulture method to setup\");\n        }\n        return this._currencyFormatter.formatToShort(amount, this._culture.locale);\n    }\n    formatToShortCurrencyByCode(amount, currencyCode) {\n        if (this._culture == null) {\n            throw new Error(\"Culture is not setup. Use SetCulture method to setup\");\n        }\n        else if (currencyCode.trim() === '') {\n            throw new Error(\"Currency code is missing\");\n        }\n        const culture = im_culture_provider_1.CultureProvider.getCultureByLocaleCurrency(this._culture.locale, currencyCode);\n        return this._currencyFormatter.formatToShortByCode(amount, this._culture.locale, culture.currencyFormat);\n    }\n    formatDate(date, options) {\n        let dateFormat = this._culture.dateFormat.short;\n        if (options === null || options === void 0 ? void 0 : options.dateFormat) {\n            if (options.dateFormat === \"short\")\n                dateFormat = this._culture.dateFormat.short;\n            else if (options.dateFormat === \"medium\")\n                dateFormat = this._culture.dateFormat.medium;\n            else if (options.dateFormat === \"long\")\n                dateFormat = this._culture.dateFormat.long;\n            else\n                dateFormat = options.dateFormat;\n        }\n        return this._dateFormatter.format(date, dateFormat);\n    }\n    translate(key, options) {\n        const returnKeyIfNotFound = options ? options.returnKeyIfNotFound : true;\n        return new Promise((resolve, reject) => {\n            this._translator.translate(key, options === null || options === void 0 ? void 0 : options.interpolateParams, (!this._baseTranslator && returnKeyIfNotFound))\n                .then((value) => {\n                if (typeof key === 'string') {\n                    if (value === undefined) {\n                        if (this._baseTranslator) {\n                            this._baseTranslator.translate(key, options === null || options === void 0 ? void 0 : options.interpolateParams, returnKeyIfNotFound)\n                                .then((pending_value) => {\n                                if (pending_value === undefined && returnKeyIfNotFound) {\n                                    resolve(key);\n                                }\n                                else {\n                                    resolve(pending_value);\n                                }\n                            })\n                                .catch(err => {\n                                reject();\n                            });\n                        }\n                        else {\n                            resolve(returnKeyIfNotFound ? key : value);\n                        }\n                    }\n                    else {\n                        resolve(value);\n                    }\n                }\n                else {\n                    const pendingKeys = [];\n                    for (const k in value) {\n                        if (value[k] === undefined) {\n                            if (this._baseTranslator) {\n                                pendingKeys.push(k);\n                            }\n                            if (returnKeyIfNotFound) {\n                                value[k] = k;\n                            }\n                        }\n                    }\n                    if (pendingKeys.length > 0) {\n                        this._baseTranslator.translate(pendingKeys, options === null || options === void 0 ? void 0 : options.interpolateParams, returnKeyIfNotFound)\n                            .then((pending_value) => {\n                            for (const k in pending_value) {\n                                if (pending_value[k]) {\n                                    value[k] = pending_value[k];\n                                }\n                            }\n                            resolve(value);\n                        })\n                            .catch(err => {\n                            reject();\n                        });\n                    }\n                    resolve(value);\n                }\n            })\n                .catch(err => {\n                reject();\n            });\n        });\n    }\n    translateInstant(key, options) {\n        const returnKeyIfNotFound = options ? options.returnKeyIfNotFound : true;\n        const value = this._translator.translateInstant(key, options === null || options === void 0 ? void 0 : options.interpolateParams, (!this._baseTranslator && returnKeyIfNotFound));\n        if (typeof key === 'string') {\n            if (value === undefined) {\n                if (this._baseTranslator) {\n                    const pending_value = this._baseTranslator.translateInstant(key, options === null || options === void 0 ? void 0 : options.interpolateParams, returnKeyIfNotFound);\n                    if (pending_value === undefined && returnKeyIfNotFound) {\n                        return key;\n                    }\n                    else {\n                        return pending_value;\n                    }\n                }\n                else {\n                    return returnKeyIfNotFound ? key : value;\n                }\n            }\n            else {\n                return value;\n            }\n        }\n        else {\n            const pendingKeys = [];\n            for (const k in value) {\n                if (value[k] === undefined) {\n                    if (this._baseTranslator) {\n                        pendingKeys.push(k);\n                    }\n                    if (returnKeyIfNotFound) {\n                        value[k] = k;\n                    }\n                }\n            }\n            if (pendingKeys.length > 0) {\n                const pending_value = this._baseTranslator.translate(pendingKeys, options === null || options === void 0 ? void 0 : options.interpolateParams, returnKeyIfNotFound);\n                for (const k in pending_value) {\n                    if (pending_value[k]) {\n                        value[k] = pending_value[k];\n                    }\n                }\n                return value;\n            }\n            return value;\n        }\n    }\n    get CurrentCulture() {\n        return this._culture;\n    }\n    get AppName() {\n        return this._config.resourceLoader.appName;\n    }\n}\nexports.ImLocalizationService = ImLocalizationService;\n","import { createContext } from 'react';\nexport var localizationContext = /*#__PURE__*/createContext(undefined);","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFabUtilityClass(slot) {\n  return generateUtilityClass('MuiFab', slot);\n}\nconst fabClasses = generateUtilityClasses('MuiFab', ['root', 'primary', 'secondary', 'extended', 'circular', 'focusVisible', 'disabled', 'colorInherit', 'sizeSmall', 'sizeMedium', 'sizeLarge', 'info', 'error', 'warning', 'success']);\nexport default fabClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"disableFocusRipple\", \"focusVisibleClassName\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport fabClasses, { getFabUtilityClass } from './fabClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    variant,\n    classes,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `size${capitalize(size)}`, color === 'inherit' ? 'colorInherit' : color]\n  };\n  const composedClasses = composeClasses(slots, getFabUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst FabRoot = styled(ButtonBase, {\n  name: 'MuiFab',\n  slot: 'Root',\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, styles[capitalize(ownerState.size)], styles[ownerState.color]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$palette$getCon, _theme$palette;\n  return _extends({}, theme.typography.button, {\n    minHeight: 36,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n      duration: theme.transitions.duration.short\n    }),\n    borderRadius: '50%',\n    padding: 0,\n    minWidth: 0,\n    width: 56,\n    height: 56,\n    zIndex: (theme.vars || theme).zIndex.fab,\n    boxShadow: (theme.vars || theme).shadows[6],\n    '&:active': {\n      boxShadow: (theme.vars || theme).shadows[12]\n    },\n    color: theme.vars ? theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n    backgroundColor: (theme.vars || theme).palette.grey[300],\n    '&:hover': {\n      backgroundColor: (theme.vars || theme).palette.grey.A100,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette.grey[300]\n      },\n      textDecoration: 'none'\n    },\n    [`&.${fabClasses.focusVisible}`]: {\n      boxShadow: (theme.vars || theme).shadows[6]\n    }\n  }, ownerState.size === 'small' && {\n    width: 40,\n    height: 40\n  }, ownerState.size === 'medium' && {\n    width: 48,\n    height: 48\n  }, ownerState.variant === 'extended' && {\n    borderRadius: 48 / 2,\n    padding: '0 16px',\n    width: 'auto',\n    minHeight: 'auto',\n    minWidth: 48,\n    height: 48\n  }, ownerState.variant === 'extended' && ownerState.size === 'small' && {\n    width: 'auto',\n    padding: '0 8px',\n    borderRadius: 34 / 2,\n    minWidth: 34,\n    height: 34\n  }, ownerState.variant === 'extended' && ownerState.size === 'medium' && {\n    width: 'auto',\n    padding: '0 16px',\n    borderRadius: 40 / 2,\n    minWidth: 40,\n    height: 40\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  });\n}, ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.color !== 'inherit' && ownerState.color !== 'default' && (theme.vars || theme).palette[ownerState.color] != null && {\n  color: (theme.vars || theme).palette[ownerState.color].contrastText,\n  backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n  '&:hover': {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n    }\n  }\n}), ({\n  theme\n}) => ({\n  [`&.${fabClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled,\n    boxShadow: (theme.vars || theme).shadows[0],\n    backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n  }\n}));\nconst Fab = /*#__PURE__*/React.forwardRef(function Fab(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFab'\n  });\n  const {\n      children,\n      className,\n      color = 'default',\n      component = 'button',\n      disabled = false,\n      disableFocusRipple = false,\n      focusVisibleClassName,\n      size = 'large',\n      variant = 'circular'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    disableFocusRipple,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(FabRoot, _extends({\n    className: clsx(classes.root, className),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    classes: classes,\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fab.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'error', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'large'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'circular'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'extended']), PropTypes.string])\n} : void 0;\nexport default Fab;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nimport React, { useContext } from 'react';\nimport Fab from '@mui/material/Fab';\nimport { localizationContext } from '../localizationContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function ShowHideResouceKey() {\n  var context = useContext(localizationContext);\n  var handleShowHideKeys = /*#__PURE__*/function () {\n    var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n      return _regeneratorRuntime().wrap(function _callee$(_context) {\n        while (1) switch (_context.prev = _context.next) {\n          case 0:\n            context == null ? void 0 : context.showHideKey(!(context != null && context.isShowKeyEnabled));\n          case 1:\n          case \"end\":\n            return _context.stop();\n        }\n      }, _callee);\n    }));\n    return function handleShowHideKeys() {\n      return _ref.apply(this, arguments);\n    };\n  }();\n  return /*#__PURE__*/_jsx(Fab, {\n    color: \"primary\",\n    id: \"showHideKeysFloatingBtn\",\n    onClick: handleShowHideKeys,\n    style: {\n      background: '#4198EE',\n      bottom: 20,\n      height: '35px',\n      position: 'fixed',\n      right: 49,\n      width: 'fit-content',\n      zIndex: 99999\n    },\n    variant: \"extended\",\n    children: context != null && context.isShowKeyEnabled ? 'show translation' : 'Show keys'\n  });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _process$env$NODE_ENV, _ShowHideResouceKey;\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport Cookies from 'js-cookie';\nimport { ImLocalizationService } from '@im/localization';\nimport { localizationContext } from './localizationContext';\nimport { ShowHideResouceKey } from './editTranslate/showHideResouceKey';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nvar IMO_CULTURE_COOKIE = 'ENDEAVOUR_USER_CULTURE_COOKIE';\nvar IMO_CURRENCY_COOKIE = 'ResellerCurrency';\nvar XVANTAGE_CULTURE_COOKIE = 'XVANTAGE_CULTURE_COOKIE';\nvar XVANTAGE_CURRENCY_COOKIE = 'XVANTAGE_CURRENCY_COOKIE';\nvar isEditingEnabled = ((_process$env$NODE_ENV = process.env.NODE_ENV) == null ? void 0 : _process$env$NODE_ENV.startsWith('staging')) === true && (localStorage.getItem('enableTranslationEditing') || 'false') === 'true';\nexport function LocalizationProvider(props) {\n  var apiHeaders = props.apiHeaders,\n    appId = props.appId,\n    children = props.children,\n    defaultLocale = props.defaultLocale,\n    preloadResources = props.preloadResources,\n    showLogs = props.showLogs,\n    supportedLocales = props.supportedLocales,\n    url = props.url,\n    useApi = props.useApi;\n\n  //differentiate cookies between apps with the same origin\n  var suffix = appId === 'cep' ? '' : \"_\".concat(appId.toUpperCase());\n  var savedLocale = Cookies.get(XVANTAGE_CULTURE_COOKIE + suffix) || '';\n  var savedCurrency = Cookies.get(XVANTAGE_CURRENCY_COOKIE + suffix);\n  var _useState = useState(savedLocale),\n    _useState2 = _slicedToArray(_useState, 2),\n    locale = _useState2[0],\n    setLocaleState = _useState2[1];\n  var _useState3 = useState(savedCurrency),\n    _useState4 = _slicedToArray(_useState3, 2),\n    currencyCode = _useState4[0],\n    setCurrencyCodeState = _useState4[1];\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    showKey = _useState6[0],\n    setShowKey = _useState6[1];\n  var _useState7 = useState(undefined),\n    _useState8 = _slicedToArray(_useState7, 2),\n    context = _useState8[0],\n    setContext = _useState8[1];\n  var setLocale = useCallback(function (newLocale) {\n    setLocaleState(newLocale);\n    Cookies.set(IMO_CULTURE_COOKIE + suffix, newLocale);\n    Cookies.set(XVANTAGE_CULTURE_COOKIE + suffix, newLocale);\n  }, [setLocaleState, suffix]);\n  useEffect(function () {\n    if (!defaultLocale || supportedLocales.length === 0) {\n      return;\n    }\n    if (!supportedLocales.includes(locale)) {\n      setLocale(defaultLocale);\n    }\n  }, [locale, defaultLocale, supportedLocales, setLocale]);\n  var localizationService = useMemo(function () {\n    if (!url || !locale) {\n      return;\n    }\n    var appIdMap = {\n      cep: 'IMCEP',\n      x4a: 'IMX4A',\n      x4v: 'IMX4V'\n    };\n    return new ImLocalizationService({\n      currencyCode: currencyCode,\n      fallbackLocale: 'en-us',\n      preloadResources: preloadResources,\n      resourceLoader: {\n        appName: appIdMap[appId],\n        // future maybe: buildVars.APP_NAME\n        headers: apiHeaders,\n        isEditingEnabled: isEditingEnabled,\n        showLogs: showLogs,\n        url: url,\n        useApi: useApi\n      },\n      useLocale: locale\n    });\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [locale, url]);\n  //creating new instance of ImLocalizationService is an expensive operation\n  //and should depend only on locale and url.\n\n  var setCurrencyCode = useCallback(function (newCode) {\n    if (localizationService) localizationService.updateCurrency(newCode);\n    Cookies.set(IMO_CURRENCY_COOKIE + suffix, newCode);\n    Cookies.set(XVANTAGE_CURRENCY_COOKIE + suffix, newCode);\n    setCurrencyCodeState(newCode);\n  }, [localizationService, suffix]);\n  var showHideKey = useCallback(function (show) {\n    setShowKey(show);\n  }, []);\n  /**\n   * resourcesLoadedMap\n   */\n  var _useState9 = useState(0),\n    _useState10 = _slicedToArray(_useState9, 2),\n    resourcesCount = _useState10[0],\n    setResourcesCount = _useState10[1];\n  var resourcesLoadedMapRef = useRef({});\n\n  // clear resourcesLoadedMap when locale changed\n  useEffect(function () {\n    resourcesLoadedMapRef.current = {};\n  }, [locale]);\n  var resourceIsLoaded = useCallback(function (resource) {\n    return resourcesLoadedMapRef.current[resource];\n  }, []);\n  var resourceSetIsLoaded = useCallback(function (resource, loaded) {\n    var prevState = resourcesLoadedMapRef.current[resource];\n    if (prevState === undefined || loaded) {\n      resourcesLoadedMapRef.current[resource] = loaded;\n    }\n    if (loaded && prevState !== loaded) {\n      setResourcesCount(function (c) {\n        return c + 1;\n      });\n      // console.log('resourceSetIsLoaded', resource);\n    }\n  }, []);\n  var _useState11 = useState(0),\n    _useState12 = _slicedToArray(_useState11, 2),\n    resourcesDelayedCount = _useState12[0],\n    setResourcesDelayedCount = _useState12[1];\n  useEffect(function () {\n    var isActive = true;\n    var id = setTimeout(function () {\n      if (isActive) {\n        setResourcesDelayedCount(resourcesCount);\n      }\n    }, 200);\n    return function () {\n      isActive = false;\n      clearTimeout(id);\n    };\n  }, [resourcesCount, setResourcesDelayedCount]);\n  useEffect(function () {\n    if (isEditingEnabled) {\n      window.addEventListener('contextmenu', function (e) {\n        return e.preventDefault();\n      });\n      var handleRightClickEvent = function handleRightClickEvent(evt) {\n        if (evt.which === 3 && evt.detail === 2) {\n          evt.preventDefault();\n          if (context) setShowKey(!context.isShowKeyEnabled);\n        }\n      };\n      window.addEventListener('mouseup', handleRightClickEvent);\n      return function () {\n        window.removeEventListener('mouseup', handleRightClickEvent);\n      };\n    }\n  }, [context, setShowKey]);\n\n  /**\n   * create context\n   */\n  useEffect(function () {\n    if (!localizationService) {\n      return;\n    }\n    setContext({\n      isEditingEnabled: isEditingEnabled,\n      isShowKeyEnabled: showKey,\n      locale: locale,\n      localizationService: localizationService,\n      resourceIsLoaded: resourceIsLoaded,\n      resourceSetIsLoaded: resourceSetIsLoaded,\n      resourcesCount: resourcesDelayedCount,\n      setCurrencyCode: setCurrencyCode,\n      setLocale: setLocale,\n      showHideKey: showHideKey,\n      showLogs: showLogs,\n      supportedLocales: supportedLocales\n    });\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [localizationService, currencyCode, resourcesDelayedCount, showKey]);\n  //If locale changes, then localizationService would also change\n  //so dependency on locale is not required.\n\n  if (!context) {\n    return null;\n  }\n  var Provider = localizationContext.Provider;\n  return /*#__PURE__*/_jsxs(Provider, {\n    value: context,\n    children: [children, isEditingEnabled && (_ShowHideResouceKey || (_ShowHideResouceKey = /*#__PURE__*/_jsx(ShowHideResouceKey, {})))]\n  });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport React, { useContext, useEffect, useState } from 'react';\nimport parse from 'html-react-parser';\nimport { localizationContext } from './localizationContext';\nimport { Fragment as _Fragment, jsx as _jsx } from \"react/jsx-runtime\";\nexport function Translate(props) {\n  var params = props.params,\n    _props$paramsWithDang = props.paramsWithDangerousHtml,\n    paramsWithDangerousHtml = _props$paramsWithDang === void 0 ? false : _props$paramsWithDang,\n    text = props.text;\n  var context = useContext(localizationContext);\n  var _useState = useState(''),\n    _useState2 = _slicedToArray(_useState, 2),\n    translated = _useState2[0],\n    setTranslated = _useState2[1];\n  useEffect(function () {\n    var isActive = true;\n    if (context) {\n      if (text.indexOf('.') < 1) {\n        if (context.showLogs) console.warn(\"Invalid translate key '\".concat(text, \"'\"));\n        setTranslated(text);\n      } else {\n        context.localizationService.translate(text, {\n          interpolateParams: params\n        }).then(function (res) {\n          if (isActive) {\n            setTranslated(res);\n          }\n        })[\"catch\"]();\n      }\n    }\n    return function () {\n      isActive = false;\n    };\n  }, [context, params, text]);\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: paramsWithDangerousHtml ? parse(translated) : translated\n  });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nvar _h, _strong, _br, _strong2, _Button, _Button2;\nimport React, { useRef } from 'react';\nimport { styled } from '@mui/material/styles';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport parse from 'html-react-parser';\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nexport function EditTranslateModal(props) {\n  var clearErrorMessage = props.clearErrorMessage,\n    errorMessage = props.errorMessage,\n    onClose = props.onClose,\n    onPreviewChange = props.onPreviewChange,\n    onRaiseRequestChange = props.onRaiseRequestChange,\n    onResetHandleChange = props.onResetHandleChange,\n    onSaveHandleChange = props.onSaveHandleChange,\n    open = props.open,\n    showPleaseWaitLabel = props.showPleaseWaitLabel,\n    showPleaseWaitLabelOnSave = props.showPleaseWaitLabelOnSave,\n    showRequestButton = props.showRequestButton,\n    translationKey = props.translationKey,\n    translationValue = props.translationValue,\n    value = props.value;\n  var ref = useRef(null);\n  return /*#__PURE__*/_jsx(Dialog, {\n    PaperProps: {\n      onClick: function onClick(e) {\n        return e.stopPropagation();\n      }\n    },\n    \"data-html2canvas-ignore\": \"true\",\n    onClose: onClose,\n    open: open,\n    children: /*#__PURE__*/_jsxs(Root, {\n      children: [_h || (_h = /*#__PURE__*/_jsx(\"h2\", {\n        children: \"Edit translation\"\n      })), /*#__PURE__*/_jsxs(\"p\", {\n        children: [_strong || (_strong = /*#__PURE__*/_jsx(\"strong\", {\n          children: \"Key\"\n        })), \": \", translationKey, _br || (_br = /*#__PURE__*/_jsx(\"br\", {})), _strong2 || (_strong2 = /*#__PURE__*/_jsx(\"strong\", {\n          children: \"Value\"\n        })), \": \", translationValue]\n      }), /*#__PURE__*/_jsx(\"textarea\", {\n        defaultValue: value,\n        onChange: clearErrorMessage,\n        ref: ref\n      }), /*#__PURE__*/_jsxs(Stack, {\n        direction: \"row\",\n        spacing: 2,\n        children: [/*#__PURE__*/_jsx(Button, {\n          onClick: function onClick() {\n            return onPreviewChange(ref && ref.current ? ref.current.value : '');\n          },\n          variant: \"outlined\",\n          children: \"Preview\"\n        }), showPleaseWaitLabelOnSave ? _Button || (_Button = /*#__PURE__*/_jsx(Button, {\n          disabled: true,\n          children: \"Please wait\"\n        })) : /*#__PURE__*/_jsx(Button, {\n          onClick: function onClick() {\n            return onSaveHandleChange(ref && ref.current ? ref.current.value : '', translationKey);\n          },\n          variant: \"outlined\",\n          children: \"Save\"\n        }), showRequestButton && /*#__PURE__*/_jsx(_Fragment, {\n          children: showPleaseWaitLabel ? _Button2 || (_Button2 = /*#__PURE__*/_jsx(Button, {\n            disabled: true,\n            children: \"Please wait\"\n          })) : /*#__PURE__*/_jsx(Button, {\n            onClick: function onClick() {\n              return onRaiseRequestChange();\n            },\n            variant: \"outlined\",\n            children: \"Raise a request\"\n          })\n        }), /*#__PURE__*/_jsx(Button, {\n          color: \"error\",\n          onClick: function onClick() {\n            return onResetHandleChange();\n          },\n          variant: \"outlined\",\n          children: \"Reset\"\n        })]\n      }), errorMessage && /*#__PURE__*/_jsx(Typography, {\n        color: \"error\",\n        marginTop: 2,\n        variant: \"body1\",\n        children: parse(errorMessage)\n      })]\n    })\n  });\n}\nvar Root = styled('div')(function () {\n  return _defineProperty(_defineProperty(_defineProperty({}, \">h2\", {\n    margin: 0\n  }), \">textarea\", {\n    height: '100px',\n    marginBottom: '10px',\n    padding: '10px',\n    width: '500px'\n  }), \"padding\", '15px');\n});","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nexport var redirectToTranslationEditor = /*#__PURE__*/function () {\n  var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(body, url) {\n    var isApiResponseReceived;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          isApiResponseReceived = false;\n          _context2.next = 3;\n          return fetch('https://translations.corporate.ingrammicro.com/xvantage-request', {\n            body: JSON.stringify(body),\n            headers: {\n              Accept: 'application/json',\n              'Content-Type': 'application/json'\n            },\n            method: 'POST'\n          }).then( /*#__PURE__*/function () {\n            var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(response) {\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    isApiResponseReceived = true;\n                    if (!response.ok) {\n                      _context.next = 3;\n                      break;\n                    }\n                    return _context.abrupt(\"return\", response.json());\n                  case 3:\n                    _context.t0 = Error;\n                    _context.next = 6;\n                    return response.json();\n                  case 6:\n                    _context.t1 = _context.sent;\n                    throw new _context.t0(_context.t1);\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n            return function (_x3) {\n              return _ref2.apply(this, arguments);\n            };\n          }()).then(function (uniqueId) {\n            window.open(\"\".concat(url, \"/\").concat(uniqueId), '_blank');\n          })[\"catch\"](function (error) {\n            if (isApiResponseReceived) throw new Error(error.message);else throw new Error('Unable to connect to <a href=\"https://translations.corporate.ingrammicro.com/\" target=\"_blank\">Translation Tool</a>');\n          });\n        case 3:\n          return _context2.abrupt(\"return\", _context2.sent);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n  return function redirectToTranslationEditor(_x, _x2) {\n    return _ref.apply(this, arguments);\n  };\n}();","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/esm/asyncToGenerator\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\n/* eslint-disable no-nested-ternary */\nimport React, { useCallback, useContext, useEffect, useState, useRef, useMemo } from 'react';\nimport { styled } from '@mui/material/styles';\nimport { localizationContext } from '../localizationContext';\nimport { EditTranslateModal } from './EditTranslateModal';\nimport { redirectToTranslationEditor } from './api-customize-hooks';\nimport parse from 'html-react-parser';\nimport html2canvas from 'html2canvas';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function EditTranslate(props) {\n  var _ref2;\n  var params = props.params,\n    paramsWithDangerousHtml = props.paramsWithDangerousHtml,\n    text = props.text;\n  var context = useContext(localizationContext);\n  var _useState = useState(undefined),\n    _useState2 = _slicedToArray(_useState, 2),\n    translated = _useState2[0],\n    setTranslated = _useState2[1];\n  var _useState3 = useState(undefined),\n    _useState4 = _slicedToArray(_useState3, 2),\n    displayValue = _useState4[0],\n    setDisplayValue = _useState4[1];\n  var _useState5 = useState(false),\n    _useState6 = _slicedToArray(_useState5, 2),\n    open = _useState6[0],\n    setOpen = _useState6[1];\n  var _useState7 = useState(undefined),\n    _useState8 = _slicedToArray(_useState7, 2),\n    errorMessage = _useState8[0],\n    setErrorMessage = _useState8[1];\n  var _useState9 = useState(false),\n    _useState10 = _slicedToArray(_useState9, 2),\n    showPleaseWaitLabel = _useState10[0],\n    setShowPleaseWaitLabel = _useState10[1];\n  var _useState11 = useState(false),\n    _useState12 = _slicedToArray(_useState11, 2),\n    showPleaseWaitLabelOnSave = _useState12[0],\n    setShowPleaseWaitLabelOnSave = _useState12[1];\n  var _useState13 = useState(undefined),\n    _useState14 = _slicedToArray(_useState13, 2),\n    previewValue = _useState14[0],\n    setPreviewValue = _useState14[1];\n  var _useState15 = useState(undefined),\n    _useState16 = _slicedToArray(_useState15, 2),\n    displayPreviewValue = _useState16[0],\n    setDisplayPreviewValue = _useState16[1];\n  var selectedValue = useRef(null);\n  var convertStringToTranslation = useCallback(function (str) {\n    for (var key in params) {\n      str = str.replace(\"{{\".concat(key, \"}}\"), params[key]);\n    }\n    return str;\n  }, [params]);\n  useEffect(function () {\n    var isActive = true;\n    if (context) {\n      context.localizationService.translate(text, {\n        returnKeyIfNotFound: false\n      }).then(function (res) {\n        if (isActive && res) {\n          setTranslated(res);\n          if (params) res = convertStringToTranslation(res);\n          setDisplayValue(paramsWithDangerousHtml ? parse(res) : res);\n        }\n      })[\"catch\"]();\n    }\n    return function () {\n      isActive = false;\n    };\n  }, [context, text, params, convertStringToTranslation, paramsWithDangerousHtml]);\n  var handleClose = function handleClose() {\n    setErrorMessage(undefined);\n    setOpen(false);\n  };\n  var handleClick = function handleClick(e) {\n    e.preventDefault();\n    setShowPleaseWaitLabel(false);\n    setShowPleaseWaitLabelOnSave(false);\n    setOpen(true);\n  };\n  var onPreviewHandle = function onPreviewHandle(valueSelected) {\n    if (!valueSelected) {\n      setErrorMessage('Please enter translation to PREVIEW');\n      return;\n    }\n    var newDisplayTranslation = parse(params ? convertStringToTranslation(valueSelected) : valueSelected);\n    if (newDisplayTranslation === displayValue) {\n      setErrorMessage('Please modify the translation to PREVIEW');\n      return;\n    }\n    setPreviewValue(valueSelected);\n    setDisplayPreviewValue(newDisplayTranslation);\n    setOpen(false);\n  };\n  var onRaiseRequestHandle = /*#__PURE__*/function () {\n    var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n      var _selectedValue$curren, _selectedValue$curren2;\n      var rect, currentPosition, canvas, image;\n      return _regeneratorRuntime().wrap(function _callee$(_context) {\n        while (1) switch (_context.prev = _context.next) {\n          case 0:\n            selectedValue == null ? void 0 : (_selectedValue$curren = selectedValue.current) == null ? void 0 : _selectedValue$curren.classList.add('requested-translation');\n            setShowPleaseWaitLabel(true);\n            rect = document.body.getBoundingClientRect();\n            currentPosition = rect.top + window.scrollY;\n            _context.next = 6;\n            return html2canvas(document.body, {\n              height: window.innerHeight,\n              ignoreElements: function ignoreElements(element) {\n                if (element.tagName === 'NOSCRIPT' || element.id === 'showHideKeysFloatingBtn') {\n                  return true;\n                } else {\n                  return false;\n                }\n              },\n              onclone: function onclone(clonedDoc) {\n                var _clonedDoc$querySelec;\n                var modifiedSpans = clonedDoc.querySelectorAll('.modified-translation');\n                modifiedSpans.forEach(function (element) {\n                  var originalValue = element.getAttribute('data-original-value');\n                  if (originalValue) element.innerHTML = originalValue;\n                  element.classList.remove('modified-translation');\n                });\n                (_clonedDoc$querySelec = clonedDoc.querySelector('.requested-translation')) == null ? void 0 : _clonedDoc$querySelec.classList.add('hover');\n              },\n              width: window.innerWidth,\n              y: currentPosition\n            });\n          case 6:\n            canvas = _context.sent;\n            image = canvas.toDataURL('image/png', 1.0);\n            selectedValue == null ? void 0 : (_selectedValue$curren2 = selectedValue.current) == null ? void 0 : _selectedValue$curren2.classList.remove('requested-translation');\n            redirectToTranslationEditor({\n              App: context == null ? void 0 : context.localizationService.AppName,\n              Data: [{\n                ResourceKey: text,\n                value: image\n              }],\n              Locale: context == null ? void 0 : context.locale,\n              RequestType: 'Add'\n            }, \"https://translations.corporate.ingrammicro.com/Requests/Add\").then(function () {\n              setOpen(false);\n            })[\"catch\"](function (error) {\n              setErrorMessage(error.message);\n              setShowPleaseWaitLabel(false);\n            });\n          case 10:\n          case \"end\":\n            return _context.stop();\n        }\n      }, _callee);\n    }));\n    return function onRaiseRequestHandle() {\n      return _ref.apply(this, arguments);\n    };\n  }();\n  var onResetHandle = function onResetHandle() {\n    setPreviewValue(undefined);\n    setDisplayPreviewValue(undefined);\n    setErrorMessage(undefined);\n    setOpen(false);\n  };\n  var onSaveHandleClick = function onSaveHandleClick(valueSaved, translationKey) {\n    if (!valueSaved) {\n      setErrorMessage('Please enter translation to SAVE');\n      return;\n    }\n    var newDisplayTranslation = parse(params ? convertStringToTranslation(valueSaved) : valueSaved);\n    if (newDisplayTranslation === displayValue) {\n      setErrorMessage('Please modify the translation to SAVE');\n      return;\n    }\n    setShowPleaseWaitLabelOnSave(true);\n    redirectToTranslationEditor({\n      App: context == null ? void 0 : context.localizationService.AppName,\n      Data: [{\n        ResourceKey: text,\n        value: valueSaved\n      }],\n      Locale: context == null ? void 0 : context.locale,\n      RequestType: 'Edit'\n    }, \"https://translations.corporate.ingrammicro.com/Translations/Add\").then(function () {\n      setPreviewValue(valueSaved);\n      setDisplayPreviewValue(newDisplayTranslation);\n      setOpen(false);\n    })[\"catch\"](function (error) {\n      setErrorMessage(error.message);\n      setShowPleaseWaitLabelOnSave(false);\n    });\n  };\n  var clearErrorMessage = function clearErrorMessage() {\n    setErrorMessage(undefined);\n  };\n  var isTranslationModified = useMemo(function () {\n    if (displayValue && displayPreviewValue && displayPreviewValue !== displayValue) {\n      return true;\n    } else {\n      return false;\n    }\n  }, [displayValue, displayPreviewValue]);\n  return /*#__PURE__*/_jsxs(_Fragment, {\n    children: [translated ? /*#__PURE__*/_jsx(StyleSpan, {\n      className: isTranslationModified ? 'modified-translation' : '',\n      \"data-original-value\": params ? convertStringToTranslation(translated) : translated,\n      onContextMenu: function onContextMenu(e) {\n        return handleClick(e);\n      },\n      ref: selectedValue,\n      children: context != null && context.isShowKeyEnabled ? text : previewValue ? displayPreviewValue : displayValue\n    }) : text, /*#__PURE__*/_jsx(EditTranslateModal, {\n      clearErrorMessage: clearErrorMessage,\n      errorMessage: errorMessage,\n      onClose: handleClose,\n      onPreviewChange: onPreviewHandle,\n      onRaiseRequestChange: onRaiseRequestHandle,\n      onResetHandleChange: onResetHandle,\n      onSaveHandleChange: onSaveHandleClick,\n      open: open,\n      showPleaseWaitLabel: showPleaseWaitLabel,\n      showPleaseWaitLabelOnSave: showPleaseWaitLabelOnSave,\n      showRequestButton: context !== undefined && !context.locale.toLowerCase().startsWith('en-'),\n      translationKey: text,\n      translationValue: displayValue,\n      value: (_ref2 = previewValue != null ? previewValue : translated) != null ? _ref2 : ''\n    })]\n  });\n}\nvar StyleSpan = styled('span')(function () {\n  return _defineProperty(_defineProperty(_defineProperty({}, \"&.hover\", {\n    background: '#ffeb3b !important'\n  }), \"&.modified-translation\", {\n    background: '#e3fffa',\n    color: '#18846f'\n  }), \":hover\", {\n    background: '#ffeb3b !important'\n  });\n});","import { useContext } from 'react';\nimport { parseISO } from 'date-fns';\nimport { localizationContext } from './localizationContext';\nimport { Translate } from './Translate';\nimport { EditTranslate } from './editTranslate/EditTranslate';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var useLocalizationContext = function useLocalizationContext() {\n  var context = useContext(localizationContext);\n  if (!context) {\n    throw new Error('imLocalizationContext value is undefined. Make sure you use the ImLocalizationProvider before using the context.');\n  }\n  return context;\n};\nexport var useLocalization = function useLocalization() {\n  var context = useLocalizationContext();\n  var formatDate = function formatDate(date) {\n    var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'short';\n    if (!date) {\n      return '';\n    }\n    var dateToFormat = typeof date === 'string' ? parseISO(date) : date;\n    return context.localizationService.formatDate(dateToFormat, {\n      dateFormat: format\n    });\n  };\n  var formatCurrency = function formatCurrency(amount, currencyCode) {\n    return currencyCode ? context.localizationService.formatCurrencyByCode(amount, currencyCode) : context.localizationService.formatCurrency(amount);\n  };\n  var formatToShortCurrency = function formatToShortCurrency(amount, currencyCode) {\n    return currencyCode ? context.localizationService.formatToShortCurrencyByCode(amount, currencyCode) : context.localizationService.formatToShortCurrency(amount);\n  };\n  var translate = function translate(key, params, paramsWithDangerousHtml) {\n    return context.isEditingEnabled ? /*#__PURE__*/_jsx(EditTranslate, {\n      params: params,\n      paramsWithDangerousHtml: paramsWithDangerousHtml,\n      text: key\n    }) : /*#__PURE__*/_jsx(Translate, {\n      params: params,\n      paramsWithDangerousHtml: paramsWithDangerousHtml,\n      text: key\n    });\n  };\n  return {\n    formatCurrency: formatCurrency,\n    formatDate: formatDate,\n    formatToShortCurrency: formatToShortCurrency,\n    translate: translate\n  };\n};","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useCallback, useMemo } from 'react';\nimport { useLocalizationContext } from './useLocalization';\nexport var useTranslate = function useTranslate() {\n  var _useLocalizationConte = useLocalizationContext(),\n    isEditingEnabled = _useLocalizationConte.isEditingEnabled,\n    isShowKeyEnabled = _useLocalizationConte.isShowKeyEnabled,\n    localizationService = _useLocalizationConte.localizationService,\n    resourceIsLoaded = _useLocalizationConte.resourceIsLoaded,\n    resourceSetIsLoaded = _useLocalizationConte.resourceSetIsLoaded,\n    showLogs = _useLocalizationConte.showLogs;\n  var doNotTranslate = useCallback(function (key, params) {\n    return key;\n  }, []);\n  var translate = useCallback(function (key, params) {\n    if (key.indexOf('.') < 1) {\n      if (showLogs) console.warn(\"Invalid translate key '\".concat(key, \"'\"));\n      return key;\n    }\n    var translated = localizationService.translateInstant(key, {\n      interpolateParams: params,\n      returnKeyIfNotFound: false\n    });\n    if (translated === undefined) {\n      // resource was not yet loaded\n      var _key$split = key.split('.'),\n        _key$split2 = _slicedToArray(_key$split, 1),\n        resource = _key$split2[0];\n      var status = resourceIsLoaded(resource);\n      if (status === undefined) {\n        resourceSetIsLoaded(resource, false);\n        localizationService.translate(key, {\n          interpolateParams: params\n        }).then(function (res) {\n          resourceSetIsLoaded(resource, true);\n        })[\"catch\"](function (e) {\n          if (showLogs) console.warn('translate', e);\n        });\n      } else if (status) {\n        // resource was loaded but key not found\n        return key;\n      }\n    }\n    return translated || '';\n  }, [localizationService, resourceIsLoaded, resourceSetIsLoaded, showLogs]);\n  return useMemo(function () {\n    return isEditingEnabled && isShowKeyEnabled ? doNotTranslate : translate;\n  }, [doNotTranslate, isEditingEnabled, isShowKeyEnabled, translate]);\n};","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n  return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-describedby\", \"aria-labelledby\", \"BackdropComponent\", \"BackdropProps\", \"children\", \"className\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClose\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport capitalize from '../utils/capitalize';\nimport Modal from '../Modal';\nimport Fade from '../Fade';\nimport Paper from '../Paper';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport dialogClasses, { getDialogUtilityClass } from './dialogClasses';\nimport DialogContext from './DialogContext';\nimport Backdrop from '../Backdrop';\nimport useTheme from '../styles/useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n  name: 'MuiDialog',\n  slot: 'Backdrop',\n  overrides: (props, styles) => styles.backdrop\n})({\n  // Improve scrollable dialog support.\n  zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    scroll,\n    maxWidth,\n    fullWidth,\n    fullScreen\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    container: ['container', `scroll${capitalize(scroll)}`],\n    paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n  };\n  return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n  name: 'MuiDialog',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  '@media print': {\n    // Use !important to override the Modal inline-style.\n    position: 'absolute !important'\n  }\n});\nconst DialogContainer = styled('div', {\n  name: 'MuiDialog',\n  slot: 'Container',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  height: '100%',\n  '@media print': {\n    height: 'auto'\n  },\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center'\n}, ownerState.scroll === 'body' && {\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  textAlign: 'center',\n  '&::after': {\n    content: '\"\"',\n    display: 'inline-block',\n    verticalAlign: 'middle',\n    height: '100%',\n    width: '0'\n  }\n}));\nconst DialogPaper = styled(Paper, {\n  name: 'MuiDialog',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 32,\n  position: 'relative',\n  overflowY: 'auto',\n  // Fix IE11 issue, to remove at some point.\n  '@media print': {\n    overflowY: 'visible',\n    boxShadow: 'none'\n  }\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  flexDirection: 'column',\n  maxHeight: 'calc(100% - 64px)'\n}, ownerState.scroll === 'body' && {\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  textAlign: 'left' // 'initial' doesn't work on IE11\n}, !ownerState.maxWidth && {\n  maxWidth: 'calc(100% - 64px)'\n}, ownerState.maxWidth === 'xs' && {\n  maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.maxWidth && ownerState.maxWidth !== 'xs' && {\n  maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(theme.breakpoints.values[ownerState.maxWidth] + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.fullWidth && {\n  width: 'calc(100% - 64px)'\n}, ownerState.fullScreen && {\n  margin: 0,\n  width: '100%',\n  maxWidth: '100%',\n  height: '100%',\n  maxHeight: 'none',\n  borderRadius: 0,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    margin: 0,\n    maxWidth: '100%'\n  }\n}));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDialog'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-labelledby': ariaLabelledbyProp,\n      BackdropComponent,\n      BackdropProps,\n      children,\n      className,\n      disableEscapeKeyDown = false,\n      fullScreen = false,\n      fullWidth = false,\n      maxWidth = 'sm',\n      onBackdropClick,\n      onClose,\n      open,\n      PaperComponent = Paper,\n      PaperProps = {},\n      scroll = 'paper',\n      TransitionComponent = Fade,\n      transitionDuration = defaultTransitionDuration,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disableEscapeKeyDown,\n    fullScreen,\n    fullWidth,\n    maxWidth,\n    scroll\n  });\n  const classes = useUtilityClasses(ownerState);\n  const backdropClick = React.useRef();\n  const handleMouseDown = event => {\n    // We don't want to close the dialog when clicking the dialog content.\n    // Make sure the event starts and ends on the same DOM element.\n    backdropClick.current = event.target === event.currentTarget;\n  };\n  const handleBackdropClick = event => {\n    // Ignore the events not coming from the \"backdrop\".\n    if (!backdropClick.current) {\n      return;\n    }\n    backdropClick.current = null;\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const ariaLabelledby = useId(ariaLabelledbyProp);\n  const dialogContextValue = React.useMemo(() => {\n    return {\n      titleId: ariaLabelledby\n    };\n  }, [ariaLabelledby]);\n  return /*#__PURE__*/_jsx(DialogRoot, _extends({\n    className: clsx(classes.root, className),\n    closeAfterTransition: true,\n    components: {\n      Backdrop: DialogBackdrop\n    },\n    componentsProps: {\n      backdrop: _extends({\n        transitionDuration,\n        as: BackdropComponent\n      }, BackdropProps)\n    },\n    disableEscapeKeyDown: disableEscapeKeyDown,\n    onClose: onClose,\n    open: open,\n    ref: ref,\n    onClick: handleBackdropClick,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      timeout: transitionDuration,\n      role: \"presentation\"\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(DialogContainer, {\n        className: clsx(classes.container),\n        onMouseDown: handleMouseDown,\n        ownerState: ownerState,\n        children: /*#__PURE__*/_jsx(DialogPaper, _extends({\n          as: PaperComponent,\n          elevation: 24,\n          role: \"dialog\",\n          \"aria-describedby\": ariaDescribedby,\n          \"aria-labelledby\": ariaLabelledby\n        }, PaperProps, {\n          className: clsx(classes.paper, PaperProps.className),\n          ownerState: ownerState,\n          children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n            value: dialogContextValue,\n            children: children\n          })\n        }))\n      })\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The id(s) of the element(s) that describe the dialog.\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * The id(s) of the element(s) that label the dialog.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * Dialog children, usually the included sub-components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * If `true`, the dialog is full-screen.\n   * @default false\n   */\n  fullScreen: PropTypes.bool,\n  /**\n   * If `true`, the dialog stretches to `maxWidth`.\n   *\n   * Notice that the dialog width grow is limited by the default margin.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Determine the max-width of the dialog.\n   * The dialog width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'sm'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The component used to render the body of the dialog.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Determine the container for scrolling the dialog.\n   * @default 'paper'\n   */\n  scroll: PropTypes.oneOf(['body', 'paper']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n  createStyledComponent: styled('div', {\n    name: 'MuiStack',\n    slot: 'Root',\n    overridesResolver: (props, styles) => styles.root\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiStack'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Defines the `flex-direction` style property.\n   * It is applied for all screen sizes.\n   * @default 'column'\n   */\n  direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n  /**\n   * Add an element between each child.\n   */\n  divider: PropTypes.node,\n  /**\n   * Defines the space between immediate children.\n   * @default 0\n   */\n  spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n  /**\n   * The system prop, which allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * If `true`, the CSS flexbox `gap` is used instead of applying `margin` to children.\n   *\n   * While CSS `gap` removes the [known limitations](https://mui.com/joy-ui/react-stack/#limitations),\n   * it is not fully supported in some browsers. We recommend checking https://caniuse.com/?search=flex%20gap before using this flag.\n   *\n   * To enable this flag globally, follow the [theme's default props](https://mui.com/material-ui/customization/theme-components/#default-props) configuration.\n   * @default false\n   */\n  useFlexGap: PropTypes.bool\n} : void 0;\nexport default Stack;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n    if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n        if (ar || !(i in from)) {\r\n            if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n            ar[i] = from[i];\r\n        }\r\n    }\r\n    return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n    o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n    __setModuleDefault(result, mod);\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n    if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n    if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n    return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n","import {Context} from '../../core/context';\n\nexport class Bounds {\n    constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n    add(x: number, y: number, w: number, h: number): Bounds {\n        return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n    }\n\n    static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n        return new Bounds(\n            clientRect.left + context.windowBounds.left,\n            clientRect.top + context.windowBounds.top,\n            clientRect.width,\n            clientRect.height\n        );\n    }\n\n    static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n        const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n        return domRect\n            ? new Bounds(\n                  domRect.left + context.windowBounds.left,\n                  domRect.top + context.windowBounds.top,\n                  domRect.width,\n                  domRect.height\n              )\n            : Bounds.EMPTY;\n    }\n\n    static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n    return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n    const body = document.body;\n    const documentElement = document.documentElement;\n\n    if (!body || !documentElement) {\n        throw new Error(`Unable to get document size`);\n    }\n    const width = Math.max(\n        Math.max(body.scrollWidth, documentElement.scrollWidth),\n        Math.max(body.offsetWidth, documentElement.offsetWidth),\n        Math.max(body.clientWidth, documentElement.clientWidth)\n    );\n\n    const height = Math.max(\n        Math.max(body.scrollHeight, documentElement.scrollHeight),\n        Math.max(body.offsetHeight, documentElement.offsetHeight),\n        Math.max(body.clientHeight, documentElement.clientHeight)\n    );\n\n    return new Bounds(0, 0, width, height);\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n","export const base64 =\n    'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n","'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; //  Cause a line break (after)\nconst CR = 2; //  Cause a line break (after), except between CR and LF\nconst LF = 3; //  Cause a line break (after)\nconst CM = 4; //  Prohibit a line break between the character and the preceding character\nconst NL = 5; //  Cause a line break (after)\nconst SG = 6; //  Do not occur in well-formed text\nconst WJ = 7; //  Prohibit line breaks before and after\nconst ZW = 8; //  Provide a break opportunity\nconst GL = 9; //  Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; //  Provide a line break opportunity before and after the character\nconst BA = 13; //  Generally provide a line break opportunity after the character\nconst BB = 14; //  Generally provide a line break opportunity before the character\nconst HY = 15; //  Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; //   Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; //  Prohibit line breaks before\nconst CP = 18; //  Prohibit line breaks before\nconst EX = 19; //  Prohibit line breaks before\nconst IN = 20; //  Allow only indirect line breaks between pairs\nconst NS = 21; //  Allow only indirect line breaks before\nconst OP = 22; //  Prohibit line breaks after\nconst QU = 23; //  Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; //  Prevent breaks after any and before numeric\nconst NU = 25; //  Form numeric expressions for line breaking purposes\nconst PO = 26; //  Do not break following a numeric expression\nconst PR = 27; //  Do not break in front of a numeric expression\nconst SY = 28; //  Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; //  Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; //  Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; //  Treat as NS or ID for strict or normal breaking.\nconst EB = 32; //  Do not break from following Emoji Modifier\nconst EM = 33; //  Do not break from preceding Emoji Base\nconst H2 = 34; //  Form Korean syllable blocks\nconst H3 = 35; //  Form Korean syllable blocks\nconst HL = 36; //  Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; //  Break before or after; except in some numeric context\nconst JL = 38; //  Form Korean syllable blocks\nconst JV = 39; //  Form Korean syllable blocks\nconst JT = 40; //  Form Korean syllable blocks\nconst RI = 41; //  Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; //  Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; //  Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n    BK,\n    CR,\n    LF,\n    CM,\n    NL,\n    SG,\n    WJ,\n    ZW,\n    GL,\n    SP,\n    ZWJ,\n    B2,\n    BA,\n    BB,\n    HY,\n    CB,\n    CL,\n    CP,\n    EX,\n    IN,\n    NS,\n    OP,\n    QU,\n    IS,\n    NU,\n    PO,\n    PR,\n    SY,\n    AI,\n    AL,\n    CJ,\n    EB,\n    EM,\n    H2,\n    H3,\n    HL,\n    ID,\n    JL,\n    JV,\n    JT,\n    RI,\n    SA,\n    XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n    codePoints: number[],\n    lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n    const types: number[] = [];\n    const indices: number[] = [];\n    const categories: boolean[] = [];\n    codePoints.forEach((codePoint, index) => {\n        let classType = UnicodeTrie.get(codePoint);\n        if (classType > LETTER_NUMBER_MODIFIER) {\n            categories.push(true);\n            classType -= LETTER_NUMBER_MODIFIER;\n        } else {\n            categories.push(false);\n        }\n\n        if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n            // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n            if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n                indices.push(index);\n                return types.push(CB);\n            }\n        }\n\n        if (classType === CM || classType === ZWJ) {\n            // LB10 Treat any remaining combining mark or ZWJ as AL.\n            if (index === 0) {\n                indices.push(index);\n                return types.push(AL);\n            }\n\n            // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n            // the base character in all of the following rules. Treat ZWJ as if it were CM.\n            const prev = types[index - 1];\n            if (LINE_BREAKS.indexOf(prev) === -1) {\n                indices.push(indices[index - 1]);\n                return types.push(prev);\n            }\n            indices.push(index);\n            return types.push(AL);\n        }\n\n        indices.push(index);\n\n        if (classType === CJ) {\n            return types.push(lineBreak === 'strict' ? NS : ID);\n        }\n\n        if (classType === SA) {\n            return types.push(AL);\n        }\n\n        if (classType === AI) {\n            return types.push(AL);\n        }\n\n        // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n        // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n        // to take into account the actual line breaking properties for these characters.\n        if (classType === XX) {\n            if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n                return types.push(ID);\n            } else {\n                return types.push(AL);\n            }\n        }\n\n        types.push(classType);\n    });\n\n    return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n    a: number[] | number,\n    b: number,\n    currentIndex: number,\n    classTypes: number[]\n): boolean => {\n    const current = classTypes[currentIndex];\n    if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n        let i = currentIndex;\n        while (i <= classTypes.length) {\n            i++;\n            let next = classTypes[i];\n\n            if (next === b) {\n                return true;\n            }\n\n            if (next !== SP) {\n                break;\n            }\n        }\n    }\n\n    if (current === SP) {\n        let i = currentIndex;\n\n        while (i > 0) {\n            i--;\n            const prev = classTypes[i];\n\n            if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n                let n = currentIndex;\n                while (n <= classTypes.length) {\n                    n++;\n                    let next = classTypes[n];\n\n                    if (next === b) {\n                        return true;\n                    }\n\n                    if (next !== SP) {\n                        break;\n                    }\n                }\n            }\n\n            if (prev !== SP) {\n                break;\n            }\n        }\n    }\n    return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n    let i = currentIndex;\n    while (i >= 0) {\n        let type = classTypes[i];\n        if (type === SP) {\n            i--;\n        } else {\n            return type;\n        }\n    }\n    return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n    codePoints: number[],\n    classTypes: number[],\n    indicies: number[],\n    index: number,\n    forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n    if (indicies[index] === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let currentIndex = index - 1;\n    if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    let beforeIndex = currentIndex - 1;\n    let afterIndex = currentIndex + 1;\n    let current = classTypes[currentIndex];\n\n    // LB4 Always break after hard line breaks.\n    // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n    let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n    let next = classTypes[afterIndex];\n\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n        return BREAK_MANDATORY;\n    }\n\n    // LB6 Do not break before hard line breaks.\n    if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB7 Do not break before spaces or zero width space.\n    if (SPACE.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB8a Do not break after a zero width joiner.\n    if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // zwj emojis\n    if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB11 Do not break before or after Word joiner and related characters.\n    if (current === WJ || next === WJ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12 Do not break after NBSP and related characters.\n    if (current === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n    if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n    if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB14 Do not break after ‘[’, even after spaces.\n    if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB15 Do not break within ‘”[’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB17 Do not break within ‘——’, even with intervening spaces.\n    if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB18 Break after spaces.\n    if (current === SP) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n    if (current === QU || next === QU) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB20 Break before and after unresolved CB.\n    if (next === CB || current === CB) {\n        return BREAK_ALLOWED;\n    }\n\n    // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n    if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21a Don't break after Hebrew + Hyphen.\n    if (before === HL && HYPHEN.indexOf(current) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB21b Don’t break between Solidus and Hebrew letters.\n    if (current === SY && next === HL) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB22 Do not break before ellipsis.\n    if (next === IN) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23 Do not break between digits and letters.\n    if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n    if (\n        (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n        ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n    if (\n        (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n        (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB25 Do not break between the following pairs of classes relevant to numbers:\n    if (\n        // (PR | PO) × ( OP | HY )? NU\n        ([PR, PO].indexOf(current) !== -1 &&\n            (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n        // ( OP | HY ) × NU\n        ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n        // NU ×\t(NU | SY | IS)\n        (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n    if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n        let prevIndex = currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n    if ([PR, PO].indexOf(next) !== -1) {\n        let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n        while (prevIndex >= 0) {\n            let type = classTypes[prevIndex];\n            if (type === NU) {\n                return BREAK_NOT_ALLOWED;\n            } else if ([SY, IS].indexOf(type) !== -1) {\n                prevIndex--;\n            } else {\n                break;\n            }\n        }\n    }\n\n    // LB26 Do not break a Korean syllable.\n    if (\n        (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n        ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n        ([JT, H3].indexOf(current) !== -1 && next === JT)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB27 Treat a Korean Syllable Block the same as ID.\n    if (\n        (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n        (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB28 Do not break between alphabetics (“at”).\n    if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n    if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n    if (\n        (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n            next === OP &&\n            ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n        (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n    ) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n    // indicators preceding the position of the break.\n    if (current === RI && next === RI) {\n        let i = indicies[currentIndex];\n        let count = 1;\n        while (i > 0) {\n            i--;\n            if (classTypes[i] === RI) {\n                count++;\n            } else {\n                break;\n            }\n        }\n        if (count % 2 !== 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // LB30b Do not break between an emoji base and an emoji modifier.\n    if (current === EB && next === EM) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // LB2 Never break at the start of text.\n    if (index === 0) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // LB3 Always break at the end of text.\n    if (index >= codePoints.length) {\n        return BREAK_MANDATORY;\n    }\n\n    const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n    return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n    lineBreak?: LINE_BREAK;\n    wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n    if (!options) {\n        options = {lineBreak: 'normal', wordBreak: 'normal'};\n    }\n    let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n    if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n        classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n    }\n\n    const forbiddenBreakpoints =\n        options.wordBreak === 'keep-all'\n            ? isLetterNumber.map((letterNumber, i) => {\n                  return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n              })\n            : undefined;\n\n    return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n    const codePoints = toCodePoints(str);\n    let output = BREAK_NOT_ALLOWED;\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n    codePoints.forEach((codePoint, i) => {\n        output +=\n            fromCodePoint(codePoint) +\n            (i >= codePoints.length - 1\n                ? BREAK_MANDATORY\n                : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n    });\n\n    return output;\n};\n\nclass Break {\n    private readonly codePoints: number[];\n    readonly required: boolean;\n    readonly start: number;\n    readonly end: number;\n\n    constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n        this.codePoints = codePoints;\n        this.required = lineBreak === BREAK_MANDATORY;\n        this.start = start;\n        this.end = end;\n    }\n\n    slice(): string {\n        return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n    }\n}\n\nexport type LineBreak =\n    | {\n          done: true;\n          value: null;\n      }\n    | {\n          done: false;\n          value: Break;\n      };\n\ninterface ILineBreakIterator {\n    next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n    const codePoints = toCodePoints(str);\n    const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n    const length = codePoints.length;\n    let lastEnd = 0;\n    let nextIndex = 0;\n\n    return {\n        next: () => {\n            if (nextIndex >= length) {\n                return {done: true, value: null};\n            }\n            let lineBreak = BREAK_NOT_ALLOWED;\n            while (\n                nextIndex < length &&\n                (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n                    BREAK_NOT_ALLOWED\n            ) {}\n\n            if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n                const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n                lastEnd = nextIndex;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n        },\n    };\n};\n","// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n    STRING_TOKEN,\n    BAD_STRING_TOKEN,\n    LEFT_PARENTHESIS_TOKEN,\n    RIGHT_PARENTHESIS_TOKEN,\n    COMMA_TOKEN,\n    HASH_TOKEN,\n    DELIM_TOKEN,\n    AT_KEYWORD_TOKEN,\n    PREFIX_MATCH_TOKEN,\n    DASH_MATCH_TOKEN,\n    INCLUDE_MATCH_TOKEN,\n    LEFT_CURLY_BRACKET_TOKEN,\n    RIGHT_CURLY_BRACKET_TOKEN,\n    SUFFIX_MATCH_TOKEN,\n    SUBSTRING_MATCH_TOKEN,\n    DIMENSION_TOKEN,\n    PERCENTAGE_TOKEN,\n    NUMBER_TOKEN,\n    FUNCTION,\n    FUNCTION_TOKEN,\n    IDENT_TOKEN,\n    COLUMN_TOKEN,\n    URL_TOKEN,\n    BAD_URL_TOKEN,\n    CDC_TOKEN,\n    CDO_TOKEN,\n    COLON_TOKEN,\n    SEMICOLON_TOKEN,\n    LEFT_SQUARE_BRACKET_TOKEN,\n    RIGHT_SQUARE_BRACKET_TOKEN,\n    UNICODE_RANGE_TOKEN,\n    WHITESPACE_TOKEN,\n    EOF_TOKEN\n}\n\ninterface IToken {\n    type: TokenType;\n}\n\nexport interface Token extends IToken {\n    type:\n        | TokenType.BAD_URL_TOKEN\n        | TokenType.BAD_STRING_TOKEN\n        | TokenType.LEFT_PARENTHESIS_TOKEN\n        | TokenType.RIGHT_PARENTHESIS_TOKEN\n        | TokenType.COMMA_TOKEN\n        | TokenType.SUBSTRING_MATCH_TOKEN\n        | TokenType.PREFIX_MATCH_TOKEN\n        | TokenType.SUFFIX_MATCH_TOKEN\n        | TokenType.COLON_TOKEN\n        | TokenType.SEMICOLON_TOKEN\n        | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n        | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n        | TokenType.LEFT_CURLY_BRACKET_TOKEN\n        | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n        | TokenType.DASH_MATCH_TOKEN\n        | TokenType.INCLUDE_MATCH_TOKEN\n        | TokenType.COLUMN_TOKEN\n        | TokenType.WHITESPACE_TOKEN\n        | TokenType.CDC_TOKEN\n        | TokenType.CDO_TOKEN\n        | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n    type:\n        | TokenType.STRING_TOKEN\n        | TokenType.DELIM_TOKEN\n        | TokenType.FUNCTION_TOKEN\n        | TokenType.IDENT_TOKEN\n        | TokenType.URL_TOKEN\n        | TokenType.AT_KEYWORD_TOKEN;\n    value: string;\n}\n\nexport interface HashToken extends IToken {\n    type: TokenType.HASH_TOKEN;\n    flags: number;\n    value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n    type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n    flags: number;\n    number: number;\n}\n\nexport interface DimensionToken extends IToken {\n    type: TokenType.DIMENSION_TOKEN;\n    flags: number;\n    unit: string;\n    number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n    type: TokenType.UNICODE_RANGE_TOKEN;\n    start: number;\n    end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n    isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n    codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n    isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n    isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n    return (\n        (codePoint >= NULL && codePoint <= BACKSPACE) ||\n        codePoint === LINE_TABULATION ||\n        (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n        codePoint === DELETE\n    );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n    if (c1 !== REVERSE_SOLIDUS) {\n        return false;\n    }\n\n    return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === HYPHEN_MINUS) {\n        return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n    } else if (isNameStartCodePoint(c1)) {\n        return true;\n    } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n        return true;\n    }\n    return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n    if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n        if (isDigit(c2)) {\n            return true;\n        }\n\n        return c2 === FULL_STOP && isDigit(c3);\n    }\n\n    if (c1 === FULL_STOP) {\n        return isDigit(c2);\n    }\n\n    return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n    let c = 0;\n    let sign = 1;\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            sign = -1;\n        }\n        c++;\n    }\n\n    const integers = [];\n\n    while (isDigit(codePoints[c])) {\n        integers.push(codePoints[c++]);\n    }\n\n    const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n    if (codePoints[c] === FULL_STOP) {\n        c++;\n    }\n\n    const fraction = [];\n    while (isDigit(codePoints[c])) {\n        fraction.push(codePoints[c++]);\n    }\n\n    const fracd = fraction.length;\n    const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n    if (codePoints[c] === E || codePoints[c] === e) {\n        c++;\n    }\n\n    let expsign = 1;\n\n    if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n        if (codePoints[c] === HYPHEN_MINUS) {\n            expsign = -1;\n        }\n        c++;\n    }\n\n    const exponent = [];\n\n    while (isDigit(codePoints[c])) {\n        exponent.push(codePoints[c++]);\n    }\n\n    const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n    return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n    type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n    type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n    private _value: number[];\n\n    constructor() {\n        this._value = [];\n    }\n\n    write(chunk: string): void {\n        this._value = this._value.concat(toCodePoints(chunk));\n    }\n\n    read(): CSSToken[] {\n        const tokens = [];\n        let token = this.consumeToken();\n        while (token !== EOF_TOKEN) {\n            tokens.push(token);\n            token = this.consumeToken();\n        }\n        return tokens;\n    }\n\n    private consumeToken(): CSSToken {\n        const codePoint = this.consumeCodePoint();\n\n        switch (codePoint) {\n            case QUOTATION_MARK:\n                return this.consumeStringToken(QUOTATION_MARK);\n            case NUMBER_SIGN:\n                const c1 = this.peekCodePoint(0);\n                const c2 = this.peekCodePoint(1);\n                const c3 = this.peekCodePoint(2);\n                if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n                    const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n                    const value = this.consumeName();\n\n                    return {type: TokenType.HASH_TOKEN, value, flags};\n                }\n                break;\n            case DOLLAR_SIGN:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUFFIX_MATCH_TOKEN;\n                }\n                break;\n            case APOSTROPHE:\n                return this.consumeStringToken(APOSTROPHE);\n            case LEFT_PARENTHESIS:\n                return LEFT_PARENTHESIS_TOKEN;\n            case RIGHT_PARENTHESIS:\n                return RIGHT_PARENTHESIS_TOKEN;\n            case ASTERISK:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return SUBSTRING_MATCH_TOKEN;\n                }\n                break;\n            case PLUS_SIGN:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case COMMA:\n                return COMMA_TOKEN;\n            case HYPHEN_MINUS:\n                const e1 = codePoint;\n                const e2 = this.peekCodePoint(0);\n                const e3 = this.peekCodePoint(1);\n\n                if (isNumberStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n\n                if (isIdentifierStart(e1, e2, e3)) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n\n                if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDC_TOKEN;\n                }\n                break;\n\n            case FULL_STOP:\n                if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeNumericToken();\n                }\n                break;\n            case SOLIDUS:\n                if (this.peekCodePoint(0) === ASTERISK) {\n                    this.consumeCodePoint();\n                    while (true) {\n                        let c = this.consumeCodePoint();\n                        if (c === ASTERISK) {\n                            c = this.consumeCodePoint();\n                            if (c === SOLIDUS) {\n                                return this.consumeToken();\n                            }\n                        }\n                        if (c === EOF) {\n                            return this.consumeToken();\n                        }\n                    }\n                }\n                break;\n            case COLON:\n                return COLON_TOKEN;\n            case SEMICOLON:\n                return SEMICOLON_TOKEN;\n            case LESS_THAN_SIGN:\n                if (\n                    this.peekCodePoint(0) === EXCLAMATION_MARK &&\n                    this.peekCodePoint(1) === HYPHEN_MINUS &&\n                    this.peekCodePoint(2) === HYPHEN_MINUS\n                ) {\n                    this.consumeCodePoint();\n                    this.consumeCodePoint();\n                    return CDO_TOKEN;\n                }\n                break;\n            case COMMERCIAL_AT:\n                const a1 = this.peekCodePoint(0);\n                const a2 = this.peekCodePoint(1);\n                const a3 = this.peekCodePoint(2);\n                if (isIdentifierStart(a1, a2, a3)) {\n                    const value = this.consumeName();\n                    return {type: TokenType.AT_KEYWORD_TOKEN, value};\n                }\n                break;\n            case LEFT_SQUARE_BRACKET:\n                return LEFT_SQUARE_BRACKET_TOKEN;\n            case REVERSE_SOLIDUS:\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    this.reconsumeCodePoint(codePoint);\n                    return this.consumeIdentLikeToken();\n                }\n                break;\n            case RIGHT_SQUARE_BRACKET:\n                return RIGHT_SQUARE_BRACKET_TOKEN;\n            case CIRCUMFLEX_ACCENT:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return PREFIX_MATCH_TOKEN;\n                }\n                break;\n            case LEFT_CURLY_BRACKET:\n                return LEFT_CURLY_BRACKET_TOKEN;\n            case RIGHT_CURLY_BRACKET:\n                return RIGHT_CURLY_BRACKET_TOKEN;\n            case u:\n            case U:\n                const u1 = this.peekCodePoint(0);\n                const u2 = this.peekCodePoint(1);\n                if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n                    this.consumeCodePoint();\n                    this.consumeUnicodeRangeToken();\n                }\n                this.reconsumeCodePoint(codePoint);\n                return this.consumeIdentLikeToken();\n            case VERTICAL_LINE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return DASH_MATCH_TOKEN;\n                }\n                if (this.peekCodePoint(0) === VERTICAL_LINE) {\n                    this.consumeCodePoint();\n                    return COLUMN_TOKEN;\n                }\n                break;\n            case TILDE:\n                if (this.peekCodePoint(0) === EQUALS_SIGN) {\n                    this.consumeCodePoint();\n                    return INCLUDE_MATCH_TOKEN;\n                }\n                break;\n            case EOF:\n                return EOF_TOKEN;\n        }\n\n        if (isWhiteSpace(codePoint)) {\n            this.consumeWhiteSpace();\n            return WHITESPACE_TOKEN;\n        }\n\n        if (isDigit(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeNumericToken();\n        }\n\n        if (isNameStartCodePoint(codePoint)) {\n            this.reconsumeCodePoint(codePoint);\n            return this.consumeIdentLikeToken();\n        }\n\n        return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n    }\n\n    private consumeCodePoint(): number {\n        const value = this._value.shift();\n\n        return typeof value === 'undefined' ? -1 : value;\n    }\n\n    private reconsumeCodePoint(codePoint: number) {\n        this._value.unshift(codePoint);\n    }\n\n    private peekCodePoint(delta: number): number {\n        if (delta >= this._value.length) {\n            return -1;\n        }\n\n        return this._value[delta];\n    }\n\n    private consumeUnicodeRangeToken(): UnicodeRangeToken {\n        const digits = [];\n        let codePoint = this.consumeCodePoint();\n        while (isHex(codePoint) && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n        }\n        let questionMarks = false;\n        while (codePoint === QUESTION_MARK && digits.length < 6) {\n            digits.push(codePoint);\n            codePoint = this.consumeCodePoint();\n            questionMarks = true;\n        }\n\n        if (questionMarks) {\n            const start = parseInt(\n                fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n                16\n            );\n            const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        }\n\n        const start = parseInt(fromCodePoint(...digits), 16);\n        if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n            this.consumeCodePoint();\n            codePoint = this.consumeCodePoint();\n            const endDigits = [];\n            while (isHex(codePoint) && endDigits.length < 6) {\n                endDigits.push(codePoint);\n                codePoint = this.consumeCodePoint();\n            }\n            const end = parseInt(fromCodePoint(...endDigits), 16);\n\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n        } else {\n            return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n        }\n    }\n\n    private consumeIdentLikeToken(): StringValueToken | Token {\n        const value = this.consumeName();\n        if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return this.consumeUrlToken();\n        } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n            this.consumeCodePoint();\n            return {type: TokenType.FUNCTION_TOKEN, value};\n        }\n\n        return {type: TokenType.IDENT_TOKEN, value};\n    }\n\n    private consumeUrlToken(): StringValueToken | Token {\n        const value = [];\n        this.consumeWhiteSpace();\n\n        if (this.peekCodePoint(0) === EOF) {\n            return {type: TokenType.URL_TOKEN, value: ''};\n        }\n\n        const next = this.peekCodePoint(0);\n        if (next === APOSTROPHE || next === QUOTATION_MARK) {\n            const stringToken = this.consumeStringToken(this.consumeCodePoint());\n            if (stringToken.type === TokenType.STRING_TOKEN) {\n                this.consumeWhiteSpace();\n\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: stringToken.value};\n                }\n            }\n\n            this.consumeBadUrlRemnants();\n            return BAD_URL_TOKEN;\n        }\n\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n                return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n            } else if (isWhiteSpace(codePoint)) {\n                this.consumeWhiteSpace();\n                if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n                    this.consumeCodePoint();\n                    return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n                }\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (\n                codePoint === QUOTATION_MARK ||\n                codePoint === APOSTROPHE ||\n                codePoint === LEFT_PARENTHESIS ||\n                isNonPrintableCodePoint(codePoint)\n            ) {\n                this.consumeBadUrlRemnants();\n                return BAD_URL_TOKEN;\n            } else if (codePoint === REVERSE_SOLIDUS) {\n                if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                    value.push(this.consumeEscapedCodePoint());\n                } else {\n                    this.consumeBadUrlRemnants();\n                    return BAD_URL_TOKEN;\n                }\n            } else {\n                value.push(codePoint);\n            }\n        }\n    }\n\n    private consumeWhiteSpace(): void {\n        while (isWhiteSpace(this.peekCodePoint(0))) {\n            this.consumeCodePoint();\n        }\n    }\n\n    private consumeBadUrlRemnants(): void {\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n                return;\n            }\n\n            if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                this.consumeEscapedCodePoint();\n            }\n        }\n    }\n\n    private consumeStringSlice(count: number): string {\n        const SLICE_STACK_SIZE = 50000;\n        let value = '';\n        while (count > 0) {\n            const amount = Math.min(SLICE_STACK_SIZE, count);\n            value += fromCodePoint(...this._value.splice(0, amount));\n            count -= amount;\n        }\n        this._value.shift();\n\n        return value;\n    }\n\n    private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n        let value = '';\n        let i = 0;\n\n        do {\n            const codePoint = this._value[i];\n            if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n                value += this.consumeStringSlice(i);\n                return {type: TokenType.STRING_TOKEN, value};\n            }\n\n            if (codePoint === LINE_FEED) {\n                this._value.splice(0, i);\n                return BAD_STRING_TOKEN;\n            }\n\n            if (codePoint === REVERSE_SOLIDUS) {\n                const next = this._value[i + 1];\n                if (next !== EOF && next !== undefined) {\n                    if (next === LINE_FEED) {\n                        value += this.consumeStringSlice(i);\n                        i = -1;\n                        this._value.shift();\n                    } else if (isValidEscape(codePoint, next)) {\n                        value += this.consumeStringSlice(i);\n                        value += fromCodePoint(this.consumeEscapedCodePoint());\n                        i = -1;\n                    }\n                }\n            }\n\n            i++;\n        } while (true);\n    }\n\n    private consumeNumber() {\n        const repr = [];\n        let type = FLAG_INTEGER;\n        let c1 = this.peekCodePoint(0);\n        if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n            repr.push(this.consumeCodePoint());\n        }\n\n        while (isDigit(this.peekCodePoint(0))) {\n            repr.push(this.consumeCodePoint());\n        }\n        c1 = this.peekCodePoint(0);\n        let c2 = this.peekCodePoint(1);\n        if (c1 === FULL_STOP && isDigit(c2)) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        c1 = this.peekCodePoint(0);\n        c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n        if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n            repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n            type = FLAG_NUMBER;\n            while (isDigit(this.peekCodePoint(0))) {\n                repr.push(this.consumeCodePoint());\n            }\n        }\n\n        return [stringToNumber(repr), type];\n    }\n\n    private consumeNumericToken(): NumberValueToken | DimensionToken {\n        const [number, flags] = this.consumeNumber();\n        const c1 = this.peekCodePoint(0);\n        const c2 = this.peekCodePoint(1);\n        const c3 = this.peekCodePoint(2);\n\n        if (isIdentifierStart(c1, c2, c3)) {\n            const unit = this.consumeName();\n            return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n        }\n\n        if (c1 === PERCENTAGE_SIGN) {\n            this.consumeCodePoint();\n            return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n        }\n\n        return {type: TokenType.NUMBER_TOKEN, number, flags};\n    }\n\n    private consumeEscapedCodePoint(): number {\n        const codePoint = this.consumeCodePoint();\n\n        if (isHex(codePoint)) {\n            let hex = fromCodePoint(codePoint);\n            while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n                hex += fromCodePoint(this.consumeCodePoint());\n            }\n\n            if (isWhiteSpace(this.peekCodePoint(0))) {\n                this.consumeCodePoint();\n            }\n\n            const hexCodePoint = parseInt(hex, 16);\n\n            if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n                return REPLACEMENT_CHARACTER;\n            }\n\n            return hexCodePoint;\n        }\n\n        if (codePoint === EOF) {\n            return REPLACEMENT_CHARACTER;\n        }\n\n        return codePoint;\n    }\n\n    private consumeName(): string {\n        let result = '';\n        while (true) {\n            const codePoint = this.consumeCodePoint();\n            if (isNameCodePoint(codePoint)) {\n                result += fromCodePoint(codePoint);\n            } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n                result += fromCodePoint(this.consumeEscapedCodePoint());\n            } else {\n                this.reconsumeCodePoint(codePoint);\n                return result;\n            }\n        }\n    }\n}\n","import {\n    CSSToken,\n    DimensionToken,\n    EOF_TOKEN,\n    NumberValueToken,\n    StringValueToken,\n    Tokenizer,\n    TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n    | TokenType.LEFT_PARENTHESIS_TOKEN\n    | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n    | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n    type: CSSBlockType;\n    values: CSSValue[];\n}\n\nexport interface CSSFunction {\n    type: TokenType.FUNCTION;\n    name: string;\n    values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n    private _tokens: CSSToken[];\n\n    constructor(tokens: CSSToken[]) {\n        this._tokens = tokens;\n    }\n\n    static create(value: string): Parser {\n        const tokenizer = new Tokenizer();\n        tokenizer.write(value);\n        return new Parser(tokenizer.read());\n    }\n\n    static parseValue(value: string): CSSValue {\n        return Parser.create(value).parseComponentValue();\n    }\n\n    static parseValues(value: string): CSSValue[] {\n        return Parser.create(value).parseComponentValues();\n    }\n\n    parseComponentValue(): CSSValue {\n        let token = this.consumeToken();\n        while (token.type === TokenType.WHITESPACE_TOKEN) {\n            token = this.consumeToken();\n        }\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n        }\n\n        this.reconsumeToken(token);\n        const value = this.consumeComponentValue();\n\n        do {\n            token = this.consumeToken();\n        } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n        if (token.type === TokenType.EOF_TOKEN) {\n            return value;\n        }\n\n        throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n    }\n\n    parseComponentValues(): CSSValue[] {\n        const values = [];\n        while (true) {\n            const value = this.consumeComponentValue();\n            if (value.type === TokenType.EOF_TOKEN) {\n                return values;\n            }\n            values.push(value);\n            values.push();\n        }\n    }\n\n    private consumeComponentValue(): CSSValue {\n        const token = this.consumeToken();\n\n        switch (token.type) {\n            case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n            case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n            case TokenType.LEFT_PARENTHESIS_TOKEN:\n                return this.consumeSimpleBlock(token.type);\n            case TokenType.FUNCTION_TOKEN:\n                return this.consumeFunction(token);\n        }\n\n        return token;\n    }\n\n    private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n        const block: CSSBlock = {type, values: []};\n\n        let token = this.consumeToken();\n        while (true) {\n            if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n                return block;\n            }\n\n            this.reconsumeToken(token);\n            block.values.push(this.consumeComponentValue());\n            token = this.consumeToken();\n        }\n    }\n\n    private consumeFunction(functionToken: StringValueToken): CSSFunction {\n        const cssFunction: CSSFunction = {\n            name: functionToken.value,\n            values: [],\n            type: TokenType.FUNCTION\n        };\n\n        while (true) {\n            const token = this.consumeToken();\n            if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n                return cssFunction;\n            }\n\n            this.reconsumeToken(token);\n            cssFunction.values.push(this.consumeComponentValue());\n        }\n    }\n\n    private consumeToken(): CSSToken {\n        const token = this._tokens.shift();\n        return typeof token === 'undefined' ? EOF_TOKEN : token;\n    }\n\n    private reconsumeToken(token: CSSToken): void {\n        this._tokens.unshift(token);\n    }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n    isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n    token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n    const args: CSSValue[][] = [];\n    let arg: CSSValue[] = [];\n    tokens.forEach((token) => {\n        if (token.type === TokenType.COMMA_TOKEN) {\n            if (arg.length === 0) {\n                throw new Error(`Error parsing function args, zero tokens for arg`);\n            }\n            args.push(arg);\n            arg = [];\n            return;\n        }\n\n        if (token.type !== TokenType.WHITESPACE_TOKEN) {\n            arg.push(token);\n        }\n    });\n    if (arg.length) {\n        args.push(arg);\n    }\n\n    return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n    if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n        return true;\n    }\n    if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n        return true;\n    }\n\n    return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n","import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n    token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n","import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n    token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n    tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n    type: TokenType.NUMBER_TOKEN,\n    number: 0,\n    flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 100,\n    flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n    tuple: LengthPercentageTuple,\n    width: number,\n    height: number\n): [number, number] => {\n    const [x, y] = tuple;\n    return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        return (token.number / 100) * parent;\n    }\n\n    if (isDimensionToken(token)) {\n        switch (token.unit) {\n            case 'rem':\n            case 'em':\n                return 16 * token.number; // TODO use correct font-size\n            case 'px':\n            default:\n                return token.number;\n        }\n    }\n\n    return token.number;\n};\n","import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n    name: 'angle',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit) {\n                case DEG:\n                    return (Math.PI * value.number) / 180;\n                case GRAD:\n                    return (Math.PI / 200) * value.number;\n                case RAD:\n                    return value.number;\n                case TURN:\n                    return Math.PI * 2 * value.number;\n            }\n        }\n\n        throw new Error(`Unsupported angle type`);\n    }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n    if (value.type === TokenType.DIMENSION_TOKEN) {\n        if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n            return true;\n        }\n    }\n    return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n    const sideOrCorner = tokens\n        .filter(isIdentToken)\n        .map((ident) => ident.value)\n        .join(' ');\n\n    switch (sideOrCorner) {\n        case 'to bottom right':\n        case 'to right bottom':\n        case 'left top':\n        case 'top left':\n            return [ZERO_LENGTH, ZERO_LENGTH];\n        case 'to top':\n        case 'bottom':\n            return deg(0);\n        case 'to bottom left':\n        case 'to left bottom':\n        case 'right top':\n        case 'top right':\n            return [ZERO_LENGTH, HUNDRED_PERCENT];\n        case 'to right':\n        case 'left':\n            return deg(90);\n        case 'to top left':\n        case 'to left top':\n        case 'right bottom':\n        case 'bottom right':\n            return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n        case 'to bottom':\n        case 'top':\n            return deg(180);\n        case 'to top right':\n        case 'to right top':\n        case 'left bottom':\n        case 'bottom left':\n            return [HUNDRED_PERCENT, ZERO_LENGTH];\n        case 'to left':\n        case 'right':\n            return deg(270);\n    }\n\n    return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n","import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n    name: 'color',\n    parse: (context: Context, value: CSSValue): Color => {\n        if (value.type === TokenType.FUNCTION) {\n            const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n            if (typeof colorFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n            }\n            return colorFunction(context, value.values);\n        }\n\n        if (value.type === TokenType.HASH_TOKEN) {\n            if (value.value.length === 3) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n            }\n\n            if (value.value.length === 4) {\n                const r = value.value.substring(0, 1);\n                const g = value.value.substring(1, 2);\n                const b = value.value.substring(2, 3);\n                const a = value.value.substring(3, 4);\n                return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n            }\n\n            if (value.value.length === 6) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n            }\n\n            if (value.value.length === 8) {\n                const r = value.value.substring(0, 2);\n                const g = value.value.substring(2, 4);\n                const b = value.value.substring(4, 6);\n                const a = value.value.substring(6, 8);\n                return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n            }\n        }\n\n        if (value.type === TokenType.IDENT_TOKEN) {\n            const namedColor = COLORS[value.value.toUpperCase()];\n            if (typeof namedColor !== 'undefined') {\n                return namedColor;\n            }\n        }\n\n        return COLORS.TRANSPARENT;\n    }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n    const alpha = 0xff & color;\n    const blue = 0xff & (color >> 8);\n    const green = 0xff & (color >> 16);\n    const red = 0xff & (color >> 24);\n    return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n    ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n    if (token.type === TokenType.NUMBER_TOKEN) {\n        return token.number;\n    }\n\n    if (token.type === TokenType.PERCENTAGE_TOKEN) {\n        const max = i === 3 ? 1 : 255;\n        return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n    }\n\n    return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n\n    if (tokens.length === 3) {\n        const [r, g, b] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, 1);\n    }\n\n    if (tokens.length === 4) {\n        const [r, g, b, a] = tokens.map(getTokenColorValue);\n        return pack(r, g, b, a);\n    }\n\n    return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n    if (hue < 0) {\n        hue += 1;\n    }\n    if (hue >= 1) {\n        hue -= 1;\n    }\n\n    if (hue < 1 / 6) {\n        return (t2 - t1) * hue * 6 + t1;\n    } else if (hue < 1 / 2) {\n        return t2;\n    } else if (hue < 2 / 3) {\n        return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n    } else {\n        return t1;\n    }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n    const tokens = args.filter(nonFunctionArgSeparator);\n    const [hue, saturation, lightness, alpha] = tokens;\n\n    const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n    const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n    const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n    const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n    if (s === 0) {\n        return pack(l * 255, l * 255, l * 255, 1);\n    }\n\n    const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n    const t1 = l * 2 - t2;\n    const r = hue2rgb(t1, t2, h + 1 / 3);\n    const g = hue2rgb(t1, t2, h);\n    const b = hue2rgb(t1, t2, h - 1 / 3);\n    return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n    [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n    hsl: hsl,\n    hsla: hsl,\n    rgb: rgb,\n    rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n    color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n    ALICEBLUE: 0xf0f8ffff,\n    ANTIQUEWHITE: 0xfaebd7ff,\n    AQUA: 0x00ffffff,\n    AQUAMARINE: 0x7fffd4ff,\n    AZURE: 0xf0ffffff,\n    BEIGE: 0xf5f5dcff,\n    BISQUE: 0xffe4c4ff,\n    BLACK: 0x000000ff,\n    BLANCHEDALMOND: 0xffebcdff,\n    BLUE: 0x0000ffff,\n    BLUEVIOLET: 0x8a2be2ff,\n    BROWN: 0xa52a2aff,\n    BURLYWOOD: 0xdeb887ff,\n    CADETBLUE: 0x5f9ea0ff,\n    CHARTREUSE: 0x7fff00ff,\n    CHOCOLATE: 0xd2691eff,\n    CORAL: 0xff7f50ff,\n    CORNFLOWERBLUE: 0x6495edff,\n    CORNSILK: 0xfff8dcff,\n    CRIMSON: 0xdc143cff,\n    CYAN: 0x00ffffff,\n    DARKBLUE: 0x00008bff,\n    DARKCYAN: 0x008b8bff,\n    DARKGOLDENROD: 0xb886bbff,\n    DARKGRAY: 0xa9a9a9ff,\n    DARKGREEN: 0x006400ff,\n    DARKGREY: 0xa9a9a9ff,\n    DARKKHAKI: 0xbdb76bff,\n    DARKMAGENTA: 0x8b008bff,\n    DARKOLIVEGREEN: 0x556b2fff,\n    DARKORANGE: 0xff8c00ff,\n    DARKORCHID: 0x9932ccff,\n    DARKRED: 0x8b0000ff,\n    DARKSALMON: 0xe9967aff,\n    DARKSEAGREEN: 0x8fbc8fff,\n    DARKSLATEBLUE: 0x483d8bff,\n    DARKSLATEGRAY: 0x2f4f4fff,\n    DARKSLATEGREY: 0x2f4f4fff,\n    DARKTURQUOISE: 0x00ced1ff,\n    DARKVIOLET: 0x9400d3ff,\n    DEEPPINK: 0xff1493ff,\n    DEEPSKYBLUE: 0x00bfffff,\n    DIMGRAY: 0x696969ff,\n    DIMGREY: 0x696969ff,\n    DODGERBLUE: 0x1e90ffff,\n    FIREBRICK: 0xb22222ff,\n    FLORALWHITE: 0xfffaf0ff,\n    FORESTGREEN: 0x228b22ff,\n    FUCHSIA: 0xff00ffff,\n    GAINSBORO: 0xdcdcdcff,\n    GHOSTWHITE: 0xf8f8ffff,\n    GOLD: 0xffd700ff,\n    GOLDENROD: 0xdaa520ff,\n    GRAY: 0x808080ff,\n    GREEN: 0x008000ff,\n    GREENYELLOW: 0xadff2fff,\n    GREY: 0x808080ff,\n    HONEYDEW: 0xf0fff0ff,\n    HOTPINK: 0xff69b4ff,\n    INDIANRED: 0xcd5c5cff,\n    INDIGO: 0x4b0082ff,\n    IVORY: 0xfffff0ff,\n    KHAKI: 0xf0e68cff,\n    LAVENDER: 0xe6e6faff,\n    LAVENDERBLUSH: 0xfff0f5ff,\n    LAWNGREEN: 0x7cfc00ff,\n    LEMONCHIFFON: 0xfffacdff,\n    LIGHTBLUE: 0xadd8e6ff,\n    LIGHTCORAL: 0xf08080ff,\n    LIGHTCYAN: 0xe0ffffff,\n    LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n    LIGHTGRAY: 0xd3d3d3ff,\n    LIGHTGREEN: 0x90ee90ff,\n    LIGHTGREY: 0xd3d3d3ff,\n    LIGHTPINK: 0xffb6c1ff,\n    LIGHTSALMON: 0xffa07aff,\n    LIGHTSEAGREEN: 0x20b2aaff,\n    LIGHTSKYBLUE: 0x87cefaff,\n    LIGHTSLATEGRAY: 0x778899ff,\n    LIGHTSLATEGREY: 0x778899ff,\n    LIGHTSTEELBLUE: 0xb0c4deff,\n    LIGHTYELLOW: 0xffffe0ff,\n    LIME: 0x00ff00ff,\n    LIMEGREEN: 0x32cd32ff,\n    LINEN: 0xfaf0e6ff,\n    MAGENTA: 0xff00ffff,\n    MAROON: 0x800000ff,\n    MEDIUMAQUAMARINE: 0x66cdaaff,\n    MEDIUMBLUE: 0x0000cdff,\n    MEDIUMORCHID: 0xba55d3ff,\n    MEDIUMPURPLE: 0x9370dbff,\n    MEDIUMSEAGREEN: 0x3cb371ff,\n    MEDIUMSLATEBLUE: 0x7b68eeff,\n    MEDIUMSPRINGGREEN: 0x00fa9aff,\n    MEDIUMTURQUOISE: 0x48d1ccff,\n    MEDIUMVIOLETRED: 0xc71585ff,\n    MIDNIGHTBLUE: 0x191970ff,\n    MINTCREAM: 0xf5fffaff,\n    MISTYROSE: 0xffe4e1ff,\n    MOCCASIN: 0xffe4b5ff,\n    NAVAJOWHITE: 0xffdeadff,\n    NAVY: 0x000080ff,\n    OLDLACE: 0xfdf5e6ff,\n    OLIVE: 0x808000ff,\n    OLIVEDRAB: 0x6b8e23ff,\n    ORANGE: 0xffa500ff,\n    ORANGERED: 0xff4500ff,\n    ORCHID: 0xda70d6ff,\n    PALEGOLDENROD: 0xeee8aaff,\n    PALEGREEN: 0x98fb98ff,\n    PALETURQUOISE: 0xafeeeeff,\n    PALEVIOLETRED: 0xdb7093ff,\n    PAPAYAWHIP: 0xffefd5ff,\n    PEACHPUFF: 0xffdab9ff,\n    PERU: 0xcd853fff,\n    PINK: 0xffc0cbff,\n    PLUM: 0xdda0ddff,\n    POWDERBLUE: 0xb0e0e6ff,\n    PURPLE: 0x800080ff,\n    REBECCAPURPLE: 0x663399ff,\n    RED: 0xff0000ff,\n    ROSYBROWN: 0xbc8f8fff,\n    ROYALBLUE: 0x4169e1ff,\n    SADDLEBROWN: 0x8b4513ff,\n    SALMON: 0xfa8072ff,\n    SANDYBROWN: 0xf4a460ff,\n    SEAGREEN: 0x2e8b57ff,\n    SEASHELL: 0xfff5eeff,\n    SIENNA: 0xa0522dff,\n    SILVER: 0xc0c0c0ff,\n    SKYBLUE: 0x87ceebff,\n    SLATEBLUE: 0x6a5acdff,\n    SLATEGRAY: 0x708090ff,\n    SLATEGREY: 0x708090ff,\n    SNOW: 0xfffafaff,\n    SPRINGGREEN: 0x00ff7fff,\n    STEELBLUE: 0x4682b4ff,\n    TAN: 0xd2b48cff,\n    TEAL: 0x008080ff,\n    THISTLE: 0xd8bfd8ff,\n    TOMATO: 0xff6347ff,\n    TRANSPARENT: 0x00000000,\n    TURQUOISE: 0x40e0d0ff,\n    VIOLET: 0xee82eeff,\n    WHEAT: 0xf5deb3ff,\n    WHITE: 0xffffffff,\n    WHITESMOKE: 0xf5f5f5ff,\n    YELLOW: 0xffff00ff,\n    YELLOWGREEN: 0x9acd32ff\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n    name: 'background-clip',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_CLIP.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_CLIP.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_CLIP.BORDER_BOX;\n        });\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n    name: `background-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n","import {CSSValue} from '../../syntax/parser';\nimport {\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    GradientColorStop,\n    GradientCorner,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n    const color = colorType.parse(context, args[0]);\n    const stop = args[1];\n    return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n    const first = stops[0];\n    const last = stops[stops.length - 1];\n    if (first.stop === null) {\n        first.stop = ZERO_LENGTH;\n    }\n\n    if (last.stop === null) {\n        last.stop = HUNDRED_PERCENT;\n    }\n\n    const processStops: (number | null)[] = [];\n    let previous = 0;\n    for (let i = 0; i < stops.length; i++) {\n        const stop = stops[i].stop;\n        if (stop !== null) {\n            const absoluteValue = getAbsoluteValue(stop, lineLength);\n            if (absoluteValue > previous) {\n                processStops.push(absoluteValue);\n            } else {\n                processStops.push(previous);\n            }\n            previous = absoluteValue;\n        } else {\n            processStops.push(null);\n        }\n    }\n\n    let gapBegin = null;\n    for (let i = 0; i < processStops.length; i++) {\n        const stop = processStops[i];\n        if (stop === null) {\n            if (gapBegin === null) {\n                gapBegin = i;\n            }\n        } else if (gapBegin !== null) {\n            const gapLength = i - gapBegin;\n            const beforeGap = processStops[gapBegin - 1] as number;\n            const gapValue = (stop - beforeGap) / (gapLength + 1);\n            for (let g = 1; g <= gapLength; g++) {\n                processStops[gapBegin + g - 1] = gapValue * g;\n            }\n            gapBegin = null;\n        }\n    }\n\n    return stops.map(({color}, i) => {\n        return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n    });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n    const centerX = width / 2;\n    const centerY = height / 2;\n    const x = getAbsoluteValue(corner[0], width) - centerX;\n    const y = centerY - getAbsoluteValue(corner[1], height);\n\n    return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n    angle: number | GradientCorner,\n    width: number,\n    height: number\n): [number, number, number, number, number] => {\n    const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n    const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n    const halfWidth = width / 2;\n    const halfHeight = height / 2;\n    const halfLineLength = lineLength / 2;\n\n    const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n    const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n    return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n    const corners = [\n        [0, 0],\n        [0, height],\n        [width, 0],\n        [width, height]\n    ];\n\n    return corners.reduce(\n        (stat, corner) => {\n            const [cx, cy] = corner;\n            const d = distance(x - cx, y - cy);\n            if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n                return {\n                    optimumCorner: corner,\n                    optimumDistance: d\n                };\n            }\n\n            return stat;\n        },\n        {\n            optimumDistance: closest ? Infinity : -Infinity,\n            optimumCorner: null\n        }\n    ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n    gradient: CSSRadialGradientImage,\n    x: number,\n    y: number,\n    width: number,\n    height: number\n): [number, number] => {\n    let rx = 0;\n    let ry = 0;\n\n    switch (gradient.size) {\n        case CSSRadialExtent.CLOSEST_SIDE:\n            // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.min(Math.abs(x), Math.abs(x - width));\n                ry = Math.min(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.CLOSEST_CORNER:\n            // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n            // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.min(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n                const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, true);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_SIDE:\n            // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                rx = Math.max(Math.abs(x), Math.abs(x - width));\n                ry = Math.max(Math.abs(y), Math.abs(y - height));\n            }\n            break;\n\n        case CSSRadialExtent.FARTHEST_CORNER:\n            // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n            // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n            if (gradient.shape === CSSRadialShape.CIRCLE) {\n                rx = ry = Math.max(\n                    distance(x, y),\n                    distance(x, y - height),\n                    distance(x - width, y),\n                    distance(x - width, y - height)\n                );\n            } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n                // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n                const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n                const [cx, cy] = findCorner(width, height, x, y, false);\n                rx = distance(cx - x, (cy - y) / c);\n                ry = c * rx;\n            }\n            break;\n    }\n\n    if (Array.isArray(gradient.size)) {\n        rx = getAbsoluteValue(gradient.size[0], width);\n        ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n    }\n\n    return [rx, ry];\n};\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (\n                firstToken.type === TokenType.IDENT_TOKEN &&\n                ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n            ) {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {\n        angle,\n        stops,\n        type: CSSImageType.LINEAR_GRADIENT\n    };\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            let isAtPosition = false;\n            isColorStop = arg.reduce((acc, token) => {\n                if (isAtPosition) {\n                    if (isIdentToken(token)) {\n                        switch (token.value) {\n                            case 'center':\n                                position.push(FIFTY_PERCENT);\n                                return acc;\n                            case 'top':\n                            case 'left':\n                                position.push(ZERO_LENGTH);\n                                return acc;\n                            case 'right':\n                            case 'bottom':\n                                position.push(HUNDRED_PERCENT);\n                                return acc;\n                        }\n                    } else if (isLengthPercentage(token) || isLength(token)) {\n                        position.push(token);\n                    }\n                } else if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case 'at':\n                            isAtPosition = true;\n                            return false;\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case COVER:\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n    CIRCLE,\n    CLOSEST_CORNER,\n    CLOSEST_SIDE,\n    CONTAIN,\n    COVER,\n    ELLIPSE,\n    FARTHEST_CORNER,\n    FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n    let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const stops: UnprocessedGradientColorStop[] = [];\n    const position: LengthPercentage[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        let isColorStop = true;\n        if (i === 0) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case 'center':\n                            position.push(FIFTY_PERCENT);\n                            return false;\n                        case 'top':\n                        case 'left':\n                            position.push(ZERO_LENGTH);\n                            return false;\n                        case 'right':\n                        case 'bottom':\n                            position.push(HUNDRED_PERCENT);\n                            return false;\n                    }\n                } else if (isLengthPercentage(token) || isLength(token)) {\n                    position.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        } else if (i === 1) {\n            isColorStop = arg.reduce((acc, token) => {\n                if (isIdentToken(token)) {\n                    switch (token.value) {\n                        case CIRCLE:\n                            shape = CSSRadialShape.CIRCLE;\n                            return false;\n                        case ELLIPSE:\n                            shape = CSSRadialShape.ELLIPSE;\n                            return false;\n                        case CONTAIN:\n                        case CLOSEST_SIDE:\n                            size = CSSRadialExtent.CLOSEST_SIDE;\n                            return false;\n                        case FARTHEST_SIDE:\n                            size = CSSRadialExtent.FARTHEST_SIDE;\n                            return false;\n                        case CLOSEST_CORNER:\n                            size = CSSRadialExtent.CLOSEST_CORNER;\n                            return false;\n                        case COVER:\n                        case FARTHEST_CORNER:\n                            size = CSSRadialExtent.FARTHEST_CORNER;\n                            return false;\n                    }\n                } else if (isLength(token) || isLengthPercentage(token)) {\n                    if (!Array.isArray(size)) {\n                        size = [];\n                    }\n                    size.push(token);\n                    return false;\n                }\n\n                return acc;\n            }, isColorStop);\n        }\n\n        if (isColorStop) {\n            const colorStop = parseColorStop(context, arg);\n            stops.push(colorStop);\n        }\n    });\n\n    return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n    URL,\n    LINEAR_GRADIENT,\n    RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n    return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n    return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n    color: Color;\n    stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n    color: Color;\n    stop: number;\n}\n\nexport interface ICSSImage {\n    type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n    url: string;\n    type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n    stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n    angle: number | GradientCorner;\n    type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n    CIRCLE,\n    ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n    CLOSEST_SIDE,\n    FARTHEST_SIDE,\n    CLOSEST_CORNER,\n    FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n    type: CSSImageType.RADIAL_GRADIENT;\n    shape: CSSRadialShape;\n    size: CSSRadialSize;\n    position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n    name: 'image',\n    parse: (context: Context, value: CSSValue): ICSSImage => {\n        if (value.type === TokenType.URL_TOKEN) {\n            const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n            context.cache.addImage(value.value);\n            return image;\n        }\n\n        if (value.type === TokenType.FUNCTION) {\n            const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n            if (typeof imageFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n            }\n            return imageFunction(context, value.values);\n        }\n\n        throw new Error(`Unsupported image type ${value.type}`);\n    }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n    return (\n        !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n        (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n    );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n    'linear-gradient': linearGradient,\n    '-moz-linear-gradient': prefixLinearGradient,\n    '-ms-linear-gradient': prefixLinearGradient,\n    '-o-linear-gradient': prefixLinearGradient,\n    '-webkit-linear-gradient': prefixLinearGradient,\n    'radial-gradient': radialGradient,\n    '-moz-radial-gradient': prefixRadialGradient,\n    '-ms-radial-gradient': prefixRadialGradient,\n    '-o-radial-gradient': prefixRadialGradient,\n    '-webkit-radial-gradient': prefixRadialGradient,\n    '-webkit-gradient': webkitGradient\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n    AUTO = 'auto',\n    CONTAIN = 'contain',\n    COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n    name: 'background-size',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n        return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n    }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n    isIdentToken(value) || isLengthPercentage(value);\n","import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n    let angle: number | GradientCorner = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        if (i === 0) {\n            const firstToken = arg[0];\n            if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n                angle = parseNamedSide(arg);\n                return;\n            } else if (isAngle(firstToken)) {\n                angle = angleType.parse(context, firstToken);\n                return;\n            }\n        }\n        const colorStop = parseColorStop(context, arg);\n        stops.push(colorStop);\n    });\n\n    return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n","import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n    CSSImageType,\n    CSSLinearGradientImage,\n    CSSRadialExtent,\n    CSSRadialGradientImage,\n    CSSRadialShape,\n    CSSRadialSize,\n    UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n    context: Context,\n    tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n    const angle = deg(180);\n    const stops: UnprocessedGradientColorStop[] = [];\n    let type = CSSImageType.LINEAR_GRADIENT;\n    const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n    const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n    const position: LengthPercentage[] = [];\n    parseFunctionArgs(tokens).forEach((arg, i) => {\n        const firstToken = arg[0];\n        if (i === 0) {\n            if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n                type = CSSImageType.LINEAR_GRADIENT;\n                return;\n            } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n                type = CSSImageType.RADIAL_GRADIENT;\n                return;\n            }\n        }\n\n        if (firstToken.type === TokenType.FUNCTION) {\n            if (firstToken.name === 'from') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: ZERO_LENGTH, color});\n            } else if (firstToken.name === 'to') {\n                const color = colorType.parse(context, firstToken.values[0]);\n                stops.push({stop: HUNDRED_PERCENT, color});\n            } else if (firstToken.name === 'color-stop') {\n                const values = firstToken.values.filter(nonFunctionArgSeparator);\n                if (values.length === 2) {\n                    const color = colorType.parse(context, values[1]);\n                    const stop = values[0];\n                    if (isNumberToken(stop)) {\n                        stops.push({\n                            stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n                            color\n                        });\n                    }\n                }\n            }\n        }\n    });\n\n    return type === CSSImageType.LINEAR_GRADIENT\n        ? {\n              angle: (angle + deg(180)) % deg(360),\n              stops,\n              type\n          }\n        : {size, shape, stops, position, type};\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n    name: 'background-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens\n            .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n            .map((value) => image.parse(context, value));\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n    BORDER_BOX = 0,\n    PADDING_BOX = 1,\n    CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n    name: 'background-origin',\n    initialValue: 'border-box',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n        return tokens.map((token) => {\n            if (isIdentToken(token)) {\n                switch (token.value) {\n                    case 'padding-box':\n                        return BACKGROUND_ORIGIN.PADDING_BOX;\n                    case 'content-box':\n                        return BACKGROUND_ORIGIN.CONTENT_BOX;\n                }\n            }\n            return BACKGROUND_ORIGIN.BORDER_BOX;\n        });\n    }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n    name: 'background-position',\n    initialValue: '0% 0%',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n        return parseFunctionArgs(tokens)\n            .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n            .map(parseLengthPercentageTuple);\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n    REPEAT = 0,\n    NO_REPEAT = 1,\n    REPEAT_X = 2,\n    REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n    name: 'background-repeat',\n    initialValue: 'repeat',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n        return parseFunctionArgs(tokens)\n            .map((values) =>\n                values\n                    .filter(isIdentToken)\n                    .map((token) => token.value)\n                    .join(' ')\n            )\n            .map(parseBackgroundRepeat);\n    }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n    switch (value) {\n        case 'no-repeat':\n            return BACKGROUND_REPEAT.NO_REPEAT;\n        case 'repeat-x':\n        case 'repeat no-repeat':\n            return BACKGROUND_REPEAT.REPEAT_X;\n        case 'repeat-y':\n        case 'no-repeat repeat':\n            return BACKGROUND_REPEAT.REPEAT_Y;\n        case 'repeat':\n        default:\n            return BACKGROUND_REPEAT.REPEAT;\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n    NORMAL = 'normal',\n    STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n    name: 'line-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n        switch (lineBreak) {\n            case 'strict':\n                return LINE_BREAK.STRICT;\n            case 'normal':\n            default:\n                return LINE_BREAK.NORMAL;\n        }\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `border-${side}-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n    name: `border-radius-${side}`,\n    initialValue: '0 0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n        parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n    NONE = 0,\n    SOLID = 1,\n    DASHED = 2,\n    DOTTED = 3,\n    DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n    name: `border-${side}-style`,\n    initialValue: 'solid',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, style: string): BORDER_STYLE => {\n        switch (style) {\n            case 'none':\n                return BORDER_STYLE.NONE;\n            case 'dashed':\n                return BORDER_STYLE.DASHED;\n            case 'dotted':\n                return BORDER_STYLE.DOTTED;\n            case 'double':\n                return BORDER_STYLE.DOUBLE;\n        }\n        return BORDER_STYLE.SOLID;\n    }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n    name: `border-${side}-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n    name: `color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n    LTR = 0,\n    RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n    name: 'direction',\n    initialValue: 'ltr',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, direction: string) => {\n        switch (direction) {\n            case 'rtl':\n                return DIRECTION.RTL;\n            case 'ltr':\n            default:\n                return DIRECTION.LTR;\n        }\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n    NONE = 0,\n    BLOCK = 1 << 1,\n    INLINE = 1 << 2,\n    RUN_IN = 1 << 3,\n    FLOW = 1 << 4,\n    FLOW_ROOT = 1 << 5,\n    TABLE = 1 << 6,\n    FLEX = 1 << 7,\n    GRID = 1 << 8,\n    RUBY = 1 << 9,\n    SUBGRID = 1 << 10,\n    LIST_ITEM = 1 << 11,\n    TABLE_ROW_GROUP = 1 << 12,\n    TABLE_HEADER_GROUP = 1 << 13,\n    TABLE_FOOTER_GROUP = 1 << 14,\n    TABLE_ROW = 1 << 15,\n    TABLE_CELL = 1 << 16,\n    TABLE_COLUMN_GROUP = 1 << 17,\n    TABLE_COLUMN = 1 << 18,\n    TABLE_CAPTION = 1 << 19,\n    RUBY_BASE = 1 << 20,\n    RUBY_TEXT = 1 << 21,\n    RUBY_BASE_CONTAINER = 1 << 22,\n    RUBY_TEXT_CONTAINER = 1 << 23,\n    CONTENTS = 1 << 24,\n    INLINE_BLOCK = 1 << 25,\n    INLINE_LIST_ITEM = 1 << 26,\n    INLINE_TABLE = 1 << 27,\n    INLINE_FLEX = 1 << 28,\n    INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n    name: 'display',\n    initialValue: 'inline-block',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): Display => {\n        return tokens.filter(isIdentToken).reduce((bit, token) => {\n            return bit | parseDisplayValue(token.value);\n        }, DISPLAY.NONE);\n    }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n    switch (display) {\n        case 'block':\n        case '-webkit-box':\n            return DISPLAY.BLOCK;\n        case 'inline':\n            return DISPLAY.INLINE;\n        case 'run-in':\n            return DISPLAY.RUN_IN;\n        case 'flow':\n            return DISPLAY.FLOW;\n        case 'flow-root':\n            return DISPLAY.FLOW_ROOT;\n        case 'table':\n            return DISPLAY.TABLE;\n        case 'flex':\n        case '-webkit-flex':\n            return DISPLAY.FLEX;\n        case 'grid':\n        case '-ms-grid':\n            return DISPLAY.GRID;\n        case 'ruby':\n            return DISPLAY.RUBY;\n        case 'subgrid':\n            return DISPLAY.SUBGRID;\n        case 'list-item':\n            return DISPLAY.LIST_ITEM;\n        case 'table-row-group':\n            return DISPLAY.TABLE_ROW_GROUP;\n        case 'table-header-group':\n            return DISPLAY.TABLE_HEADER_GROUP;\n        case 'table-footer-group':\n            return DISPLAY.TABLE_FOOTER_GROUP;\n        case 'table-row':\n            return DISPLAY.TABLE_ROW;\n        case 'table-cell':\n            return DISPLAY.TABLE_CELL;\n        case 'table-column-group':\n            return DISPLAY.TABLE_COLUMN_GROUP;\n        case 'table-column':\n            return DISPLAY.TABLE_COLUMN;\n        case 'table-caption':\n            return DISPLAY.TABLE_CAPTION;\n        case 'ruby-base':\n            return DISPLAY.RUBY_BASE;\n        case 'ruby-text':\n            return DISPLAY.RUBY_TEXT;\n        case 'ruby-base-container':\n            return DISPLAY.RUBY_BASE_CONTAINER;\n        case 'ruby-text-container':\n            return DISPLAY.RUBY_TEXT_CONTAINER;\n        case 'contents':\n            return DISPLAY.CONTENTS;\n        case 'inline-block':\n            return DISPLAY.INLINE_BLOCK;\n        case 'inline-list-item':\n            return DISPLAY.INLINE_LIST_ITEM;\n        case 'inline-table':\n            return DISPLAY.INLINE_TABLE;\n        case 'inline-flex':\n            return DISPLAY.INLINE_FLEX;\n        case 'inline-grid':\n            return DISPLAY.INLINE_GRID;\n    }\n\n    return DISPLAY.NONE;\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n    NONE = 0,\n    LEFT = 1,\n    RIGHT = 2,\n    INLINE_START = 3,\n    INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n    name: 'float',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, float: string) => {\n        switch (float) {\n            case 'left':\n                return FLOAT.LEFT;\n            case 'right':\n                return FLOAT.RIGHT;\n            case 'inline-start':\n                return FLOAT.INLINE_START;\n            case 'inline-end':\n                return FLOAT.INLINE_END;\n        }\n        return FLOAT.NONE;\n    }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n    name: 'letter-spacing',\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n            return 0;\n        }\n\n        if (token.type === TokenType.NUMBER_TOKEN) {\n            return token.number;\n        }\n\n        if (token.type === TokenType.DIMENSION_TOKEN) {\n            return token.number;\n        }\n\n        return 0;\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n    NORMAL = 'normal',\n    BREAK_ALL = 'break-all',\n    KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n    name: 'word-break',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n        switch (wordBreak) {\n            case 'break-all':\n                return WORD_BREAK.BREAK_ALL;\n            case 'keep-all':\n                return WORD_BREAK.KEEP_ALL;\n            case 'normal':\n            default:\n                return WORD_BREAK.NORMAL;\n        }\n    }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n    name: 'line-height',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n    if (isIdentToken(token) && token.value === 'normal') {\n        return 1.2 * fontSize;\n    } else if (token.type === TokenType.NUMBER_TOKEN) {\n        return fontSize * token.number;\n    } else if (isLengthPercentage(token)) {\n        return getAbsoluteValue(token, fontSize);\n    }\n\n    return fontSize;\n};\n","import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n    name: 'list-style-image',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        return image.parse(context, token);\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n    INSIDE = 0,\n    OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n    name: 'list-style-position',\n    initialValue: 'outside',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'inside':\n                return LIST_STYLE_POSITION.INSIDE;\n            case 'outside':\n            default:\n                return LIST_STYLE_POSITION.OUTSIDE;\n        }\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n    NONE = -1,\n    DISC = 0,\n    CIRCLE = 1,\n    SQUARE = 2,\n    DECIMAL = 3,\n    CJK_DECIMAL = 4,\n    DECIMAL_LEADING_ZERO = 5,\n    LOWER_ROMAN = 6,\n    UPPER_ROMAN = 7,\n    LOWER_GREEK = 8,\n    LOWER_ALPHA = 9,\n    UPPER_ALPHA = 10,\n    ARABIC_INDIC = 11,\n    ARMENIAN = 12,\n    BENGALI = 13,\n    CAMBODIAN = 14,\n    CJK_EARTHLY_BRANCH = 15,\n    CJK_HEAVENLY_STEM = 16,\n    CJK_IDEOGRAPHIC = 17,\n    DEVANAGARI = 18,\n    ETHIOPIC_NUMERIC = 19,\n    GEORGIAN = 20,\n    GUJARATI = 21,\n    GURMUKHI = 22,\n    HEBREW = 22,\n    HIRAGANA = 23,\n    HIRAGANA_IROHA = 24,\n    JAPANESE_FORMAL = 25,\n    JAPANESE_INFORMAL = 26,\n    KANNADA = 27,\n    KATAKANA = 28,\n    KATAKANA_IROHA = 29,\n    KHMER = 30,\n    KOREAN_HANGUL_FORMAL = 31,\n    KOREAN_HANJA_FORMAL = 32,\n    KOREAN_HANJA_INFORMAL = 33,\n    LAO = 34,\n    LOWER_ARMENIAN = 35,\n    MALAYALAM = 36,\n    MONGOLIAN = 37,\n    MYANMAR = 38,\n    ORIYA = 39,\n    PERSIAN = 40,\n    SIMP_CHINESE_FORMAL = 41,\n    SIMP_CHINESE_INFORMAL = 42,\n    TAMIL = 43,\n    TELUGU = 44,\n    THAI = 45,\n    TIBETAN = 46,\n    TRAD_CHINESE_FORMAL = 47,\n    TRAD_CHINESE_INFORMAL = 48,\n    UPPER_ARMENIAN = 49,\n    DISCLOSURE_OPEN = 50,\n    DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n    name: 'list-style-type',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, type: string) => {\n        switch (type) {\n            case 'disc':\n                return LIST_STYLE_TYPE.DISC;\n            case 'circle':\n                return LIST_STYLE_TYPE.CIRCLE;\n            case 'square':\n                return LIST_STYLE_TYPE.SQUARE;\n            case 'decimal':\n                return LIST_STYLE_TYPE.DECIMAL;\n            case 'cjk-decimal':\n                return LIST_STYLE_TYPE.CJK_DECIMAL;\n            case 'decimal-leading-zero':\n                return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n            case 'lower-roman':\n                return LIST_STYLE_TYPE.LOWER_ROMAN;\n            case 'upper-roman':\n                return LIST_STYLE_TYPE.UPPER_ROMAN;\n            case 'lower-greek':\n                return LIST_STYLE_TYPE.LOWER_GREEK;\n            case 'lower-alpha':\n                return LIST_STYLE_TYPE.LOWER_ALPHA;\n            case 'upper-alpha':\n                return LIST_STYLE_TYPE.UPPER_ALPHA;\n            case 'arabic-indic':\n                return LIST_STYLE_TYPE.ARABIC_INDIC;\n            case 'armenian':\n                return LIST_STYLE_TYPE.ARMENIAN;\n            case 'bengali':\n                return LIST_STYLE_TYPE.BENGALI;\n            case 'cambodian':\n                return LIST_STYLE_TYPE.CAMBODIAN;\n            case 'cjk-earthly-branch':\n                return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n            case 'cjk-heavenly-stem':\n                return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n            case 'cjk-ideographic':\n                return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n            case 'devanagari':\n                return LIST_STYLE_TYPE.DEVANAGARI;\n            case 'ethiopic-numeric':\n                return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n            case 'georgian':\n                return LIST_STYLE_TYPE.GEORGIAN;\n            case 'gujarati':\n                return LIST_STYLE_TYPE.GUJARATI;\n            case 'gurmukhi':\n                return LIST_STYLE_TYPE.GURMUKHI;\n            case 'hebrew':\n                return LIST_STYLE_TYPE.HEBREW;\n            case 'hiragana':\n                return LIST_STYLE_TYPE.HIRAGANA;\n            case 'hiragana-iroha':\n                return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n            case 'japanese-formal':\n                return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n            case 'japanese-informal':\n                return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n            case 'kannada':\n                return LIST_STYLE_TYPE.KANNADA;\n            case 'katakana':\n                return LIST_STYLE_TYPE.KATAKANA;\n            case 'katakana-iroha':\n                return LIST_STYLE_TYPE.KATAKANA_IROHA;\n            case 'khmer':\n                return LIST_STYLE_TYPE.KHMER;\n            case 'korean-hangul-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n            case 'korean-hanja-formal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n            case 'korean-hanja-informal':\n                return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n            case 'lao':\n                return LIST_STYLE_TYPE.LAO;\n            case 'lower-armenian':\n                return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n            case 'malayalam':\n                return LIST_STYLE_TYPE.MALAYALAM;\n            case 'mongolian':\n                return LIST_STYLE_TYPE.MONGOLIAN;\n            case 'myanmar':\n                return LIST_STYLE_TYPE.MYANMAR;\n            case 'oriya':\n                return LIST_STYLE_TYPE.ORIYA;\n            case 'persian':\n                return LIST_STYLE_TYPE.PERSIAN;\n            case 'simp-chinese-formal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n            case 'simp-chinese-informal':\n                return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n            case 'tamil':\n                return LIST_STYLE_TYPE.TAMIL;\n            case 'telugu':\n                return LIST_STYLE_TYPE.TELUGU;\n            case 'thai':\n                return LIST_STYLE_TYPE.THAI;\n            case 'tibetan':\n                return LIST_STYLE_TYPE.TIBETAN;\n            case 'trad-chinese-formal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n            case 'trad-chinese-informal':\n                return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n            case 'upper-armenian':\n                return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n            case 'disclosure-open':\n                return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n            case 'disclosure-closed':\n                return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n            case 'none':\n            default:\n                return LIST_STYLE_TYPE.NONE;\n        }\n    }\n};\n","import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n    name: `margin-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    SCROLL = 2,\n    CLIP = 3,\n    AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n    name: 'overflow',\n    initialValue: 'visible',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n        return tokens.filter(isIdentToken).map((overflow) => {\n            switch (overflow.value) {\n                case 'hidden':\n                    return OVERFLOW.HIDDEN;\n                case 'scroll':\n                    return OVERFLOW.SCROLL;\n                case 'clip':\n                    return OVERFLOW.CLIP;\n                case 'auto':\n                    return OVERFLOW.AUTO;\n                case 'visible':\n                default:\n                    return OVERFLOW.VISIBLE;\n            }\n        });\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n    NORMAL = 'normal',\n    BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n    name: 'overflow-wrap',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'break-word':\n                return OVERFLOW_WRAP.BREAK_WORD;\n            case 'normal':\n            default:\n                return OVERFLOW_WRAP.NORMAL;\n        }\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n    name: `padding-${side}`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n    LEFT = 0,\n    CENTER = 1,\n    RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n    name: 'text-align',\n    initialValue: 'left',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textAlign: string) => {\n        switch (textAlign) {\n            case 'right':\n                return TEXT_ALIGN.RIGHT;\n            case 'center':\n            case 'justify':\n                return TEXT_ALIGN.CENTER;\n            case 'left':\n            default:\n                return TEXT_ALIGN.LEFT;\n        }\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n    STATIC = 0,\n    RELATIVE = 1,\n    ABSOLUTE = 2,\n    FIXED = 3,\n    STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n    name: 'position',\n    initialValue: 'static',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, position: string) => {\n        switch (position) {\n            case 'relative':\n                return POSITION.RELATIVE;\n            case 'absolute':\n                return POSITION.ABSOLUTE;\n            case 'fixed':\n                return POSITION.FIXED;\n            case 'sticky':\n                return POSITION.STICKY;\n        }\n\n        return POSITION.STATIC;\n    }\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n    name: 'text-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: TextShadowItem = {\n                color: COLORS.TRANSPARENT,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else {\n                        shadow.blur = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n    NONE = 0,\n    LOWERCASE = 1,\n    UPPERCASE = 2,\n    CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n    name: 'text-transform',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, textTransform: string) => {\n        switch (textTransform) {\n            case 'uppercase':\n                return TEXT_TRANSFORM.UPPERCASE;\n            case 'lowercase':\n                return TEXT_TRANSFORM.LOWERCASE;\n            case 'capitalize':\n                return TEXT_TRANSFORM.CAPITALIZE;\n        }\n\n        return TEXT_TRANSFORM.NONE;\n    }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n    name: 'transform',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue) => {\n        if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n            return null;\n        }\n\n        if (token.type === TokenType.FUNCTION) {\n            const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n            if (typeof transformFunction === 'undefined') {\n                throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n            }\n            return transformFunction(token.values);\n        }\n\n        return null;\n    }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n    const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n    const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n    return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n    [key: string]: (args: CSSValue[]) => Transform;\n} = {\n    matrix: matrix,\n    matrix3d: matrix3d\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n    type: TokenType.PERCENTAGE_TOKEN,\n    number: 50,\n    flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n    name: 'transform-origin',\n    initialValue: '50% 50%',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n        if (origins.length !== 2) {\n            return DEFAULT;\n        }\n\n        return [origins[0], origins[1]];\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n    VISIBLE = 0,\n    HIDDEN = 1,\n    COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n    name: 'visible',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, visibility: string) => {\n        switch (visibility) {\n            case 'hidden':\n                return VISIBILITY.HIDDEN;\n            case 'collapse':\n                return VISIBILITY.COLLAPSE;\n            case 'visible':\n            default:\n                return VISIBILITY.VISIBLE;\n        }\n    }\n};\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const buffer =\n        typeof ArrayBuffer !== 'undefined' &&\n        typeof Uint8Array !== 'undefined' &&\n        typeof Uint8Array.prototype.slice !== 'undefined'\n            ? new ArrayBuffer(bufferLength)\n            : new Array(bufferLength);\n    const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 2) {\n        bytes.push((buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n    const length = buffer.length;\n    const bytes = [];\n    for (let i = 0; i < length; i += 4) {\n        bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n    }\n    return bytes;\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n    order: number;\n    auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n    name: 'z-index',\n    initialValue: 'auto',\n    prefix: false,\n    type: PropertyDescriptorParsingType.VALUE,\n    parse: (_context: Context, token: CSSValue): zIndex => {\n        if (token.type === TokenType.IDENT_TOKEN) {\n            return {auto: true, order: 0};\n        }\n\n        if (isNumberToken(token)) {\n            return {auto: false, order: token.number};\n        }\n\n        throw new Error(`Invalid z-index number parsed`);\n    }\n};\n","import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n    name: 'time',\n    parse: (_context: Context, value: CSSValue): number => {\n        if (value.type === TokenType.DIMENSION_TOKEN) {\n            switch (value.unit.toLowerCase()) {\n                case 's':\n                    return 1000 * value.number;\n                case 'ms':\n                    return value.number;\n            }\n        }\n\n        throw new Error(`Unsupported time type`);\n    }\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n    name: 'opacity',\n    initialValue: '1',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n        return 1;\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n    name: `text-decoration-color`,\n    initialValue: 'transparent',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n    NONE = 0,\n    UNDERLINE = 1,\n    OVERLINE = 2,\n    LINE_THROUGH = 3,\n    BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n    name: 'text-decoration-line',\n    initialValue: 'none',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n        return tokens\n            .filter(isIdentToken)\n            .map((token) => {\n                switch (token.value) {\n                    case 'underline':\n                        return TEXT_DECORATION_LINE.UNDERLINE;\n                    case 'overline':\n                        return TEXT_DECORATION_LINE.OVERLINE;\n                    case 'line-through':\n                        return TEXT_DECORATION_LINE.LINE_THROUGH;\n                    case 'none':\n                        return TEXT_DECORATION_LINE.BLINK;\n                }\n                return TEXT_DECORATION_LINE.NONE;\n            })\n            .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n    name: `font-family`,\n    initialValue: '',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        const accumulator: string[] = [];\n        const results: string[] = [];\n        tokens.forEach((token) => {\n            switch (token.type) {\n                case TokenType.IDENT_TOKEN:\n                case TokenType.STRING_TOKEN:\n                    accumulator.push(token.value);\n                    break;\n                case TokenType.NUMBER_TOKEN:\n                    accumulator.push(token.number.toString());\n                    break;\n                case TokenType.COMMA_TOKEN:\n                    results.push(accumulator.join(' '));\n                    accumulator.length = 0;\n                    break;\n            }\n        });\n        if (accumulator.length) {\n            results.push(accumulator.join(' '));\n        }\n        return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n    name: `font-size`,\n    initialValue: '0',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'length'\n};\n","import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n    name: 'font-weight',\n    initialValue: 'normal',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isNumberToken(token)) {\n            return token.number;\n        }\n\n        if (isIdentToken(token)) {\n            switch (token.value) {\n                case 'bold':\n                    return 700;\n                case 'normal':\n                default:\n                    return 400;\n            }\n        }\n\n        return 400;\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n    name: 'font-variant',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]): string[] => {\n        return tokens.filter(isIdentToken).map((token) => token.value);\n    }\n};\n","import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n    NORMAL = 'normal',\n    ITALIC = 'italic',\n    OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n    name: 'font-style',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.IDENT_VALUE,\n    parse: (_context: Context, overflow: string) => {\n        switch (overflow) {\n            case 'oblique':\n                return FONT_STYLE.OBLIQUE;\n            case 'italic':\n                return FONT_STYLE.ITALIC;\n            case 'normal':\n            default:\n                return FONT_STYLE.NORMAL;\n        }\n    }\n};\n","export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n","import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n    name: 'content',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return [];\n        }\n\n        return tokens;\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n    counter: string;\n    increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n    name: 'counter-increment',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const increments = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (counter.type === TokenType.IDENT_TOKEN) {\n                const increment = next && isNumberToken(next) ? next.number : 1;\n                increments.push({counter: counter.value, increment});\n            }\n        }\n\n        return increments;\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n    counter: string;\n    reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n    name: 'counter-reset',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return [];\n        }\n\n        const resets = [];\n        const filtered = tokens.filter(nonWhiteSpace);\n\n        for (let i = 0; i < filtered.length; i++) {\n            const counter = filtered[i];\n            const next = filtered[i + 1];\n            if (isIdentToken(counter) && counter.value !== 'none') {\n                const reset = next && isNumberToken(next) ? next.number : 0;\n                resets.push({counter: counter.value, reset});\n            }\n        }\n\n        return resets;\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n    name: 'duration',\n    initialValue: '0s',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (context: Context, tokens: CSSValue[]) => {\n        return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n    open: string;\n    close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n    name: 'quotes',\n    initialValue: 'none',\n    prefix: true,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]) => {\n        if (tokens.length === 0) {\n            return null;\n        }\n\n        const first = tokens[0];\n\n        if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n            return null;\n        }\n\n        const quotes = [];\n        const filtered = tokens.filter(isStringToken);\n\n        if (filtered.length % 2 !== 0) {\n            return null;\n        }\n\n        for (let i = 0; i < filtered.length; i += 2) {\n            const open = filtered[i].value;\n            const close = filtered[i + 1].value;\n            quotes.push({open, close});\n        }\n\n        return quotes;\n    }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n    if (!quotes) {\n        return '';\n    }\n\n    const quote = quotes[Math.min(depth, quotes.length - 1)];\n    if (!quote) {\n        return '';\n    }\n\n    return open ? quote.open : quote.close;\n};\n","import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n    inset: boolean;\n    color: Color;\n    offsetX: Length;\n    offsetY: Length;\n    blur: Length;\n    spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n    name: 'box-shadow',\n    initialValue: 'none',\n    type: PropertyDescriptorParsingType.LIST,\n    prefix: false,\n    parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n        if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n            return [];\n        }\n\n        return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n            const shadow: BoxShadowItem = {\n                color: 0x000000ff,\n                offsetX: ZERO_LENGTH,\n                offsetY: ZERO_LENGTH,\n                blur: ZERO_LENGTH,\n                spread: ZERO_LENGTH,\n                inset: false\n            };\n            let c = 0;\n            for (let i = 0; i < values.length; i++) {\n                const token = values[i];\n                if (isIdentWithValue(token, 'inset')) {\n                    shadow.inset = true;\n                } else if (isLength(token)) {\n                    if (c === 0) {\n                        shadow.offsetX = token;\n                    } else if (c === 1) {\n                        shadow.offsetY = token;\n                    } else if (c === 2) {\n                        shadow.blur = token;\n                    } else {\n                        shadow.spread = token;\n                    }\n                    c++;\n                } else {\n                    shadow.color = color.parse(context, token);\n                }\n            }\n            return shadow;\n        });\n    }\n};\n","import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n    FILL,\n    STROKE,\n    MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n    name: 'paint-order',\n    initialValue: 'normal',\n    prefix: false,\n    type: PropertyDescriptorParsingType.LIST,\n    parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n        const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n        const layers: PaintOrder = [];\n\n        tokens.filter(isIdentToken).forEach((token) => {\n            switch (token.value) {\n                case 'stroke':\n                    layers.push(PAINT_ORDER_LAYER.STROKE);\n                    break;\n                case 'fill':\n                    layers.push(PAINT_ORDER_LAYER.FILL);\n                    break;\n                case 'markers':\n                    layers.push(PAINT_ORDER_LAYER.MARKERS);\n                    break;\n            }\n        });\n        DEFAULT_VALUE.forEach((value) => {\n            if (layers.indexOf(value) === -1) {\n                layers.push(value);\n            }\n        });\n\n        return layers;\n    }\n};\n","import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n    name: `-webkit-text-stroke-color`,\n    initialValue: 'currentcolor',\n    prefix: false,\n    type: PropertyDescriptorParsingType.TYPE_VALUE,\n    format: 'color'\n};\n","import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n    name: `-webkit-text-stroke-width`,\n    initialValue: '0',\n    type: PropertyDescriptorParsingType.VALUE,\n    prefix: false,\n    parse: (_context: Context, token: CSSValue): number => {\n        if (isDimensionToken(token)) {\n            return token.number;\n        }\n        return 0;\n    }\n};\n","import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n    borderBottomColor,\n    borderLeftColor,\n    borderRightColor,\n    borderTopColor\n} from './property-descriptors/border-color';\nimport {\n    borderBottomLeftRadius,\n    borderBottomRightRadius,\n    borderTopLeftRadius,\n    borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n    borderBottomStyle,\n    borderLeftStyle,\n    borderRightStyle,\n    borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n    borderBottomWidth,\n    borderLeftWidth,\n    borderRightWidth,\n    borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n    animationDuration: ReturnType<typeof duration.parse>;\n    backgroundClip: ReturnType<typeof backgroundClip.parse>;\n    backgroundColor: Color;\n    backgroundImage: ReturnType<typeof backgroundImage.parse>;\n    backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n    backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n    backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n    backgroundSize: ReturnType<typeof backgroundSize.parse>;\n    borderTopColor: Color;\n    borderRightColor: Color;\n    borderBottomColor: Color;\n    borderLeftColor: Color;\n    borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n    borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n    borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n    borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n    borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n    borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n    borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n    borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n    borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n    borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n    borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n    borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n    boxShadow: ReturnType<typeof boxShadow.parse>;\n    color: Color;\n    direction: ReturnType<typeof direction.parse>;\n    display: ReturnType<typeof display.parse>;\n    float: ReturnType<typeof float.parse>;\n    fontFamily: ReturnType<typeof fontFamily.parse>;\n    fontSize: LengthPercentage;\n    fontStyle: ReturnType<typeof fontStyle.parse>;\n    fontVariant: ReturnType<typeof fontVariant.parse>;\n    fontWeight: ReturnType<typeof fontWeight.parse>;\n    letterSpacing: ReturnType<typeof letterSpacing.parse>;\n    lineBreak: ReturnType<typeof lineBreak.parse>;\n    lineHeight: CSSValue;\n    listStyleImage: ReturnType<typeof listStyleImage.parse>;\n    listStylePosition: ReturnType<typeof listStylePosition.parse>;\n    listStyleType: ReturnType<typeof listStyleType.parse>;\n    marginTop: CSSValue;\n    marginRight: CSSValue;\n    marginBottom: CSSValue;\n    marginLeft: CSSValue;\n    opacity: ReturnType<typeof opacity.parse>;\n    overflowX: OVERFLOW;\n    overflowY: OVERFLOW;\n    overflowWrap: ReturnType<typeof overflowWrap.parse>;\n    paddingTop: LengthPercentage;\n    paddingRight: LengthPercentage;\n    paddingBottom: LengthPercentage;\n    paddingLeft: LengthPercentage;\n    paintOrder: ReturnType<typeof paintOrder.parse>;\n    position: ReturnType<typeof position.parse>;\n    textAlign: ReturnType<typeof textAlign.parse>;\n    textDecorationColor: Color;\n    textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n    textShadow: ReturnType<typeof textShadow.parse>;\n    textTransform: ReturnType<typeof textTransform.parse>;\n    transform: ReturnType<typeof transform.parse>;\n    transformOrigin: ReturnType<typeof transformOrigin.parse>;\n    visibility: ReturnType<typeof visibility.parse>;\n    webkitTextStrokeColor: Color;\n    webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n    wordBreak: ReturnType<typeof wordBreak.parse>;\n    zIndex: ReturnType<typeof zIndex.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.animationDuration = parse(context, duration, declaration.animationDuration);\n        this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n        this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n        this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n        this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n        this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n        this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n        this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n        this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n        this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n        this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n        this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n        this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n        this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n        this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n        this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n        this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n        this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n        this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n        this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n        this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n        this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n        this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n        this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n        this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n        this.color = parse(context, color, declaration.color);\n        this.direction = parse(context, direction, declaration.direction);\n        this.display = parse(context, display, declaration.display);\n        this.float = parse(context, float, declaration.cssFloat);\n        this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n        this.fontSize = parse(context, fontSize, declaration.fontSize);\n        this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n        this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n        this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n        this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n        this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n        this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n        this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n        this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n        this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n        this.marginTop = parse(context, marginTop, declaration.marginTop);\n        this.marginRight = parse(context, marginRight, declaration.marginRight);\n        this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n        this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n        this.opacity = parse(context, opacity, declaration.opacity);\n        const overflowTuple = parse(context, overflow, declaration.overflow);\n        this.overflowX = overflowTuple[0];\n        this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n        this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n        this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n        this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n        this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n        this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n        this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n        this.position = parse(context, position, declaration.position);\n        this.textAlign = parse(context, textAlign, declaration.textAlign);\n        this.textDecorationColor = parse(\n            context,\n            textDecorationColor,\n            declaration.textDecorationColor ?? declaration.color\n        );\n        this.textDecorationLine = parse(\n            context,\n            textDecorationLine,\n            declaration.textDecorationLine ?? declaration.textDecoration\n        );\n        this.textShadow = parse(context, textShadow, declaration.textShadow);\n        this.textTransform = parse(context, textTransform, declaration.textTransform);\n        this.transform = parse(context, transform, declaration.transform);\n        this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n        this.visibility = parse(context, visibility, declaration.visibility);\n        this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n        this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n        this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n        this.zIndex = parse(context, zIndex, declaration.zIndex);\n    }\n\n    isVisible(): boolean {\n        return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n    }\n\n    isTransparent(): boolean {\n        return isTransparent(this.backgroundColor);\n    }\n\n    isTransformed(): boolean {\n        return this.transform !== null;\n    }\n\n    isPositioned(): boolean {\n        return this.position !== POSITION.STATIC;\n    }\n\n    isPositionedWithZIndex(): boolean {\n        return this.isPositioned() && !this.zIndex.auto;\n    }\n\n    isFloating(): boolean {\n        return this.float !== FLOAT.NONE;\n    }\n\n    isInlineLevel(): boolean {\n        return (\n            contains(this.display, DISPLAY.INLINE) ||\n            contains(this.display, DISPLAY.INLINE_BLOCK) ||\n            contains(this.display, DISPLAY.INLINE_FLEX) ||\n            contains(this.display, DISPLAY.INLINE_GRID) ||\n            contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n            contains(this.display, DISPLAY.INLINE_TABLE)\n        );\n    }\n}\n\nexport class CSSParsedPseudoDeclaration {\n    content: ReturnType<typeof content.parse>;\n    quotes: ReturnType<typeof quotes.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.content = parse(context, content, declaration.content);\n        this.quotes = parse(context, quotes, declaration.quotes);\n    }\n}\n\nexport class CSSParsedCounterDeclaration {\n    counterIncrement: ReturnType<typeof counterIncrement.parse>;\n    counterReset: ReturnType<typeof counterReset.parse>;\n\n    constructor(context: Context, declaration: CSSStyleDeclaration) {\n        this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n        this.counterReset = parse(context, counterReset, declaration.counterReset);\n    }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n    const tokenizer = new Tokenizer();\n    const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n    tokenizer.write(value);\n    const parser = new Parser(tokenizer.read());\n    switch (descriptor.type) {\n        case PropertyDescriptorParsingType.IDENT_VALUE:\n            const token = parser.parseComponentValue();\n            return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n        case PropertyDescriptorParsingType.VALUE:\n            return descriptor.parse(context, parser.parseComponentValue());\n        case PropertyDescriptorParsingType.LIST:\n            return descriptor.parse(context, parser.parseComponentValues());\n        case PropertyDescriptorParsingType.TOKEN_VALUE:\n            return parser.parseComponentValue();\n        case PropertyDescriptorParsingType.TYPE_VALUE:\n            switch (descriptor.format) {\n                case 'angle':\n                    return angle.parse(context, parser.parseComponentValue());\n                case 'color':\n                    return colorType.parse(context, parser.parseComponentValue());\n                case 'image':\n                    return image.parse(context, parser.parseComponentValue());\n                case 'length':\n                    const length = parser.parseComponentValue();\n                    return isLength(length) ? length : ZERO_LENGTH;\n                case 'length-percentage':\n                    const value = parser.parseComponentValue();\n                    return isLengthPercentage(value) ? value : ZERO_LENGTH;\n                case 'time':\n                    return time.parse(context, parser.parseComponentValue());\n            }\n            break;\n    }\n};\n","const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n    NONE,\n    ALL,\n    CLONE,\n    PARSE,\n    RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n    const attribute = element.getAttribute(elementDebuggerAttribute);\n    switch (attribute) {\n        case 'all':\n            return DebuggerType.ALL;\n        case 'clone':\n            return DebuggerType.CLONE;\n        case 'parse':\n            return DebuggerType.PARSE;\n        case 'render':\n            return DebuggerType.RENDER;\n        default:\n            return DebuggerType.NONE;\n    }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n    const elementType = getElementDebugType(element);\n    return elementType === DebuggerType.ALL || type === elementType;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n    CREATES_STACKING_CONTEXT = 1 << 1,\n    CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n    IS_LIST_OWNER = 1 << 3,\n    DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n    readonly styles: CSSParsedDeclaration;\n    readonly textNodes: TextContainer[] = [];\n    readonly elements: ElementContainer[] = [];\n    bounds: Bounds;\n    flags = 0;\n\n    constructor(protected readonly context: Context, element: Element) {\n        if (isDebugging(element, DebuggerType.PARSE)) {\n            debugger;\n        }\n\n        this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n        if (isHTMLElementNode(element)) {\n            if (this.styles.animationDuration.some((duration) => duration > 0)) {\n                element.style.animationDuration = '0s';\n            }\n\n            if (this.styles.transform !== null) {\n                // getBoundingClientRect takes transforms into account\n                element.style.transform = 'none';\n            }\n        }\n\n        this.bounds = parseBounds(this.context, element);\n\n        if (isDebugging(element, DebuggerType.RENDER)) {\n            this.flags |= FLAGS.DEBUG_RENDER;\n        }\n    }\n}\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n    lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n    let bytes = new Uint8Array(arraybuffer),\n        i,\n        len = bytes.length,\n        base64 = '';\n\n    for (i = 0; i < len; i += 3) {\n        base64 += chars[bytes[i] >> 2];\n        base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n        base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n        base64 += chars[bytes[i + 2] & 63];\n    }\n\n    if (len % 3 === 2) {\n        base64 = base64.substring(0, base64.length - 1) + '=';\n    } else if (len % 3 === 1) {\n        base64 = base64.substring(0, base64.length - 2) + '==';\n    }\n\n    return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n    let bufferLength = base64.length * 0.75,\n        len = base64.length,\n        i,\n        p = 0,\n        encoded1,\n        encoded2,\n        encoded3,\n        encoded4;\n\n    if (base64[base64.length - 1] === '=') {\n        bufferLength--;\n        if (base64[base64.length - 2] === '=') {\n            bufferLength--;\n        }\n    }\n\n    const arraybuffer = new ArrayBuffer(bufferLength),\n        bytes = new Uint8Array(arraybuffer);\n\n    for (i = 0; i < len; i += 4) {\n        encoded1 = lookup[base64.charCodeAt(i)];\n        encoded2 = lookup[base64.charCodeAt(i + 1)];\n        encoded3 = lookup[base64.charCodeAt(i + 2)];\n        encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n        bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n        bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n        bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n    }\n\n    return arraybuffer;\n};\n","import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n    if (view.slice) {\n        return view.slice(start, end);\n    }\n\n    return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n    const buffer = decode(base64);\n    const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n    const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n    const headerLength = 24;\n\n    const index = slice16(view16, headerLength / 2, view32[4] / 2);\n    const data =\n        view32[5] === 2\n            ? slice16(view16, (headerLength + view32[4]) / 2)\n            : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n    return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n    initialValue: int;\n    errorValue: int;\n    highStart: int;\n    highValueIndex: int;\n    index: Uint16Array | number[];\n    data: Uint32Array | Uint16Array | number[];\n\n    constructor(\n        initialValue: int,\n        errorValue: int,\n        highStart: int,\n        highValueIndex: int,\n        index: Uint16Array | number[],\n        data: Uint32Array | Uint16Array | number[]\n    ) {\n        this.initialValue = initialValue;\n        this.errorValue = errorValue;\n        this.highStart = highStart;\n        this.highValueIndex = highValueIndex;\n        this.index = index;\n        this.data = data;\n    }\n\n    /**\n     * Get the value for a code point as stored in the Trie.\n     *\n     * @param codePoint the code point\n     * @return the value\n     */\n    get(codePoint: number): number {\n        let ix;\n        if (codePoint >= 0) {\n            if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n                // Ordinary BMP code point, excluding leading surrogates.\n                // BMP uses a single level lookup.  BMP index starts at offset 0 in the Trie2 index.\n                // 16 bit data is stored in the index array itself.\n                ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint <= 0xffff) {\n                // Lead Surrogate Code Point.  A Separate index section is stored for\n                // lead surrogate code units and code points.\n                //   The main index has the code unit data.\n                //   For this function, we need the code point data.\n                // Note: this expression could be refactored for slightly improved efficiency, but\n                //       surrogate code points will be so rare in practice that it's not worth it.\n                ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n\n            if (codePoint < this.highStart) {\n                // Supplemental code point, use two-level lookup.\n                ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n                ix = this.index[ix];\n                ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n                ix = this.index[ix];\n                ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n                return this.data[ix];\n            }\n            if (codePoint <= 0x10ffff) {\n                return this.data[this.highValueIndex];\n            }\n        }\n\n        // Fall through.  The code point is outside of the legal range of 0..0x10ffff.\n        return this.errorValue;\n    }\n}\n","import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n    Other,\n    Prepend,\n    CR,\n    LF,\n    Control,\n    Extend,\n    Regional_Indicator,\n    SpacingMark,\n    L,\n    V,\n    T,\n    LV,\n    LVT,\n    ZWJ,\n    Extended_Pictographic,\n    RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n    const codePoints = [];\n    let i = 0;\n    const length = str.length;\n    while (i < length) {\n        const value = str.charCodeAt(i++);\n        if (value >= 0xd800 && value <= 0xdbff && i < length) {\n            const extra = str.charCodeAt(i++);\n            if ((extra & 0xfc00) === 0xdc00) {\n                codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n            } else {\n                codePoints.push(value);\n                i--;\n            }\n        } else {\n            codePoints.push(value);\n        }\n    }\n    return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n    if (String.fromCodePoint) {\n        return String.fromCodePoint(...codePoints);\n    }\n\n    const length = codePoints.length;\n    if (!length) {\n        return '';\n    }\n\n    const codeUnits = [];\n\n    let index = -1;\n    let result = '';\n    while (++index < length) {\n        let codePoint = codePoints[index];\n        if (codePoint <= 0xffff) {\n            codeUnits.push(codePoint);\n        } else {\n            codePoint -= 0x10000;\n            codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n        }\n        if (index + 1 === length || codeUnits.length > 0x4000) {\n            result += String.fromCharCode(...codeUnits);\n            codeUnits.length = 0;\n        }\n    }\n    return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n    let prevIndex = index - 2;\n    let prev = classTypes[prevIndex];\n    const current = classTypes[index - 1];\n    const next = classTypes[index];\n    // GB3 Do not break between a CR and LF\n    if (current === CR && next === LF) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB4 Otherwise, break before and after controls.\n    if (current === CR || current === LF || current === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB5\n    if (next === CR || next === LF || next === Control) {\n        return BREAK_ALLOWED;\n    }\n\n    // Do not break Hangul syllable sequences.\n    // GB6\n    if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB7\n    if ((current === LV || current === V) && (next === V || next === T)) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB8\n    if ((current === LVT || current === T) && next === T) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9 Do not break before extending characters or ZWJ.\n    if (next === ZWJ || next === Extend) {\n        return BREAK_NOT_ALLOWED;\n    }\n    // Do not break before SpacingMarks, or after Prepend characters.\n    // GB9a\n    if (next === SpacingMark) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB9a\n    if (current === Prepend) {\n        return BREAK_NOT_ALLOWED;\n    }\n\n    // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n    if (current === ZWJ && next === Extended_Pictographic) {\n        while (prev === Extend) {\n            prev = classTypes[--prevIndex];\n        }\n        if (prev === Extended_Pictographic) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    // GB12 Do not break within emoji flag sequences.\n    // That is, do not break between regional indicator (RI) symbols\n    // if there is an odd number of RI characters before the break point.\n    if (current === RI && next === RI) {\n        let countRI = 0;\n        while (prev === RI) {\n            countRI++;\n            prev = classTypes[--prevIndex];\n        }\n        if (countRI % 2 === 0) {\n            return BREAK_NOT_ALLOWED;\n        }\n    }\n\n    return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n    // GB1 Break at the start and end of text, unless the text is empty.\n    if (index === 0) {\n        return BREAK_ALLOWED;\n    }\n\n    // GB2\n    if (index >= codePoints.length) {\n        return BREAK_ALLOWED;\n    }\n\n    const classTypes = codePoints.map(codePointToClass);\n    return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n    const codePoints = toCodePoints(str);\n    const length = codePoints.length;\n    let index = 0;\n    let lastEnd = 0;\n    const classTypes = codePoints.map(codePointToClass);\n\n    return {\n        next: () => {\n            if (index >= length) {\n                return {done: true, value: null};\n            }\n\n            let graphemeBreak = BREAK_NOT_ALLOWED;\n            while (\n                index < length &&\n                (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n            ) {}\n\n            if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n                const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n                lastEnd = index;\n                return {value, done: false};\n            }\n\n            return {done: true, value: null};\n            while (index < length) {}\n\n            return {done: true, value: null};\n        },\n    };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n    const breaker = GraphemeBreaker(str);\n\n    const graphemes = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            graphemes.push(bk.value.slice());\n        }\n    }\n\n    return graphemes;\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {\n    isBodyElement,\n    isCanvasElement,\n    isCustomElement,\n    isElementNode,\n    isHTMLElementNode,\n    isIFrameElement,\n    isImageElement,\n    isScriptElement,\n    isSelectElement,\n    isSlotElement,\n    isStyleElement,\n    isSVGElementNode,\n    isTextareaElement,\n    isTextNode,\n    isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n    ignoreElements?: (element: Element) => boolean;\n    onclone?: (document: Document, element: HTMLElement) => void;\n    allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n    scrollX: number;\n    scrollY: number;\n    windowWidth: number;\n    windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n    inlineImages: boolean;\n    copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n    private readonly scrolledElements: [Element, number, number][];\n    private readonly referenceElement: HTMLElement;\n    clonedReferenceElement?: HTMLElement;\n    private readonly documentElement: HTMLElement;\n    private readonly counters: CounterState;\n    private quoteDepth: number;\n\n    constructor(\n        private readonly context: Context,\n        element: HTMLElement,\n        private readonly options: CloneConfigurations\n    ) {\n        this.scrolledElements = [];\n        this.referenceElement = element;\n        this.counters = new CounterState();\n        this.quoteDepth = 0;\n        if (!element.ownerDocument) {\n            throw new Error('Cloned element does not have an owner document');\n        }\n\n        this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n    }\n\n    toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n        const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n        if (!iframe.contentWindow) {\n            return Promise.reject(`Unable to find iframe window`);\n        }\n\n        const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n        const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n        const cloneWindow = iframe.contentWindow;\n        const documentClone: Document = cloneWindow.document;\n\n        /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n         if window url is about:blank, we can assign the url to current by writing onto the document\n         */\n\n        const iframeLoad = iframeLoader(iframe).then(async () => {\n            this.scrolledElements.forEach(restoreNodeScroll);\n            if (cloneWindow) {\n                cloneWindow.scrollTo(windowSize.left, windowSize.top);\n                if (\n                    /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n                    (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n                ) {\n                    this.context.logger.warn('Unable to restore scroll position for cloned document');\n                    this.context.windowBounds = this.context.windowBounds.add(\n                        cloneWindow.scrollX - windowSize.left,\n                        cloneWindow.scrollY - windowSize.top,\n                        0,\n                        0\n                    );\n                }\n            }\n\n            const onclone = this.options.onclone;\n\n            const referenceElement = this.clonedReferenceElement;\n\n            if (typeof referenceElement === 'undefined') {\n                return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n            }\n\n            if (documentClone.fonts && documentClone.fonts.ready) {\n                await documentClone.fonts.ready;\n            }\n\n            if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n                await imagesReady(documentClone);\n            }\n\n            if (typeof onclone === 'function') {\n                return Promise.resolve()\n                    .then(() => onclone(documentClone, referenceElement))\n                    .then(() => iframe);\n            }\n\n            return iframe;\n        });\n\n        documentClone.open();\n        documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n        // Chrome scrolls the parent document for some reason after the write to the cloned window???\n        restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n        documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n        documentClone.close();\n\n        return iframeLoad;\n    }\n\n    createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n        if (isDebugging(node, DebuggerType.CLONE)) {\n            debugger;\n        }\n        if (isCanvasElement(node)) {\n            return this.createCanvasClone(node);\n        }\n        if (isVideoElement(node)) {\n            return this.createVideoClone(node);\n        }\n        if (isStyleElement(node)) {\n            return this.createStyleClone(node);\n        }\n\n        const clone = node.cloneNode(false) as T;\n        if (isImageElement(clone)) {\n            if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n                clone.src = node.currentSrc;\n                clone.srcset = '';\n            }\n\n            if (clone.loading === 'lazy') {\n                clone.loading = 'eager';\n            }\n        }\n\n        if (isCustomElement(clone)) {\n            return this.createCustomElementClone(clone);\n        }\n\n        return clone;\n    }\n\n    createCustomElementClone(node: HTMLElement): HTMLElement {\n        const clone = document.createElement('html2canvascustomelement');\n        copyCSSStyles(node.style, clone);\n\n        return clone;\n    }\n\n    createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n        try {\n            const sheet = node.sheet as CSSStyleSheet | undefined;\n            if (sheet && sheet.cssRules) {\n                const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n                    if (rule && typeof rule.cssText === 'string') {\n                        return css + rule.cssText;\n                    }\n                    return css;\n                }, '');\n                const style = node.cloneNode(false) as HTMLStyleElement;\n                style.textContent = css;\n                return style;\n            }\n        } catch (e) {\n            // accessing node.sheet.cssRules throws a DOMException\n            this.context.logger.error('Unable to access cssRules property', e);\n            if (e.name !== 'SecurityError') {\n                throw e;\n            }\n        }\n        return node.cloneNode(false) as HTMLStyleElement;\n    }\n\n    createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n        if (this.options.inlineImages && canvas.ownerDocument) {\n            const img = canvas.ownerDocument.createElement('img');\n            try {\n                img.src = canvas.toDataURL();\n                return img;\n            } catch (e) {\n                this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n            }\n        }\n\n        const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n        try {\n            clonedCanvas.width = canvas.width;\n            clonedCanvas.height = canvas.height;\n            const ctx = canvas.getContext('2d');\n            const clonedCtx = clonedCanvas.getContext('2d');\n            if (clonedCtx) {\n                if (!this.options.allowTaint && ctx) {\n                    clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n                } else {\n                    const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n                    if (gl) {\n                        const attribs = gl.getContextAttributes();\n                        if (attribs?.preserveDrawingBuffer === false) {\n                            this.context.logger.warn(\n                                'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n                                canvas\n                            );\n                        }\n                    }\n\n                    clonedCtx.drawImage(canvas, 0, 0);\n                }\n            }\n            return clonedCanvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n        }\n\n        return clonedCanvas;\n    }\n\n    createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n        const canvas = video.ownerDocument.createElement('canvas');\n\n        canvas.width = video.offsetWidth;\n        canvas.height = video.offsetHeight;\n        const ctx = canvas.getContext('2d');\n\n        try {\n            if (ctx) {\n                ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n                if (!this.options.allowTaint) {\n                    ctx.getImageData(0, 0, canvas.width, canvas.height);\n                }\n            }\n            return canvas;\n        } catch (e) {\n            this.context.logger.info(`Unable to clone video as it is tainted`, video);\n        }\n\n        const blankCanvas = video.ownerDocument.createElement('canvas');\n\n        blankCanvas.width = video.offsetWidth;\n        blankCanvas.height = video.offsetHeight;\n        return blankCanvas;\n    }\n\n    appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n        if (\n            !isElementNode(child) ||\n            (!isScriptElement(child) &&\n                !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n                (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n        ) {\n            if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n                clone.appendChild(this.cloneNode(child, copyStyles));\n            }\n        }\n    }\n\n    cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n        for (\n            let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n            child;\n            child = child.nextSibling\n        ) {\n            if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n                const assignedNodes = child.assignedNodes() as ChildNode[];\n                if (assignedNodes.length) {\n                    assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n                }\n            } else {\n                this.appendChildNode(clone, child, copyStyles);\n            }\n        }\n    }\n\n    cloneNode(node: Node, copyStyles: boolean): Node {\n        if (isTextNode(node)) {\n            return document.createTextNode(node.data);\n        }\n\n        if (!node.ownerDocument) {\n            return node.cloneNode(false);\n        }\n\n        const window = node.ownerDocument.defaultView;\n\n        if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n            const clone = this.createElementClone(node);\n            clone.style.transitionProperty = 'none';\n\n            const style = window.getComputedStyle(node);\n            const styleBefore = window.getComputedStyle(node, ':before');\n            const styleAfter = window.getComputedStyle(node, ':after');\n\n            if (this.referenceElement === node && isHTMLElementNode(clone)) {\n                this.clonedReferenceElement = clone;\n            }\n            if (isBodyElement(clone)) {\n                createPseudoHideStyles(clone);\n            }\n\n            const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n            const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n            if (isCustomElement(node)) {\n                copyStyles = true;\n            }\n\n            if (!isVideoElement(node)) {\n                this.cloneChildNodes(node, clone, copyStyles);\n            }\n\n            if (before) {\n                clone.insertBefore(before, clone.firstChild);\n            }\n\n            const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n            if (after) {\n                clone.appendChild(after);\n            }\n\n            this.counters.pop(counters);\n\n            if (\n                (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n                copyStyles\n            ) {\n                copyCSSStyles(style, clone);\n            }\n\n            if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n                this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n            }\n\n            if (\n                (isTextareaElement(node) || isSelectElement(node)) &&\n                (isTextareaElement(clone) || isSelectElement(clone))\n            ) {\n                clone.value = node.value;\n            }\n\n            return clone;\n        }\n\n        return node.cloneNode(false);\n    }\n\n    resolvePseudoContent(\n        node: Element,\n        clone: Element,\n        style: CSSStyleDeclaration,\n        pseudoElt: PseudoElementType\n    ): HTMLElement | void {\n        if (!style) {\n            return;\n        }\n\n        const value = style.content;\n        const document = clone.ownerDocument;\n        if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n            return;\n        }\n\n        this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n        const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n        const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n        copyCSSStyles(style, anonymousReplacedElement);\n\n        declaration.content.forEach((token) => {\n            if (token.type === TokenType.STRING_TOKEN) {\n                anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n            } else if (token.type === TokenType.URL_TOKEN) {\n                const img = document.createElement('img');\n                img.src = token.value;\n                img.style.opacity = '1';\n                anonymousReplacedElement.appendChild(img);\n            } else if (token.type === TokenType.FUNCTION) {\n                if (token.name === 'attr') {\n                    const attr = token.values.filter(isIdentToken);\n                    if (attr.length) {\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(node.getAttribute(attr[0].value) || '')\n                        );\n                    }\n                } else if (token.name === 'counter') {\n                    const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterState = this.counters.getCounterValue(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(createCounterText(counterState, counterType, false))\n                        );\n                    }\n                } else if (token.name === 'counters') {\n                    const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n                    if (counter && isIdentToken(counter)) {\n                        const counterStates = this.counters.getCounterValues(counter.value);\n                        const counterType =\n                            counterStyle && isIdentToken(counterStyle)\n                                ? listStyleType.parse(this.context, counterStyle.value)\n                                : LIST_STYLE_TYPE.DECIMAL;\n                        const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n                        const text = counterStates\n                            .map((value) => createCounterText(value, counterType, false))\n                            .join(separator);\n\n                        anonymousReplacedElement.appendChild(document.createTextNode(text));\n                    }\n                } else {\n                    //   console.log('FUNCTION_TOKEN', token);\n                }\n            } else if (token.type === TokenType.IDENT_TOKEN) {\n                switch (token.value) {\n                    case 'open-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n                        );\n                        break;\n                    case 'close-quote':\n                        anonymousReplacedElement.appendChild(\n                            document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n                        );\n                        break;\n                    default:\n                        // safari doesn't parse string tokens correctly because of lack of quotes\n                        anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n                }\n            }\n        });\n\n        anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n        const newClassName =\n            pseudoElt === PseudoElementType.BEFORE\n                ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n                : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n        if (isSVGElementNode(clone)) {\n            clone.className.baseValue += newClassName;\n        } else {\n            clone.className += newClassName;\n        }\n\n        return anonymousReplacedElement;\n    }\n\n    static destroy(container: HTMLIFrameElement): boolean {\n        if (container.parentNode) {\n            container.parentNode.removeChild(container);\n            return true;\n        }\n        return false;\n    }\n}\n\nenum PseudoElementType {\n    BEFORE,\n    AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n    const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n    cloneIframeContainer.className = 'html2canvas-container';\n    cloneIframeContainer.style.visibility = 'hidden';\n    cloneIframeContainer.style.position = 'fixed';\n    cloneIframeContainer.style.left = '-10000px';\n    cloneIframeContainer.style.top = '0px';\n    cloneIframeContainer.style.border = '0';\n    cloneIframeContainer.width = bounds.width.toString();\n    cloneIframeContainer.height = bounds.height.toString();\n    cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n    cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n    ownerDocument.body.appendChild(cloneIframeContainer);\n\n    return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n    return new Promise((resolve) => {\n        if (img.complete) {\n            resolve();\n            return;\n        }\n        if (!img.src) {\n            resolve();\n            return;\n        }\n        img.onload = resolve;\n        img.onerror = resolve;\n    });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n    return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n    return new Promise((resolve, reject) => {\n        const cloneWindow = iframe.contentWindow;\n\n        if (!cloneWindow) {\n            return reject(`No window assigned for iframe`);\n        }\n\n        const documentClone = cloneWindow.document;\n\n        cloneWindow.onload = iframe.onload = () => {\n            cloneWindow.onload = iframe.onload = null;\n            const interval = setInterval(() => {\n                if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n                    clearInterval(interval);\n                    resolve(iframe);\n                }\n            }, 50);\n        };\n    });\n};\n\nconst ignoredStyleProperties = [\n    'all', // #2476\n    'd', // #2483\n    'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n    // Edge does not provide value for cssText\n    for (let i = style.length - 1; i >= 0; i--) {\n        const property = style.item(i);\n        if (ignoredStyleProperties.indexOf(property) === -1) {\n            target.style.setProperty(property, style.getPropertyValue(property));\n        }\n    }\n    return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n    let str = '';\n    if (doctype) {\n        str += '<!DOCTYPE ';\n        if (doctype.name) {\n            str += doctype.name;\n        }\n\n        if (doctype.internalSubset) {\n            str += doctype.internalSubset;\n        }\n\n        if (doctype.publicId) {\n            str += `\"${doctype.publicId}\"`;\n        }\n\n        if (doctype.systemId) {\n            str += `\"${doctype.systemId}\"`;\n        }\n\n        str += '>';\n    }\n\n    return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n    if (\n        ownerDocument &&\n        ownerDocument.defaultView &&\n        (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n    ) {\n        ownerDocument.defaultView.scrollTo(x, y);\n    }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n    element.scrollLeft = x;\n    element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n    content: \"\" !important;\n    display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n    createStyles(\n        body,\n        `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n         .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n    );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n    const document = body.ownerDocument;\n    if (document) {\n        const style = document.createElement('style');\n        style.textContent = styles;\n        body.appendChild(style);\n    }\n};\n","export const base64 =\n    'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n","import {fromCodePoint, toCodePoints} from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n    const TEST_HEIGHT = 123;\n\n    if (document.createRange) {\n        const range = document.createRange();\n        if (range.getBoundingClientRect) {\n            const testElement = document.createElement('boundtest');\n            testElement.style.height = `${TEST_HEIGHT}px`;\n            testElement.style.display = 'block';\n            document.body.appendChild(testElement);\n\n            range.selectNode(testElement);\n            const rangeBounds = range.getBoundingClientRect();\n            const rangeHeight = Math.round(rangeBounds.height);\n            document.body.removeChild(testElement);\n            if (rangeHeight === TEST_HEIGHT) {\n                return true;\n            }\n        }\n    }\n\n    return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n    const testElement = document.createElement('boundtest');\n    testElement.style.width = '50px';\n    testElement.style.display = 'block';\n    testElement.style.fontSize = '12px';\n    testElement.style.letterSpacing = '0px';\n    testElement.style.wordSpacing = '0px';\n    document.body.appendChild(testElement);\n    const range = document.createRange();\n\n    testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n    const node = testElement.firstChild as Text;\n\n    const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n    let offset = 0;\n    let prev: DOMRect = {} as DOMRect;\n\n    // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n    const supports = textList.every((text, i) => {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + text.length);\n        const rect = range.getBoundingClientRect();\n\n        offset += text.length;\n        const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n        prev = rect;\n        if (i === 0) {\n            return true;\n        }\n\n        return boundAhead;\n    });\n\n    document.body.removeChild(testElement);\n    return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n    const img = new Image();\n    const canvas = document.createElement('canvas');\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return false;\n    }\n\n    img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n    try {\n        ctx.drawImage(img, 0, 0);\n        canvas.toDataURL();\n    } catch (e) {\n        return false;\n    }\n    return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n    data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n    const canvas = document.createElement('canvas');\n    const size = 100;\n    canvas.width = size;\n    canvas.height = size;\n    const ctx = canvas.getContext('2d');\n    if (!ctx) {\n        return Promise.reject(false);\n    }\n    ctx.fillStyle = 'rgb(0, 255, 0)';\n    ctx.fillRect(0, 0, size, size);\n\n    const img = new Image();\n    const greenImageSrc = canvas.toDataURL();\n    img.src = greenImageSrc;\n    const svg = createForeignObjectSVG(size, size, 0, 0, img);\n    ctx.fillStyle = 'red';\n    ctx.fillRect(0, 0, size, size);\n\n    return loadSerializedSVG(svg)\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            const data = ctx.getImageData(0, 0, size, size).data;\n            ctx.fillStyle = 'red';\n            ctx.fillRect(0, 0, size, size);\n\n            const node = document.createElement('div');\n            node.style.backgroundImage = `url(${greenImageSrc})`;\n            node.style.height = `${size}px`;\n            // Firefox 55 does not render inline <img /> tags\n            return isGreenPixel(data)\n                ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n                : Promise.reject(false);\n        })\n        .then((img: HTMLImageElement) => {\n            ctx.drawImage(img, 0, 0);\n            // Edge does not render background-images\n            return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n        })\n        .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n    width: number,\n    height: number,\n    x: number,\n    y: number,\n    node: Node\n): SVGForeignObjectElement => {\n    const xmlns = 'http://www.w3.org/2000/svg';\n    const svg = document.createElementNS(xmlns, 'svg');\n    const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n    svg.setAttributeNS(null, 'width', width.toString());\n    svg.setAttributeNS(null, 'height', height.toString());\n\n    foreignObject.setAttributeNS(null, 'width', '100%');\n    foreignObject.setAttributeNS(null, 'height', '100%');\n    foreignObject.setAttributeNS(null, 'x', x.toString());\n    foreignObject.setAttributeNS(null, 'y', y.toString());\n    foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n    svg.appendChild(foreignObject);\n\n    foreignObject.appendChild(node);\n\n    return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => resolve(img);\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n};\n\nexport const FEATURES = {\n    get SUPPORT_RANGE_BOUNDS(): boolean {\n        'use strict';\n        const value = testRangeBounds(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n        return value;\n    },\n    get SUPPORT_WORD_BREAKING(): boolean {\n        'use strict';\n        const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n        return value;\n    },\n    get SUPPORT_SVG_DRAWING(): boolean {\n        'use strict';\n        const value = testSVG(document);\n        Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n        'use strict';\n        const value =\n            typeof Array.from === 'function' && typeof window.fetch === 'function'\n                ? testForeignObject(document)\n                : Promise.resolve(false);\n        Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n        return value;\n    },\n    get SUPPORT_CORS_IMAGES(): boolean {\n        'use strict';\n        const value = testCORS();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n        return value;\n    },\n    get SUPPORT_RESPONSE_TYPE(): boolean {\n        'use strict';\n        const value = testResponseType();\n        Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n        return value;\n    },\n    get SUPPORT_CORS_XHR(): boolean {\n        'use strict';\n        const value = 'withCredentials' in new XMLHttpRequest();\n        Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n        return value;\n    },\n    get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n        'use strict';\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n        Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n        return value;\n    }\n};\n","import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n    readonly text: string;\n    readonly bounds: Bounds;\n\n    constructor(text: string, bounds: Bounds) {\n        this.text = text;\n        this.bounds = bounds;\n    }\n}\n\nexport const parseTextBounds = (\n    context: Context,\n    value: string,\n    styles: CSSParsedDeclaration,\n    node: Text\n): TextBounds[] => {\n    const textList = breakText(value, styles);\n    const textBounds: TextBounds[] = [];\n    let offset = 0;\n    textList.forEach((text) => {\n        if (styles.textDecorationLine.length || text.trim().length > 0) {\n            if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n                const clientRects = createRange(node, offset, text.length).getClientRects();\n                if (clientRects.length > 1) {\n                    const subSegments = segmentGraphemes(text);\n                    let subOffset = 0;\n                    subSegments.forEach((subSegment) => {\n                        textBounds.push(\n                            new TextBounds(\n                                subSegment,\n                                Bounds.fromDOMRectList(\n                                    context,\n                                    createRange(node, subOffset + offset, subSegment.length).getClientRects()\n                                )\n                            )\n                        );\n                        subOffset += subSegment.length;\n                    });\n                } else {\n                    textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n                }\n            } else {\n                const replacementNode = node.splitText(text.length);\n                textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n                node = replacementNode;\n            }\n        } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n            node = node.splitText(text.length);\n        }\n        offset += text.length;\n    });\n\n    return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n    const ownerDocument = node.ownerDocument;\n    if (ownerDocument) {\n        const wrapper = ownerDocument.createElement('html2canvaswrapper');\n        wrapper.appendChild(node.cloneNode(true));\n        const parentNode = node.parentNode;\n        if (parentNode) {\n            parentNode.replaceChild(wrapper, node);\n            const bounds = parseBounds(context, wrapper);\n            if (wrapper.firstChild) {\n                parentNode.replaceChild(wrapper.firstChild, wrapper);\n            }\n            return bounds;\n        }\n    }\n\n    return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n    const ownerDocument = node.ownerDocument;\n    if (!ownerDocument) {\n        throw new Error('Node has no owner document');\n    }\n    const range = ownerDocument.createRange();\n    range.setStart(node, offset);\n    range.setEnd(node, offset + length);\n    return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n    if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        const segmenter = new (Intl as any).Segmenter(void 0, {\n            granularity: 'word'\n        });\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n    }\n\n    return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n    return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n    const breaker = LineBreaker(str, {\n        lineBreak: styles.lineBreak,\n        wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n    });\n\n    const words = [];\n    let bk;\n\n    while (!(bk = breaker.next()).done) {\n        if (bk.value) {\n            const value = bk.value.slice();\n            const codePoints = toCodePoints(value);\n            let word = '';\n            codePoints.forEach((codePoint) => {\n                if (wordSeparators.indexOf(codePoint) === -1) {\n                    word += fromCodePoint(codePoint);\n                } else {\n                    if (word.length) {\n                        words.push(word);\n                    }\n                    words.push(fromCodePoint(codePoint));\n                    word = '';\n                }\n            });\n\n            if (word.length) {\n                words.push(word);\n            }\n        }\n    }\n\n    return words;\n};\n","import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n    text: string;\n    textBounds: TextBounds[];\n\n    constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n        this.text = transform(node.data, styles.textTransform);\n        this.textBounds = parseTextBounds(context, this.text, styles, node);\n    }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n    switch (transform) {\n        case TEXT_TRANSFORM.LOWERCASE:\n            return text.toLowerCase();\n        case TEXT_TRANSFORM.CAPITALIZE:\n            return text.replace(CAPITALIZE, capitalize);\n        case TEXT_TRANSFORM.UPPERCASE:\n            return text.toUpperCase();\n        default:\n            return text;\n    }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n    if (m.length > 0) {\n        return p1 + p2.toUpperCase();\n    }\n\n    return m;\n};\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n    src: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: HTMLImageElement) {\n        super(context, img);\n        this.src = img.currentSrc || img.src;\n        this.intrinsicWidth = img.naturalWidth;\n        this.intrinsicHeight = img.naturalHeight;\n        this.context.cache.addImage(this.src);\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n    canvas: HTMLCanvasElement;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, canvas: HTMLCanvasElement) {\n        super(context, canvas);\n        this.canvas = canvas;\n        this.intrinsicWidth = canvas.width;\n        this.intrinsicHeight = canvas.height;\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n    svg: string;\n    intrinsicWidth: number;\n    intrinsicHeight: number;\n\n    constructor(context: Context, img: SVGSVGElement) {\n        super(context, img);\n        const s = new XMLSerializer();\n        const bounds = parseBounds(context, img);\n        img.setAttribute('width', `${bounds.width}px`);\n        img.setAttribute('height', `${bounds.height}px`);\n\n        this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n        this.intrinsicWidth = img.width.baseVal.value;\n        this.intrinsicHeight = img.height.baseVal.value;\n\n        this.context.cache.addImage(this.svg);\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n    readonly value: number;\n\n    constructor(context: Context, element: HTMLLIElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n    readonly start: number;\n    readonly reversed: boolean;\n\n    constructor(context: Context, element: HTMLOListElement) {\n        super(context, element);\n        this.start = element.start;\n        this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.DIMENSION_TOKEN,\n        flags: 0,\n        unit: 'px',\n        number: 3\n    }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n    {\n        type: TokenType.PERCENTAGE_TOKEN,\n        flags: 0,\n        number: 50\n    }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n    if (bounds.width > bounds.height) {\n        return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n    } else if (bounds.width < bounds.height) {\n        return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n    }\n    return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n    const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n    return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n    readonly type: string;\n    readonly checked: boolean;\n    readonly value: string;\n\n    constructor(context: Context, input: HTMLInputElement) {\n        super(context, input);\n        this.type = input.type.toLowerCase();\n        this.checked = input.checked;\n        this.value = getInputValue(input);\n\n        if (this.type === CHECKBOX || this.type === RADIO) {\n            this.styles.backgroundColor = 0xdededeff;\n            this.styles.borderTopColor =\n                this.styles.borderRightColor =\n                this.styles.borderBottomColor =\n                this.styles.borderLeftColor =\n                    0xa5a5a5ff;\n            this.styles.borderTopWidth =\n                this.styles.borderRightWidth =\n                this.styles.borderBottomWidth =\n                this.styles.borderLeftWidth =\n                    1;\n            this.styles.borderTopStyle =\n                this.styles.borderRightStyle =\n                this.styles.borderBottomStyle =\n                this.styles.borderLeftStyle =\n                    BORDER_STYLE.SOLID;\n            this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n            this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n            this.bounds = reformatInputBounds(this.bounds);\n        }\n\n        switch (this.type) {\n            case CHECKBOX:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        CHECKBOX_BORDER_RADIUS;\n                break;\n            case RADIO:\n                this.styles.borderTopRightRadius =\n                    this.styles.borderTopLeftRadius =\n                    this.styles.borderBottomRightRadius =\n                    this.styles.borderBottomLeftRadius =\n                        RADIO_BORDER_RADIUS;\n                break;\n        }\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLSelectElement) {\n        super(context, element);\n        const option = element.options[element.selectedIndex || 0];\n        this.value = option ? option.text || '' : '';\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n    readonly value: string;\n    constructor(context: Context, element: HTMLTextAreaElement) {\n        super(context, element);\n        this.value = element.value;\n    }\n}\n","import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n    src: string;\n    width: number;\n    height: number;\n    tree?: ElementContainer;\n    backgroundColor: Color;\n\n    constructor(context: Context, iframe: HTMLIFrameElement) {\n        super(context, iframe);\n        this.src = iframe.src;\n        this.width = parseInt(iframe.width, 10) || 0;\n        this.height = parseInt(iframe.height, 10) || 0;\n        this.backgroundColor = this.styles.backgroundColor;\n        try {\n            if (\n                iframe.contentWindow &&\n                iframe.contentWindow.document &&\n                iframe.contentWindow.document.documentElement\n            ) {\n                this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n                // http://www.w3.org/TR/css3-background/#special-backgrounds\n                const documentBackgroundColor = iframe.contentWindow.document.documentElement\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n                const bodyBackgroundColor = iframe.contentWindow.document.body\n                    ? parseColor(\n                          context,\n                          getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n                      )\n                    : COLORS.TRANSPARENT;\n\n                this.backgroundColor = isTransparent(documentBackgroundColor)\n                    ? isTransparent(bodyBackgroundColor)\n                        ? this.styles.backgroundColor\n                        : bodyBackgroundColor\n                    : documentBackgroundColor;\n            }\n        } catch (e) {}\n    }\n}\n","import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n    for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n        nextNode = childNode.nextSibling;\n\n        if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n            parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n        } else if (isElementNode(childNode)) {\n            if (isSlotElement(childNode) && childNode.assignedNodes) {\n                childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n            } else {\n                const container = createContainer(context, childNode);\n                if (container.styles.isVisible()) {\n                    if (createsRealStackingContext(childNode, container, root)) {\n                        container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n                    } else if (createsStackingContext(container.styles)) {\n                        container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n                    }\n\n                    if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n                        container.flags |= FLAGS.IS_LIST_OWNER;\n                    }\n\n                    parent.elements.push(container);\n                    childNode.slot;\n                    if (childNode.shadowRoot) {\n                        parseNodeTree(context, childNode.shadowRoot, container, root);\n                    } else if (\n                        !isTextareaElement(childNode) &&\n                        !isSVGElement(childNode) &&\n                        !isSelectElement(childNode)\n                    ) {\n                        parseNodeTree(context, childNode, container, root);\n                    }\n                }\n            }\n        }\n    }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n    if (isImageElement(element)) {\n        return new ImageElementContainer(context, element);\n    }\n\n    if (isCanvasElement(element)) {\n        return new CanvasElementContainer(context, element);\n    }\n\n    if (isSVGElement(element)) {\n        return new SVGElementContainer(context, element);\n    }\n\n    if (isLIElement(element)) {\n        return new LIElementContainer(context, element);\n    }\n\n    if (isOLElement(element)) {\n        return new OLElementContainer(context, element);\n    }\n\n    if (isInputElement(element)) {\n        return new InputElementContainer(context, element);\n    }\n\n    if (isSelectElement(element)) {\n        return new SelectElementContainer(context, element);\n    }\n\n    if (isTextareaElement(element)) {\n        return new TextareaElementContainer(context, element);\n    }\n\n    if (isIFrameElement(element)) {\n        return new IFrameElementContainer(context, element);\n    }\n\n    return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n    const container = createContainer(context, element);\n    container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n    parseNodeTree(context, element, container, container);\n    return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n    return (\n        container.styles.isPositionedWithZIndex() ||\n        container.styles.opacity < 1 ||\n        container.styles.isTransformed() ||\n        (isBodyElement(node) && root.styles.isTransparent())\n    );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n    isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n    typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n","import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n    private readonly counters: {[key: string]: number[]} = {};\n\n    getCounterValue(name: string): number {\n        const counter = this.counters[name];\n\n        if (counter && counter.length) {\n            return counter[counter.length - 1];\n        }\n        return 1;\n    }\n\n    getCounterValues(name: string): readonly number[] {\n        const counter = this.counters[name];\n        return counter ? counter : [];\n    }\n\n    pop(counters: string[]): void {\n        counters.forEach((counter) => this.counters[counter].pop());\n    }\n\n    parse(style: CSSParsedCounterDeclaration): string[] {\n        const counterIncrement = style.counterIncrement;\n        const counterReset = style.counterReset;\n        let canReset = true;\n\n        if (counterIncrement !== null) {\n            counterIncrement.forEach((entry) => {\n                const counter = this.counters[entry.counter];\n                if (counter && entry.increment !== 0) {\n                    canReset = false;\n                    if (!counter.length) {\n                        counter.push(1);\n                    }\n                    counter[Math.max(0, counter.length - 1)] += entry.increment;\n                }\n            });\n        }\n\n        const counterNames: string[] = [];\n        if (canReset) {\n            counterReset.forEach((entry) => {\n                let counter = this.counters[entry.counter];\n                counterNames.push(entry.counter);\n                if (!counter) {\n                    counter = this.counters[entry.counter] = [];\n                }\n                counter.push(entry.reset);\n            });\n        }\n\n        return counterNames;\n    }\n}\n\ninterface CounterSymbols {\n    integers: number[];\n    values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n    integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n    values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n    integers: [\n        9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n        60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\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        'Բ',\n        'Ա'\n    ]\n};\n\nconst HEBREW: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n        19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\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        'ג',\n        'ב',\n        'א'\n    ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n    integers: [\n        10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n        80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n    ],\n    values: [\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        'გ',\n        'ბ',\n        'ა'\n    ]\n};\n\nconst createAdditiveCounter = (\n    value: number,\n    min: number,\n    max: number,\n    symbols: CounterSymbols,\n    fallback: LIST_STYLE_TYPE,\n    suffix: string\n) => {\n    if (value < min || value > max) {\n        return createCounterText(value, fallback, suffix.length > 0);\n    }\n\n    return (\n        symbols.integers.reduce((string, integer, index) => {\n            while (value >= integer) {\n                value -= integer;\n                string += symbols.values[index];\n            }\n            return string;\n        }, '') + suffix\n    );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n    value: number,\n    codePointRangeLength: number,\n    isNumeric: boolean,\n    resolver: (codePoint: number) => string\n): string => {\n    let string = '';\n\n    do {\n        if (!isNumeric) {\n            value--;\n        }\n        string = resolver(value) + string;\n        value /= codePointRangeLength;\n    } while (value * codePointRangeLength >= codePointRangeLength);\n\n    return string;\n};\n\nconst createCounterStyleFromRange = (\n    value: number,\n    codePointRangeStart: number,\n    codePointRangeEnd: number,\n    isNumeric: boolean,\n    suffix: string\n): string => {\n    const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n    return (\n        (value < 0 ? '-' : '') +\n        (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n            fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n        ) +\n            suffix)\n    );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n    const codePointRangeLength = symbols.length;\n    return (\n        createCounterStyleWithSymbolResolver(\n            Math.abs(value),\n            codePointRangeLength,\n            false,\n            (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n        ) + suffix\n    );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n    value: number,\n    numbers: string,\n    multipliers: string,\n    negativeSign: string,\n    suffix: string,\n    flags: number\n): string => {\n    if (value < -9999 || value > 9999) {\n        return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n    }\n    let tmp = Math.abs(value);\n    let string = suffix;\n\n    if (tmp === 0) {\n        return numbers[0] + string;\n    }\n\n    for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n        const coefficient = tmp % 10;\n\n        if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n            string = numbers[coefficient] + string;\n        } else if (\n            coefficient > 1 ||\n            (coefficient === 1 && digit === 0) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n            (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n            (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n        ) {\n            string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n        } else if (coefficient === 1 && digit > 0) {\n            string = multipliers[digit - 1] + string;\n        }\n        tmp = Math.floor(tmp / 10);\n    }\n\n    return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n    const defaultSuffix = appendSuffix ? '. ' : '';\n    const cjkSuffix = appendSuffix ? '、' : '';\n    const koreanSuffix = appendSuffix ? ', ' : '';\n    const spaceSuffix = appendSuffix ? ' ' : '';\n    switch (type) {\n        case LIST_STYLE_TYPE.DISC:\n            return '•' + spaceSuffix;\n        case LIST_STYLE_TYPE.CIRCLE:\n            return '◦' + spaceSuffix;\n        case LIST_STYLE_TYPE.SQUARE:\n            return '◾' + spaceSuffix;\n        case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n            const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n            return string.length < 4 ? `0${string}` : string;\n        case LIST_STYLE_TYPE.CJK_DECIMAL:\n            return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n        case LIST_STYLE_TYPE.LOWER_ROMAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                3999,\n                ROMAN_UPPER,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.UPPER_ROMAN:\n            return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_GREEK:\n            return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ALPHA:\n            return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n        case LIST_STYLE_TYPE.UPPER_ALPHA:\n            return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n        case LIST_STYLE_TYPE.ARABIC_INDIC:\n            return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ARMENIAN:\n        case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n            return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n            return createAdditiveCounter(\n                value,\n                1,\n                9999,\n                ARMENIAN,\n                LIST_STYLE_TYPE.DECIMAL,\n                defaultSuffix\n            ).toLowerCase();\n        case LIST_STYLE_TYPE.BENGALI:\n            return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CAMBODIAN:\n        case LIST_STYLE_TYPE.KHMER:\n            return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n        case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n            return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n            return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n        case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n        case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參肆伍陸柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '負',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n            return createCJKCounter(\n                value,\n                '零一二三四五六七八九',\n                CHINESE_INFORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹贰叁肆伍陆柒捌玖',\n                CHINESE_FORMAL_MULTIPLIERS,\n                '负',\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n            return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n        case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壱弐参四伍六七八九',\n                '拾百千万',\n                JAPANESE_NEGATIVE,\n                cjkSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n            return createCJKCounter(\n                value,\n                '영일이삼사오육칠팔구',\n                '십백천만',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n            return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n        case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n            return createCJKCounter(\n                value,\n                '零壹貳參四五六七八九',\n                '拾百千',\n                KOREAN_NEGATIVE,\n                koreanSuffix,\n                CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n            );\n        case LIST_STYLE_TYPE.DEVANAGARI:\n            return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GEORGIAN:\n            return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.GUJARATI:\n            return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.GURMUKHI:\n            return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.HEBREW:\n            return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n        case LIST_STYLE_TYPE.HIRAGANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n            );\n        case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n            );\n        case LIST_STYLE_TYPE.KANNADA:\n            return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.KATAKANA:\n            return createCounterStyleFromSymbols(\n                value,\n                'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.KATAKANA_IROHA:\n            return createCounterStyleFromSymbols(\n                value,\n                'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n                cjkSuffix\n            );\n        case LIST_STYLE_TYPE.LAO:\n            return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MONGOLIAN:\n            return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n        case LIST_STYLE_TYPE.MYANMAR:\n            return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n        case LIST_STYLE_TYPE.ORIYA:\n            return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.PERSIAN:\n            return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TAMIL:\n            return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TELUGU:\n            return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n        case LIST_STYLE_TYPE.THAI:\n            return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n        case LIST_STYLE_TYPE.TIBETAN:\n            return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n        case LIST_STYLE_TYPE.DECIMAL:\n        default:\n            return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n    }\n};\n","import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n    readonly topLeftBorderDoubleOuterBox: Path;\n    readonly topRightBorderDoubleOuterBox: Path;\n    readonly bottomRightBorderDoubleOuterBox: Path;\n    readonly bottomLeftBorderDoubleOuterBox: Path;\n    readonly topLeftBorderDoubleInnerBox: Path;\n    readonly topRightBorderDoubleInnerBox: Path;\n    readonly bottomRightBorderDoubleInnerBox: Path;\n    readonly bottomLeftBorderDoubleInnerBox: Path;\n    readonly topLeftBorderStroke: Path;\n    readonly topRightBorderStroke: Path;\n    readonly bottomRightBorderStroke: Path;\n    readonly bottomLeftBorderStroke: Path;\n    readonly topLeftBorderBox: Path;\n    readonly topRightBorderBox: Path;\n    readonly bottomRightBorderBox: Path;\n    readonly bottomLeftBorderBox: Path;\n    readonly topLeftPaddingBox: Path;\n    readonly topRightPaddingBox: Path;\n    readonly bottomRightPaddingBox: Path;\n    readonly bottomLeftPaddingBox: Path;\n    readonly topLeftContentBox: Path;\n    readonly topRightContentBox: Path;\n    readonly bottomRightContentBox: Path;\n    readonly bottomLeftContentBox: Path;\n\n    constructor(element: ElementContainer) {\n        const styles = element.styles;\n        const bounds = element.bounds;\n\n        let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n        let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n        let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n        let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n        const factors = [];\n        factors.push((tlh + trh) / bounds.width);\n        factors.push((blh + brh) / bounds.width);\n        factors.push((tlv + blv) / bounds.height);\n        factors.push((trv + brv) / bounds.height);\n        const maxFactor = Math.max(...factors);\n\n        if (maxFactor > 1) {\n            tlh /= maxFactor;\n            tlv /= maxFactor;\n            trh /= maxFactor;\n            trv /= maxFactor;\n            brh /= maxFactor;\n            brv /= maxFactor;\n            blh /= maxFactor;\n            blv /= maxFactor;\n        }\n\n        const topWidth = bounds.width - trh;\n        const rightHeight = bounds.height - brv;\n        const bottomWidth = bounds.width - brh;\n        const leftHeight = bounds.height - blv;\n\n        const borderTopWidth = styles.borderTopWidth;\n        const borderRightWidth = styles.borderRightWidth;\n        const borderBottomWidth = styles.borderBottomWidth;\n        const borderLeftWidth = styles.borderLeftWidth;\n\n        const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n        const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n        const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n        const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n        this.topLeftBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + borderTopWidth / 3,\n                      tlh - borderLeftWidth / 3,\n                      tlv - borderTopWidth / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n        this.topRightBorderDoubleOuterBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 3,\n                      trh - borderRightWidth / 3,\n                      trv - borderTopWidth / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n        this.bottomRightBorderDoubleOuterBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 3,\n                      brv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 3,\n                      bounds.top + bounds.height - borderBottomWidth / 3\n                  );\n        this.bottomLeftBorderDoubleOuterBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 3,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 3,\n                      blv - borderBottomWidth / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n        this.topLeftBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      tlh - (borderLeftWidth * 2) / 3,\n                      tlv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n        this.topRightBorderDoubleInnerBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + (borderTopWidth * 2) / 3,\n                      trh - (borderRightWidth * 2) / 3,\n                      trv - (borderTopWidth * 2) / 3,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + (borderTopWidth * 2) / 3\n                  );\n        this.bottomRightBorderDoubleInnerBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - (borderRightWidth * 2) / 3,\n                      brv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.bottomLeftBorderDoubleInnerBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + leftHeight,\n                      blh - (borderLeftWidth * 2) / 3,\n                      blv - (borderBottomWidth * 2) / 3,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + (borderLeftWidth * 2) / 3,\n                      bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n                  );\n        this.topLeftBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + borderTopWidth / 2,\n                      tlh - borderLeftWidth / 2,\n                      tlv - borderTopWidth / 2,\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n        this.topRightBorderStroke =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + topWidth,\n                      bounds.top + borderTopWidth / 2,\n                      trh - borderRightWidth / 2,\n                      trv - borderTopWidth / 2,\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n        this.bottomRightBorderStroke =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + bottomWidth,\n                      bounds.top + rightHeight,\n                      brh - borderRightWidth / 2,\n                      brv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth / 2,\n                      bounds.top + bounds.height - borderBottomWidth / 2\n                  );\n        this.bottomLeftBorderStroke =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth / 2,\n                      bounds.top + leftHeight,\n                      blh - borderLeftWidth / 2,\n                      blv - borderBottomWidth / 2,\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n        this.topLeftBorderBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n                : new Vector(bounds.left, bounds.top);\n        this.topRightBorderBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top);\n        this.bottomRightBorderBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n                : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n        this.bottomLeftBorderBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n                : new Vector(bounds.left, bounds.top + bounds.height);\n        this.topLeftPaddingBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + borderTopWidth,\n                      Math.max(0, tlh - borderLeftWidth),\n                      Math.max(0, tlv - borderTopWidth),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n        this.topRightPaddingBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n                      bounds.top + borderTopWidth,\n                      topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n                      Math.max(0, trv - borderTopWidth),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n        this.bottomRightPaddingBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n                      bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, brh - borderRightWidth),\n                      Math.max(0, brv - borderBottomWidth),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - borderRightWidth,\n                      bounds.top + bounds.height - borderBottomWidth\n                  );\n        this.bottomLeftPaddingBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth,\n                      bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n                      Math.max(0, blh - borderLeftWidth),\n                      Math.max(0, blv - borderBottomWidth),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n        this.topLeftContentBox =\n            tlh > 0 || tlv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + borderTopWidth + paddingTop,\n                      Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n                      Math.max(0, tlv - (borderTopWidth + paddingTop)),\n                      CORNER.TOP_LEFT\n                  )\n                : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n        this.topRightContentBox =\n            trh > 0 || trv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n                      bounds.top + borderTopWidth + paddingTop,\n                      topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n                      trv - (borderTopWidth + paddingTop),\n                      CORNER.TOP_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + borderTopWidth + paddingTop\n                  );\n        this.bottomRightContentBox =\n            brh > 0 || brv > 0\n                ? getCurvePoints(\n                      bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n                      bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n                      Math.max(0, brh - (borderRightWidth + paddingRight)),\n                      brv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_RIGHT\n                  )\n                : new Vector(\n                      bounds.left + bounds.width - (borderRightWidth + paddingRight),\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n        this.bottomLeftContentBox =\n            blh > 0 || blv > 0\n                ? getCurvePoints(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + leftHeight,\n                      Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n                      blv - (borderBottomWidth + paddingBottom),\n                      CORNER.BOTTOM_LEFT\n                  )\n                : new Vector(\n                      bounds.left + borderLeftWidth + paddingLeft,\n                      bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n                  );\n    }\n}\n\nenum CORNER {\n    TOP_LEFT = 0,\n    TOP_RIGHT = 1,\n    BOTTOM_RIGHT = 2,\n    BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n    const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n    const ox = r1 * kappa; // control point offset horizontal\n    const oy = r2 * kappa; // control point offset vertical\n    const xm = x + r1; // x-middle\n    const ym = y + r2; // y-middle\n\n    switch (position) {\n        case CORNER.TOP_LEFT:\n            return new BezierCurve(\n                new Vector(x, ym),\n                new Vector(x, ym - oy),\n                new Vector(xm - ox, y),\n                new Vector(xm, y)\n            );\n        case CORNER.TOP_RIGHT:\n            return new BezierCurve(\n                new Vector(x, y),\n                new Vector(x + ox, y),\n                new Vector(xm, ym - oy),\n                new Vector(xm, ym)\n            );\n        case CORNER.BOTTOM_RIGHT:\n            return new BezierCurve(\n                new Vector(xm, y),\n                new Vector(xm, y + oy),\n                new Vector(x + ox, ym),\n                new Vector(x, ym)\n            );\n        case CORNER.BOTTOM_LEFT:\n        default:\n            return new BezierCurve(\n                new Vector(xm, ym),\n                new Vector(xm - ox, ym),\n                new Vector(x, y + oy),\n                new Vector(x, y)\n            );\n    }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n    return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftContentBox,\n        curves.topRightContentBox,\n        curves.bottomRightContentBox,\n        curves.bottomLeftContentBox\n    ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n    return [\n        curves.topLeftPaddingBox,\n        curves.topRightPaddingBox,\n        curves.bottomRightPaddingBox,\n        curves.bottomLeftPaddingBox\n    ];\n};\n","import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n    private static _link?: HTMLAnchorElement;\n    private static _origin = 'about:blank';\n\n    static getOrigin(url: string): string {\n        const link = CacheStorage._link;\n        if (!link) {\n            return 'about:blank';\n        }\n\n        link.href = url;\n        link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n        return link.protocol + link.hostname + link.port;\n    }\n\n    static isSameOrigin(src: string): boolean {\n        return CacheStorage.getOrigin(src) === CacheStorage._origin;\n    }\n\n    static setContext(window: Window): void {\n        CacheStorage._link = window.document.createElement('a');\n        CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n    }\n}\n\nexport interface ResourceOptions {\n    imageTimeout: number;\n    useCORS: boolean;\n    allowTaint: boolean;\n    proxy?: string;\n}\n\nexport class Cache {\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private readonly _cache: {[key: string]: Promise<any>} = {};\n\n    constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n    addImage(src: string): Promise<void> {\n        const result = Promise.resolve();\n        if (this.has(src)) {\n            return result;\n        }\n\n        if (isBlobImage(src) || isRenderable(src)) {\n            (this._cache[src] = this.loadImage(src)).catch(() => {\n                // prevent unhandled rejection\n            });\n            return result;\n        }\n\n        return result;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    match(src: string): Promise<any> {\n        return this._cache[src];\n    }\n\n    private async loadImage(key: string) {\n        const isSameOrigin = CacheStorage.isSameOrigin(key);\n        const useCORS =\n            !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n        const useProxy =\n            !isInlineImage(key) &&\n            !isSameOrigin &&\n            !isBlobImage(key) &&\n            typeof this._options.proxy === 'string' &&\n            FEATURES.SUPPORT_CORS_XHR &&\n            !useCORS;\n        if (\n            !isSameOrigin &&\n            this._options.allowTaint === false &&\n            !isInlineImage(key) &&\n            !isBlobImage(key) &&\n            !useProxy &&\n            !useCORS\n        ) {\n            return;\n        }\n\n        let src = key;\n        if (useProxy) {\n            src = await this.proxy(src);\n        }\n\n        this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n        return await new Promise((resolve, reject) => {\n            const img = new Image();\n            img.onload = () => resolve(img);\n            img.onerror = reject;\n            //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n            if (isInlineBase64Image(src) || useCORS) {\n                img.crossOrigin = 'anonymous';\n            }\n            img.src = src;\n            if (img.complete === true) {\n                // Inline XML images may fail to parse, throwing an Error later on\n                setTimeout(() => resolve(img), 500);\n            }\n            if (this._options.imageTimeout > 0) {\n                setTimeout(\n                    () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n                    this._options.imageTimeout\n                );\n            }\n        });\n    }\n\n    private has(key: string): boolean {\n        return typeof this._cache[key] !== 'undefined';\n    }\n\n    keys(): Promise<string[]> {\n        return Promise.resolve(Object.keys(this._cache));\n    }\n\n    private proxy(src: string): Promise<string> {\n        const proxy = this._options.proxy;\n\n        if (!proxy) {\n            throw new Error('No proxy defined');\n        }\n\n        const key = src.substring(0, 256);\n\n        return new Promise((resolve, reject) => {\n            const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n            const xhr = new XMLHttpRequest();\n            xhr.onload = () => {\n                if (xhr.status === 200) {\n                    if (responseType === 'text') {\n                        resolve(xhr.response);\n                    } else {\n                        const reader = new FileReader();\n                        reader.addEventListener('load', () => resolve(reader.result as string), false);\n                        reader.addEventListener('error', (e) => reject(e), false);\n                        reader.readAsDataURL(xhr.response);\n                    }\n                } else {\n                    reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n                }\n            };\n\n            xhr.onerror = reject;\n            const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n            xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n            if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n                xhr.responseType = responseType;\n            }\n\n            if (this._options.imageTimeout) {\n                const timeout = this._options.imageTimeout;\n                xhr.timeout = timeout;\n                xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n            }\n\n            xhr.send();\n        });\n    }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n","import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n    type: PathType;\n    x: number;\n    y: number;\n\n    constructor(x: number, y: number) {\n        this.type = PathType.VECTOR;\n        this.x = x;\n        this.y = y;\n    }\n\n    add(deltaX: number, deltaY: number): Vector {\n        return new Vector(this.x + deltaX, this.y + deltaY);\n    }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n","import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n    return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n    type: PathType;\n    start: Vector;\n    startControl: Vector;\n    endControl: Vector;\n    end: Vector;\n\n    constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n        this.type = PathType.BEZIER_CURVE;\n        this.start = start;\n        this.startControl = startControl;\n        this.endControl = endControl;\n        this.end = end;\n    }\n\n    subdivide(t: number, firstHalf: boolean): BezierCurve {\n        const ab = lerp(this.start, this.startControl, t);\n        const bc = lerp(this.startControl, this.endControl, t);\n        const cd = lerp(this.endControl, this.end, t);\n        const abbc = lerp(ab, bc, t);\n        const bccd = lerp(bc, cd, t);\n        const dest = lerp(abbc, bccd, t);\n        return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n    }\n\n    add(deltaX: number, deltaY: number): BezierCurve {\n        return new BezierCurve(\n            this.start.add(deltaX, deltaY),\n            this.startControl.add(deltaX, deltaY),\n            this.endControl.add(deltaX, deltaY),\n            this.end.add(deltaX, deltaY)\n        );\n    }\n\n    reverse(): BezierCurve {\n        return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n    }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n","import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n    TRANSFORM = 0,\n    CLIP = 1,\n    OPACITY = 2\n}\n\nexport const enum EffectTarget {\n    BACKGROUND_BORDERS = 1 << 1,\n    CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n    readonly type: EffectType;\n    readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.TRANSFORM;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.CLIP;\n\n    constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n    readonly type: EffectType = EffectType.OPACITY;\n    readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n    constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n    effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n","import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n    VECTOR = 0,\n    BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n    type: PathType;\n    add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n    if (a.length === b.length) {\n        return a.some((v, i) => v === b[i]);\n    }\n\n    return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n    return path.map((point, index) => {\n        switch (index) {\n            case 0:\n                return point.add(deltaX, deltaY);\n            case 1:\n                return point.add(deltaX + deltaW, deltaY);\n            case 2:\n                return point.add(deltaX + deltaW, deltaY + deltaH);\n            case 3:\n                return point.add(deltaX, deltaY + deltaH);\n        }\n        return point;\n    });\n};\n\nexport type Path = Vector | BezierCurve;\n","import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n    element: ElementPaint;\n    negativeZIndex: StackingContext[];\n    zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n    positiveZIndex: StackingContext[];\n    nonPositionedFloats: StackingContext[];\n    nonPositionedInlineLevel: StackingContext[];\n    inlineLevel: ElementPaint[];\n    nonInlineLevel: ElementPaint[];\n\n    constructor(container: ElementPaint) {\n        this.element = container;\n        this.inlineLevel = [];\n        this.nonInlineLevel = [];\n        this.negativeZIndex = [];\n        this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n        this.positiveZIndex = [];\n        this.nonPositionedFloats = [];\n        this.nonPositionedInlineLevel = [];\n    }\n}\n\nexport class ElementPaint {\n    readonly effects: IElementEffect[] = [];\n    readonly curves: BoundCurves;\n    listValue?: string;\n\n    constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n        this.curves = new BoundCurves(this.container);\n        if (this.container.styles.opacity < 1) {\n            this.effects.push(new OpacityEffect(this.container.styles.opacity));\n        }\n\n        if (this.container.styles.transform !== null) {\n            const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n            const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n            const matrix = this.container.styles.transform;\n            this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n        }\n\n        if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n            const borderBox = calculateBorderBoxPath(this.curves);\n            const paddingBox = calculatePaddingBoxPath(this.curves);\n\n            if (equalPath(borderBox, paddingBox)) {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n            } else {\n                this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n                this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n            }\n        }\n    }\n\n    getEffects(target: EffectTarget): IElementEffect[] {\n        let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n        let parent = this.parent;\n        const effects = this.effects.slice(0);\n        while (parent) {\n            const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n            if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n                effects.unshift(...croplessEffects);\n                inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n                if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n                    const borderBox = calculateBorderBoxPath(parent.curves);\n                    const paddingBox = calculatePaddingBoxPath(parent.curves);\n                    if (!equalPath(borderBox, paddingBox)) {\n                        effects.unshift(\n                            new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n                        );\n                    }\n                }\n            } else {\n                effects.unshift(...croplessEffects);\n            }\n\n            parent = parent.parent;\n        }\n\n        return effects.filter((effect) => contains(effect.target, target));\n    }\n}\n\nconst parseStackTree = (\n    parent: ElementPaint,\n    stackingContext: StackingContext,\n    realStackingContext: StackingContext,\n    listItems: ElementPaint[]\n) => {\n    parent.container.elements.forEach((child) => {\n        const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n        const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n        const paintContainer = new ElementPaint(child, parent);\n        if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n            listItems.push(paintContainer);\n        }\n\n        const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n        if (treatAsRealStackingContext || createsStackingContext) {\n            const parentStack =\n                treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n            const stack = new StackingContext(paintContainer);\n\n            if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n                const order = child.styles.zIndex.order;\n                if (order < 0) {\n                    let index = 0;\n\n                    parentStack.negativeZIndex.some((current, i) => {\n                        if (order > current.element.container.styles.zIndex.order) {\n                            index = i;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.negativeZIndex.splice(index, 0, stack);\n                } else if (order > 0) {\n                    let index = 0;\n                    parentStack.positiveZIndex.some((current, i) => {\n                        if (order >= current.element.container.styles.zIndex.order) {\n                            index = i + 1;\n                            return false;\n                        } else if (index > 0) {\n                            return true;\n                        }\n\n                        return false;\n                    });\n                    parentStack.positiveZIndex.splice(index, 0, stack);\n                } else {\n                    parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n                }\n            } else {\n                if (child.styles.isFloating()) {\n                    parentStack.nonPositionedFloats.push(stack);\n                } else {\n                    parentStack.nonPositionedInlineLevel.push(stack);\n                }\n            }\n\n            parseStackTree(\n                paintContainer,\n                stack,\n                treatAsRealStackingContext ? stack : realStackingContext,\n                listOwnerItems\n            );\n        } else {\n            if (child.styles.isInlineLevel()) {\n                stackingContext.inlineLevel.push(paintContainer);\n            } else {\n                stackingContext.nonInlineLevel.push(paintContainer);\n            }\n\n            parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n        }\n\n        if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n            processListItems(child, listOwnerItems);\n        }\n    });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n    let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n    const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n    for (let i = 0; i < elements.length; i++) {\n        const item = elements[i];\n        if (\n            item.container instanceof LIElementContainer &&\n            typeof item.container.value === 'number' &&\n            item.container.value !== 0\n        ) {\n            numbering = item.container.value;\n        }\n\n        item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n        numbering += reversed ? -1 : 1;\n    }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n    const paintContainer = new ElementPaint(container, null);\n    const root = new StackingContext(paintContainer);\n    const listItems: ElementPaint[] = [];\n    parseStackTree(paintContainer, root, root, listItems);\n    processListItems(paintContainer.container, listItems);\n    return root;\n};\n","import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox,\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderBox,\n                curves.topRightBorderDoubleOuterBox,\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderBox,\n                curves.bottomRightBorderDoubleOuterBox,\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderBox,\n                curves.bottomLeftBorderDoubleOuterBox,\n                curves.topLeftBorderBox,\n                curves.topLeftBorderDoubleOuterBox\n            );\n    }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createPathFromCurves(\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox,\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox\n            );\n        case 1:\n            return createPathFromCurves(\n                curves.topRightBorderDoubleInnerBox,\n                curves.topRightPaddingBox,\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox\n            );\n        case 2:\n            return createPathFromCurves(\n                curves.bottomRightBorderDoubleInnerBox,\n                curves.bottomRightPaddingBox,\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox\n            );\n        case 3:\n        default:\n            return createPathFromCurves(\n                curves.bottomLeftBorderDoubleInnerBox,\n                curves.bottomLeftPaddingBox,\n                curves.topLeftBorderDoubleInnerBox,\n                curves.topLeftPaddingBox\n            );\n    }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n    switch (borderSide) {\n        case 0:\n            return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n        case 1:\n            return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n        case 2:\n            return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n        case 3:\n        default:\n            return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n    }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n    const path = [];\n    if (isBezierCurve(outer1)) {\n        path.push(outer1.subdivide(0.5, false));\n    } else {\n        path.push(outer1);\n    }\n\n    if (isBezierCurve(outer2)) {\n        path.push(outer2.subdivide(0.5, true));\n    } else {\n        path.push(outer2);\n    }\n\n    if (isBezierCurve(inner2)) {\n        path.push(inner2.subdivide(0.5, true).reverse());\n    } else {\n        path.push(inner2);\n    }\n\n    if (isBezierCurve(inner1)) {\n        path.push(inner1.subdivide(0.5, false).reverse());\n    } else {\n        path.push(inner1);\n    }\n\n    return path;\n};\n","import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n    const bounds = element.bounds;\n    const styles = element.styles;\n    return bounds.add(\n        styles.borderLeftWidth,\n        styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth),\n        -(styles.borderTopWidth + styles.borderBottomWidth)\n    );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n    const styles = element.styles;\n    const bounds = element.bounds;\n\n    const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n    const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n    const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n    const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n    return bounds.add(\n        paddingLeft + styles.borderLeftWidth,\n        paddingTop + styles.borderTopWidth,\n        -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n        -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n    );\n};\n","import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n    backgroundOrigin: BACKGROUND_ORIGIN,\n    element: ElementContainer\n): Bounds => {\n    if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n    if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n        return element.bounds;\n    }\n\n    if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n        return contentBox(element);\n    }\n\n    return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n    container: ElementContainer,\n    index: number,\n    intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n    const backgroundPositioningArea = calculateBackgroundPositioningArea(\n        getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n        container\n    );\n\n    const backgroundPaintingArea = calculateBackgroundPaintingArea(\n        getBackgroundValueForIndex(container.styles.backgroundClip, index),\n        container\n    );\n\n    const backgroundImageSize = calculateBackgroundSize(\n        getBackgroundValueForIndex(container.styles.backgroundSize, index),\n        intrinsicSize,\n        backgroundPositioningArea\n    );\n\n    const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n    const position = getAbsoluteValueForTuple(\n        getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n        backgroundPositioningArea.width - sizeWidth,\n        backgroundPositioningArea.height - sizeHeight\n    );\n\n    const path = calculateBackgroundRepeatPath(\n        getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n        position,\n        backgroundImageSize,\n        backgroundPositioningArea,\n        backgroundPaintingArea\n    );\n\n    const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n    const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n    return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n    size: BackgroundSizeInfo[],\n    [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n    bounds: Bounds\n): [number, number] => {\n    const [first, second] = size;\n\n    if (!first) {\n        return [0, 0];\n    }\n\n    if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n        return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n    }\n\n    const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n    if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n        if (hasIntrinsicValue(intrinsicProportion)) {\n            const targetRatio = bounds.width / bounds.height;\n\n            return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n                ? [bounds.width, bounds.width / intrinsicProportion]\n                : [bounds.height * intrinsicProportion, bounds.height];\n        }\n\n        return [bounds.width, bounds.height];\n    }\n\n    const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n    const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n    const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n    // If the background-size is auto or auto auto:\n    if (isAuto(first) && (!second || isAuto(second))) {\n        // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n        if (hasIntrinsicWidth && hasIntrinsicHeight) {\n            return [intrinsicWidth as number, intrinsicHeight as number];\n        }\n\n        // If the image has no intrinsic dimensions and has no intrinsic proportions,\n        // it's rendered at the size of the background positioning area.\n\n        if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n            return [bounds.width, bounds.height];\n        }\n\n        // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n        // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n        // The other dimension is computed using the specified dimension and the intrinsic proportions.\n        if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n            const width = hasIntrinsicWidth\n                ? (intrinsicWidth as number)\n                : (intrinsicHeight as number) * (intrinsicProportion as number);\n            const height = hasIntrinsicHeight\n                ? (intrinsicHeight as number)\n                : (intrinsicWidth as number) / (intrinsicProportion as number);\n            return [width, height];\n        }\n\n        // If the image has only one intrinsic dimension but has no intrinsic proportions,\n        // it's rendered using the specified dimension and the other dimension of the background positioning area.\n        const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n        const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n        return [width, height];\n    }\n\n    // If the image has intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n    if (hasIntrinsicProportion) {\n        let width = 0;\n        let height = 0;\n        if (isLengthPercentage(first)) {\n            width = getAbsoluteValue(first, bounds.width);\n        } else if (isLengthPercentage(second)) {\n            height = getAbsoluteValue(second, bounds.height);\n        }\n\n        if (isAuto(first)) {\n            width = height * (intrinsicProportion as number);\n        } else if (!second || isAuto(second)) {\n            height = width / (intrinsicProportion as number);\n        }\n\n        return [width, height];\n    }\n\n    // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n    // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n    // if there is one. If there is no such intrinsic dimension,\n    // it becomes the corresponding dimension of the background positioning area.\n\n    let width = null;\n    let height = null;\n\n    if (isLengthPercentage(first)) {\n        width = getAbsoluteValue(first, bounds.width);\n    } else if (second && isLengthPercentage(second)) {\n        height = getAbsoluteValue(second, bounds.height);\n    }\n\n    if (width !== null && (!second || isAuto(second))) {\n        height =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n                : bounds.height;\n    }\n\n    if (height !== null && isAuto(first)) {\n        width =\n            hasIntrinsicWidth && hasIntrinsicHeight\n                ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n                : bounds.width;\n    }\n\n    if (width !== null && height !== null) {\n        return [width, height];\n    }\n\n    throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n    const value = values[index];\n    if (typeof value === 'undefined') {\n        return values[0];\n    }\n\n    return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n    repeat: BACKGROUND_REPEAT,\n    [x, y]: [number, number],\n    [width, height]: [number, number],\n    backgroundPositioningArea: Bounds,\n    backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n    switch (repeat) {\n        case BACKGROUND_REPEAT.REPEAT_X:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left),\n                    Math.round(height + backgroundPositioningArea.top + y)\n                )\n            ];\n        case BACKGROUND_REPEAT.REPEAT_Y:\n            return [\n                new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n                )\n            ];\n        case BACKGROUND_REPEAT.NO_REPEAT:\n            return [\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x + width),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                ),\n                new Vector(\n                    Math.round(backgroundPositioningArea.left + x),\n                    Math.round(backgroundPositioningArea.top + y + height)\n                )\n            ];\n        default:\n            return [\n                new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                ),\n                new Vector(\n                    Math.round(backgroundPaintingArea.left),\n                    Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n                )\n            ];\n    }\n};\n","import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n    baseline: number;\n    middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n    private readonly _data: {[key: string]: FontMetric};\n    private readonly _document: Document;\n\n    constructor(document: Document) {\n        this._data = {};\n        this._document = document;\n    }\n\n    private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const container = this._document.createElement('div');\n        const img = this._document.createElement('img');\n        const span = this._document.createElement('span');\n\n        const body = this._document.body as HTMLBodyElement;\n\n        container.style.visibility = 'hidden';\n        container.style.fontFamily = fontFamily;\n        container.style.fontSize = fontSize;\n        container.style.margin = '0';\n        container.style.padding = '0';\n        container.style.whiteSpace = 'nowrap';\n\n        body.appendChild(container);\n\n        img.src = SMALL_IMAGE;\n        img.width = 1;\n        img.height = 1;\n\n        img.style.margin = '0';\n        img.style.padding = '0';\n        img.style.verticalAlign = 'baseline';\n\n        span.style.fontFamily = fontFamily;\n        span.style.fontSize = fontSize;\n        span.style.margin = '0';\n        span.style.padding = '0';\n\n        span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n        container.appendChild(span);\n        container.appendChild(img);\n        const baseline = img.offsetTop - span.offsetTop + 2;\n\n        container.removeChild(span);\n        container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n        container.style.lineHeight = 'normal';\n        img.style.verticalAlign = 'super';\n\n        const middle = img.offsetTop - container.offsetTop + 2;\n\n        body.removeChild(container);\n\n        return {baseline, middle};\n    }\n    getMetrics(fontFamily: string, fontSize: string): FontMetric {\n        const key = `${fontFamily} ${fontSize}`;\n        if (typeof this._data[key] === 'undefined') {\n            this._data[key] = this.parseMetrics(fontFamily, fontSize);\n        }\n\n        return this._data[key];\n    }\n}\n","export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n","import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n    constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n","import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n    parsePathForBorder,\n    parsePathForBorderDoubleInner,\n    parsePathForBorderDoubleOuter,\n    parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n    backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n    scale: number;\n    canvas?: HTMLCanvasElement;\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    private readonly _activeEffects: IElementEffect[] = [];\n    private readonly fontMetrics: FontMetrics;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        if (!options.canvas) {\n            this.canvas.width = Math.floor(options.width * options.scale);\n            this.canvas.height = Math.floor(options.height * options.scale);\n            this.canvas.style.width = `${options.width}px`;\n            this.canvas.style.height = `${options.height}px`;\n        }\n        this.fontMetrics = new FontMetrics(document);\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.ctx.textBaseline = 'bottom';\n        this._activeEffects = [];\n        this.context.logger.debug(\n            `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n        );\n    }\n\n    applyEffects(effects: IElementEffect[]): void {\n        while (this._activeEffects.length) {\n            this.popEffect();\n        }\n\n        effects.forEach((effect) => this.applyEffect(effect));\n    }\n\n    applyEffect(effect: IElementEffect): void {\n        this.ctx.save();\n        if (isOpacityEffect(effect)) {\n            this.ctx.globalAlpha = effect.opacity;\n        }\n\n        if (isTransformEffect(effect)) {\n            this.ctx.translate(effect.offsetX, effect.offsetY);\n            this.ctx.transform(\n                effect.matrix[0],\n                effect.matrix[1],\n                effect.matrix[2],\n                effect.matrix[3],\n                effect.matrix[4],\n                effect.matrix[5]\n            );\n            this.ctx.translate(-effect.offsetX, -effect.offsetY);\n        }\n\n        if (isClipEffect(effect)) {\n            this.path(effect.path);\n            this.ctx.clip();\n        }\n\n        this._activeEffects.push(effect);\n    }\n\n    popEffect(): void {\n        this._activeEffects.pop();\n        this.ctx.restore();\n    }\n\n    async renderStack(stack: StackingContext): Promise<void> {\n        const styles = stack.element.container.styles;\n        if (styles.isVisible()) {\n            await this.renderStackContent(stack);\n        }\n    }\n\n    async renderNode(paint: ElementPaint): Promise<void> {\n        if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n\n        if (paint.container.styles.isVisible()) {\n            await this.renderNodeBackgroundAndBorders(paint);\n            await this.renderNodeContent(paint);\n        }\n    }\n\n    renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n        if (letterSpacing === 0) {\n            this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n        } else {\n            const letters = segmentGraphemes(text.text);\n            letters.reduce((left, letter) => {\n                this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n                return left + this.ctx.measureText(letter).width;\n            }, text.bounds.left);\n        }\n    }\n\n    private createFontStyle(styles: CSSParsedDeclaration): string[] {\n        const fontVariant = styles.fontVariant\n            .filter((variant) => variant === 'normal' || variant === 'small-caps')\n            .join('');\n        const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n        const fontSize = isDimensionToken(styles.fontSize)\n            ? `${styles.fontSize.number}${styles.fontSize.unit}`\n            : `${styles.fontSize.number}px`;\n\n        return [\n            [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n            fontFamily,\n            fontSize\n        ];\n    }\n\n    async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n        const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n        this.ctx.font = font;\n\n        this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n        this.ctx.textAlign = 'left';\n        this.ctx.textBaseline = 'alphabetic';\n        const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n        const paintOrder = styles.paintOrder;\n\n        text.textBounds.forEach((text) => {\n            paintOrder.forEach((paintOrderLayer) => {\n                switch (paintOrderLayer) {\n                    case PAINT_ORDER_LAYER.FILL:\n                        this.ctx.fillStyle = asString(styles.color);\n                        this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                        const textShadows: TextShadow = styles.textShadow;\n\n                        if (textShadows.length && text.text.trim().length) {\n                            textShadows\n                                .slice(0)\n                                .reverse()\n                                .forEach((textShadow) => {\n                                    this.ctx.shadowColor = asString(textShadow.color);\n                                    this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n                                    this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n                                    this.ctx.shadowBlur = textShadow.blur.number;\n\n                                    this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n                                });\n\n                            this.ctx.shadowColor = '';\n                            this.ctx.shadowOffsetX = 0;\n                            this.ctx.shadowOffsetY = 0;\n                            this.ctx.shadowBlur = 0;\n                        }\n\n                        if (styles.textDecorationLine.length) {\n                            this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n                            styles.textDecorationLine.forEach((textDecorationLine) => {\n                                switch (textDecorationLine) {\n                                    case TEXT_DECORATION_LINE.UNDERLINE:\n                                        // Draws a line at the baseline of the font\n                                        // TODO As some browsers display the line as more than 1px if the font-size is big,\n                                        // need to take that into account both in position and size\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top + baseline),\n                                            text.bounds.width,\n                                            1\n                                        );\n\n                                        break;\n                                    case TEXT_DECORATION_LINE.OVERLINE:\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.round(text.bounds.top),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                    case TEXT_DECORATION_LINE.LINE_THROUGH:\n                                        // TODO try and find exact position for line-through\n                                        this.ctx.fillRect(\n                                            text.bounds.left,\n                                            Math.ceil(text.bounds.top + middle),\n                                            text.bounds.width,\n                                            1\n                                        );\n                                        break;\n                                }\n                            });\n                        }\n                        break;\n                    case PAINT_ORDER_LAYER.STROKE:\n                        if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n                            this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n                            this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n                            // eslint-disable-next-line @typescript-eslint/no-explicit-any\n                            this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n                            this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n                        }\n                        this.ctx.strokeStyle = '';\n                        this.ctx.lineWidth = 0;\n                        this.ctx.lineJoin = 'miter';\n                        break;\n                }\n            });\n        });\n    }\n\n    renderReplacedElement(\n        container: ReplacedElementContainer,\n        curves: BoundCurves,\n        image: HTMLImageElement | HTMLCanvasElement\n    ): void {\n        if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n            const box = contentBox(container);\n            const path = calculatePaddingBoxPath(curves);\n            this.path(path);\n            this.ctx.save();\n            this.ctx.clip();\n            this.ctx.drawImage(\n                image,\n                0,\n                0,\n                container.intrinsicWidth,\n                container.intrinsicHeight,\n                box.left,\n                box.top,\n                box.width,\n                box.height\n            );\n            this.ctx.restore();\n        }\n    }\n\n    async renderNodeContent(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n        const container = paint.container;\n        const curves = paint.curves;\n        const styles = container.styles;\n        for (const child of container.textNodes) {\n            await this.renderTextNode(child, styles);\n        }\n\n        if (container instanceof ImageElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.src);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading image ${container.src}`);\n            }\n        }\n\n        if (container instanceof CanvasElementContainer) {\n            this.renderReplacedElement(container, curves, container.canvas);\n        }\n\n        if (container instanceof SVGElementContainer) {\n            try {\n                const image = await this.context.cache.match(container.svg);\n                this.renderReplacedElement(container, curves, image);\n            } catch (e) {\n                this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n            }\n        }\n\n        if (container instanceof IFrameElementContainer && container.tree) {\n            const iframeRenderer = new CanvasRenderer(this.context, {\n                scale: this.options.scale,\n                backgroundColor: container.backgroundColor,\n                x: 0,\n                y: 0,\n                width: container.width,\n                height: container.height\n            });\n\n            const canvas = await iframeRenderer.render(container.tree);\n            if (container.width && container.height) {\n                this.ctx.drawImage(\n                    canvas,\n                    0,\n                    0,\n                    container.width,\n                    container.height,\n                    container.bounds.left,\n                    container.bounds.top,\n                    container.bounds.width,\n                    container.bounds.height\n                );\n            }\n        }\n\n        if (container instanceof InputElementContainer) {\n            const size = Math.min(container.bounds.width, container.bounds.height);\n\n            if (container.type === CHECKBOX) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.path([\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n                        new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n                        new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n                        new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n                        new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n                        new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n                        new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n                    ]);\n\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            } else if (container.type === RADIO) {\n                if (container.checked) {\n                    this.ctx.save();\n                    this.ctx.beginPath();\n                    this.ctx.arc(\n                        container.bounds.left + size / 2,\n                        container.bounds.top + size / 2,\n                        size / 4,\n                        0,\n                        Math.PI * 2,\n                        true\n                    );\n                    this.ctx.fillStyle = asString(INPUT_COLOR);\n                    this.ctx.fill();\n                    this.ctx.restore();\n                }\n            }\n        }\n\n        if (isTextInputElement(container) && container.value.length) {\n            const [fontFamily, fontSize] = this.createFontStyle(styles);\n            const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n            this.ctx.font = fontFamily;\n            this.ctx.fillStyle = asString(styles.color);\n\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n            const bounds = contentBox(container);\n\n            let x = 0;\n\n            switch (container.styles.textAlign) {\n                case TEXT_ALIGN.CENTER:\n                    x += bounds.width / 2;\n                    break;\n                case TEXT_ALIGN.RIGHT:\n                    x += bounds.width;\n                    break;\n            }\n\n            const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n            this.ctx.save();\n            this.path([\n                new Vector(bounds.left, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top),\n                new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n                new Vector(bounds.left, bounds.top + bounds.height)\n            ]);\n\n            this.ctx.clip();\n            this.renderTextWithLetterSpacing(\n                new TextBounds(container.value, textBounds),\n                styles.letterSpacing,\n                baseline\n            );\n            this.ctx.restore();\n            this.ctx.textBaseline = 'alphabetic';\n            this.ctx.textAlign = 'left';\n        }\n\n        if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n            if (container.styles.listStyleImage !== null) {\n                const img = container.styles.listStyleImage;\n                if (img.type === CSSImageType.URL) {\n                    let image;\n                    const url = (img as CSSURLImage).url;\n                    try {\n                        image = await this.context.cache.match(url);\n                        this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n                    } catch (e) {\n                        this.context.logger.error(`Error loading list-style-image ${url}`);\n                    }\n                }\n            } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n                const [fontFamily] = this.createFontStyle(styles);\n\n                this.ctx.font = fontFamily;\n                this.ctx.fillStyle = asString(styles.color);\n\n                this.ctx.textBaseline = 'middle';\n                this.ctx.textAlign = 'right';\n                const bounds = new Bounds(\n                    container.bounds.left,\n                    container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n                    container.bounds.width,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n                );\n\n                this.renderTextWithLetterSpacing(\n                    new TextBounds(paint.listValue, bounds),\n                    styles.letterSpacing,\n                    computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n                );\n                this.ctx.textBaseline = 'bottom';\n                this.ctx.textAlign = 'left';\n            }\n        }\n    }\n\n    async renderStackContent(stack: StackingContext): Promise<void> {\n        if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n            debugger;\n        }\n        // https://www.w3.org/TR/css-position-3/#painting-order\n        // 1. the background and borders of the element forming the stacking context.\n        await this.renderNodeBackgroundAndBorders(stack.element);\n        // 2. the child stacking contexts with negative stack levels (most negative first).\n        for (const child of stack.negativeZIndex) {\n            await this.renderStack(child);\n        }\n        // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n        await this.renderNodeContent(stack.element);\n\n        for (const child of stack.nonInlineLevel) {\n            await this.renderNode(child);\n        }\n        // 4. All non-positioned floating descendants, in tree order. For each one of these,\n        // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n        // which actually create a new stacking context should be considered part of the parent stacking context,\n        // not this new one.\n        for (const child of stack.nonPositionedFloats) {\n            await this.renderStack(child);\n        }\n        // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n        for (const child of stack.nonPositionedInlineLevel) {\n            await this.renderStack(child);\n        }\n        for (const child of stack.inlineLevel) {\n            await this.renderNode(child);\n        }\n        // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n        //  All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n        //  For those with 'z-index: auto', treat the element as if it created a new stacking context,\n        //  but any positioned descendants and descendants which actually create a new stacking context should be\n        //  considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n        //  treat the stacking context generated atomically.\n        //\n        //  All opacity descendants with opacity less than 1\n        //\n        //  All transform descendants with transform other than none\n        for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n            await this.renderStack(child);\n        }\n        // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n        // order (smallest first) then tree order.\n        for (const child of stack.positiveZIndex) {\n            await this.renderStack(child);\n        }\n    }\n\n    mask(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.ctx.moveTo(0, 0);\n        this.ctx.lineTo(this.canvas.width, 0);\n        this.ctx.lineTo(this.canvas.width, this.canvas.height);\n        this.ctx.lineTo(0, this.canvas.height);\n        this.ctx.lineTo(0, 0);\n        this.formatPath(paths.slice(0).reverse());\n        this.ctx.closePath();\n    }\n\n    path(paths: Path[]): void {\n        this.ctx.beginPath();\n        this.formatPath(paths);\n        this.ctx.closePath();\n    }\n\n    formatPath(paths: Path[]): void {\n        paths.forEach((point, index) => {\n            const start: Vector = isBezierCurve(point) ? point.start : point;\n            if (index === 0) {\n                this.ctx.moveTo(start.x, start.y);\n            } else {\n                this.ctx.lineTo(start.x, start.y);\n            }\n\n            if (isBezierCurve(point)) {\n                this.ctx.bezierCurveTo(\n                    point.startControl.x,\n                    point.startControl.y,\n                    point.endControl.x,\n                    point.endControl.y,\n                    point.end.x,\n                    point.end.y\n                );\n            }\n        });\n    }\n\n    renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n        this.path(path);\n        this.ctx.fillStyle = pattern;\n        this.ctx.translate(offsetX, offsetY);\n        this.ctx.fill();\n        this.ctx.translate(-offsetX, -offsetY);\n    }\n\n    resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n        if (image.width === width && image.height === height) {\n            return image;\n        }\n\n        const ownerDocument = this.canvas.ownerDocument ?? document;\n        const canvas = ownerDocument.createElement('canvas');\n        canvas.width = Math.max(1, width);\n        canvas.height = Math.max(1, height);\n        const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n        ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n        return canvas;\n    }\n\n    async renderBackgroundImage(container: ElementContainer): Promise<void> {\n        let index = container.styles.backgroundImage.length - 1;\n        for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n            if (backgroundImage.type === CSSImageType.URL) {\n                let image;\n                const url = (backgroundImage as CSSURLImage).url;\n                try {\n                    image = await this.context.cache.match(url);\n                } catch (e) {\n                    this.context.logger.error(`Error loading background-image ${url}`);\n                }\n\n                if (image) {\n                    const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n                        image.width,\n                        image.height,\n                        image.width / image.height\n                    ]);\n                    const pattern = this.ctx.createPattern(\n                        this.resizeImage(image, width, height),\n                        'repeat'\n                    ) as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isLinearGradient(backgroundImage)) {\n                const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n                const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n                const canvas = document.createElement('canvas');\n                canvas.width = width;\n                canvas.height = height;\n                const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n                const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n                processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n                    gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                );\n\n                ctx.fillStyle = gradient;\n                ctx.fillRect(0, 0, width, height);\n                if (width > 0 && height > 0) {\n                    const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n                    this.renderRepeat(path, pattern, x, y);\n                }\n            } else if (isRadialGradient(backgroundImage)) {\n                const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n                    null,\n                    null,\n                    null\n                ]);\n                const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n                const x = getAbsoluteValue(position[0], width);\n                const y = getAbsoluteValue(position[position.length - 1], height);\n\n                const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n                if (rx > 0 && ry > 0) {\n                    const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n                    processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n                        radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n                    );\n\n                    this.path(path);\n                    this.ctx.fillStyle = radialGradient;\n                    if (rx !== ry) {\n                        // transforms for elliptical radial gradient\n                        const midX = container.bounds.left + 0.5 * container.bounds.width;\n                        const midY = container.bounds.top + 0.5 * container.bounds.height;\n                        const f = ry / rx;\n                        const invF = 1 / f;\n\n                        this.ctx.save();\n                        this.ctx.translate(midX, midY);\n                        this.ctx.transform(1, 0, 0, f, 0, 0);\n                        this.ctx.translate(-midX, -midY);\n\n                        this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n                        this.ctx.restore();\n                    } else {\n                        this.ctx.fill();\n                    }\n                }\n            }\n            index--;\n        }\n    }\n\n    async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n        this.path(parsePathForBorder(curvePoints, side));\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n    }\n\n    async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n        if (width < 3) {\n            await this.renderSolidBorder(color, side, curvePoints);\n            return;\n        }\n\n        const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n        this.path(outerPaths);\n        this.ctx.fillStyle = asString(color);\n        this.ctx.fill();\n        const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n        this.path(innerPaths);\n        this.ctx.fill();\n    }\n\n    async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n        this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n        const styles = paint.container.styles;\n        const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n        const borders = [\n            {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n            {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n            {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n            {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n        ];\n\n        const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n            getBackgroundValueForIndex(styles.backgroundClip, 0),\n            paint.curves\n        );\n\n        if (hasBackground || styles.boxShadow.length) {\n            this.ctx.save();\n            this.path(backgroundPaintingArea);\n            this.ctx.clip();\n\n            if (!isTransparent(styles.backgroundColor)) {\n                this.ctx.fillStyle = asString(styles.backgroundColor);\n                this.ctx.fill();\n            }\n\n            await this.renderBackgroundImage(paint.container);\n\n            this.ctx.restore();\n\n            styles.boxShadow\n                .slice(0)\n                .reverse()\n                .forEach((shadow) => {\n                    this.ctx.save();\n                    const borderBoxArea = calculateBorderBoxPath(paint.curves);\n                    const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n                    const shadowPaintingArea = transformPath(\n                        borderBoxArea,\n                        -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        (shadow.inset ? 1 : -1) * shadow.spread.number,\n                        shadow.spread.number * (shadow.inset ? -2 : 2),\n                        shadow.spread.number * (shadow.inset ? -2 : 2)\n                    );\n\n                    if (shadow.inset) {\n                        this.path(borderBoxArea);\n                        this.ctx.clip();\n                        this.mask(shadowPaintingArea);\n                    } else {\n                        this.mask(borderBoxArea);\n                        this.ctx.clip();\n                        this.path(shadowPaintingArea);\n                    }\n\n                    this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n                    this.ctx.shadowOffsetY = shadow.offsetY.number;\n                    this.ctx.shadowColor = asString(shadow.color);\n                    this.ctx.shadowBlur = shadow.blur.number;\n                    this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n                    this.ctx.fill();\n                    this.ctx.restore();\n                });\n        }\n\n        let side = 0;\n        for (const border of borders) {\n            if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n                if (border.style === BORDER_STYLE.DASHED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DASHED\n                    );\n                } else if (border.style === BORDER_STYLE.DOTTED) {\n                    await this.renderDashedDottedBorder(\n                        border.color,\n                        border.width,\n                        side,\n                        paint.curves,\n                        BORDER_STYLE.DOTTED\n                    );\n                } else if (border.style === BORDER_STYLE.DOUBLE) {\n                    await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n                } else {\n                    await this.renderSolidBorder(border.color, side, paint.curves);\n                }\n            }\n            side++;\n        }\n    }\n\n    async renderDashedDottedBorder(\n        color: Color,\n        width: number,\n        side: number,\n        curvePoints: BoundCurves,\n        style: BORDER_STYLE\n    ): Promise<void> {\n        this.ctx.save();\n\n        const strokePaths = parsePathForBorderStroke(curvePoints, side);\n        const boxPaths = parsePathForBorder(curvePoints, side);\n\n        if (style === BORDER_STYLE.DASHED) {\n            this.path(boxPaths);\n            this.ctx.clip();\n        }\n\n        let startX, startY, endX, endY;\n        if (isBezierCurve(boxPaths[0])) {\n            startX = (boxPaths[0] as BezierCurve).start.x;\n            startY = (boxPaths[0] as BezierCurve).start.y;\n        } else {\n            startX = (boxPaths[0] as Vector).x;\n            startY = (boxPaths[0] as Vector).y;\n        }\n        if (isBezierCurve(boxPaths[1])) {\n            endX = (boxPaths[1] as BezierCurve).end.x;\n            endY = (boxPaths[1] as BezierCurve).end.y;\n        } else {\n            endX = (boxPaths[1] as Vector).x;\n            endY = (boxPaths[1] as Vector).y;\n        }\n\n        let length;\n        if (side === 0 || side === 2) {\n            length = Math.abs(startX - endX);\n        } else {\n            length = Math.abs(startY - endY);\n        }\n\n        this.ctx.beginPath();\n        if (style === BORDER_STYLE.DOTTED) {\n            this.formatPath(strokePaths);\n        } else {\n            this.formatPath(boxPaths.slice(0, 2));\n        }\n\n        let dashLength = width < 3 ? width * 3 : width * 2;\n        let spaceLength = width < 3 ? width * 2 : width;\n        if (style === BORDER_STYLE.DOTTED) {\n            dashLength = width;\n            spaceLength = width;\n        }\n\n        let useLineDash = true;\n        if (length <= dashLength * 2) {\n            useLineDash = false;\n        } else if (length <= dashLength * 2 + spaceLength) {\n            const multiplier = length / (2 * dashLength + spaceLength);\n            dashLength *= multiplier;\n            spaceLength *= multiplier;\n        } else {\n            const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n            const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n            const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n            spaceLength =\n                maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n                    ? minSpace\n                    : maxSpace;\n        }\n\n        if (useLineDash) {\n            if (style === BORDER_STYLE.DOTTED) {\n                this.ctx.setLineDash([0, dashLength + spaceLength]);\n            } else {\n                this.ctx.setLineDash([dashLength, spaceLength]);\n            }\n        }\n\n        if (style === BORDER_STYLE.DOTTED) {\n            this.ctx.lineCap = 'round';\n            this.ctx.lineWidth = width;\n        } else {\n            this.ctx.lineWidth = width * 2 + 1.1;\n        }\n        this.ctx.strokeStyle = asString(color);\n        this.ctx.stroke();\n        this.ctx.setLineDash([]);\n\n        // dashed round edge gap\n        if (style === BORDER_STYLE.DASHED) {\n            if (isBezierCurve(boxPaths[0])) {\n                const path1 = boxPaths[3] as BezierCurve;\n                const path2 = boxPaths[0] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n            if (isBezierCurve(boxPaths[1])) {\n                const path1 = boxPaths[1] as BezierCurve;\n                const path2 = boxPaths[2] as BezierCurve;\n                this.ctx.beginPath();\n                this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n                this.ctx.stroke();\n            }\n        }\n\n        this.ctx.restore();\n    }\n\n    async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n        }\n\n        const stack = parseStackingContexts(element);\n\n        await this.renderStack(stack);\n        this.applyEffects([]);\n        return this.canvas;\n    }\n}\n\nconst isTextInputElement = (\n    container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n    if (container instanceof TextareaElementContainer) {\n        return true;\n    } else if (container instanceof SelectElementContainer) {\n        return true;\n    } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n        return true;\n    }\n    return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n    switch (clip) {\n        case BACKGROUND_CLIP.BORDER_BOX:\n            return calculateBorderBoxPath(curves);\n        case BACKGROUND_CLIP.CONTENT_BOX:\n            return calculateContentBoxPath(curves);\n        case BACKGROUND_CLIP.PADDING_BOX:\n        default:\n            return calculatePaddingBoxPath(curves);\n    }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n    switch (textAlign) {\n        case TEXT_ALIGN.CENTER:\n            return 'center';\n        case TEXT_ALIGN.RIGHT:\n            return 'right';\n        case TEXT_ALIGN.LEFT:\n        default:\n            return 'left';\n    }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n    return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n        ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n        : fontFamilies;\n};\n","import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n    canvas: HTMLCanvasElement;\n    ctx: CanvasRenderingContext2D;\n    options: RenderConfigurations;\n\n    constructor(context: Context, options: RenderConfigurations) {\n        super(context, options);\n        this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n        this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n        this.options = options;\n        this.canvas.width = Math.floor(options.width * options.scale);\n        this.canvas.height = Math.floor(options.height * options.scale);\n        this.canvas.style.width = `${options.width}px`;\n        this.canvas.style.height = `${options.height}px`;\n\n        this.ctx.scale(this.options.scale, this.options.scale);\n        this.ctx.translate(-options.x, -options.y);\n        this.context.logger.debug(\n            `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n        );\n    }\n\n    async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n        const svg = createForeignObjectSVG(\n            this.options.width * this.options.scale,\n            this.options.height * this.options.scale,\n            this.options.scale,\n            this.options.scale,\n            element\n        );\n\n        const img = await loadSerializedSVG(svg);\n\n        if (this.options.backgroundColor) {\n            this.ctx.fillStyle = asString(this.options.backgroundColor);\n            this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n        }\n\n        this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n        return this.canvas;\n    }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n    new Promise((resolve, reject) => {\n        const img = new Image();\n        img.onload = () => {\n            resolve(img);\n        };\n        img.onerror = reject;\n\n        img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n    });\n","export interface LoggerOptions {\n    id: string;\n    enabled: boolean;\n}\n\nexport class Logger {\n    static instances: {[key: string]: Logger} = {};\n\n    private readonly id: string;\n    private readonly enabled: boolean;\n    private readonly start: number;\n\n    constructor({id, enabled}: LoggerOptions) {\n        this.id = id;\n        this.enabled = enabled;\n        this.start = Date.now();\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    debug(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n                // eslint-disable-next-line no-console\n                console.debug(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    getTime(): number {\n        return Date.now() - this.start;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    info(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n                // eslint-disable-next-line no-console\n                console.info(this.id, `${this.getTime()}ms`, ...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    warn(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n                // eslint-disable-next-line no-console\n                console.warn(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    error(...args: unknown[]): void {\n        if (this.enabled) {\n            // eslint-disable-next-line no-console\n            if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n                // eslint-disable-next-line no-console\n                console.error(this.id, `${this.getTime()}ms`, ...args);\n            } else {\n                this.info(...args);\n            }\n        }\n    }\n}\n","import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n    logging: boolean;\n    cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n    private readonly instanceName = `#${Context.instanceCount++}`;\n    readonly logger: Logger;\n    readonly cache: Cache;\n\n    private static instanceCount = 1;\n\n    constructor(options: ContextOptions, public windowBounds: Bounds) {\n        this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n        this.cache = options.cache ?? new Cache(this, options);\n    }\n}\n","import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n    WindowOptions &\n    RenderOptions &\n    ContextOptions & {\n        backgroundColor: string | null;\n        foreignObjectRendering: boolean;\n        removeContainer?: boolean;\n    };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n    return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n    CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n    if (!element || typeof element !== 'object') {\n        return Promise.reject('Invalid element provided as first argument');\n    }\n    const ownerDocument = element.ownerDocument;\n\n    if (!ownerDocument) {\n        throw new Error(`Element is not attached to a Document`);\n    }\n\n    const defaultView = ownerDocument.defaultView;\n\n    if (!defaultView) {\n        throw new Error(`Document is not attached to a Window`);\n    }\n\n    const resourceOptions = {\n        allowTaint: opts.allowTaint ?? false,\n        imageTimeout: opts.imageTimeout ?? 15000,\n        proxy: opts.proxy,\n        useCORS: opts.useCORS ?? false\n    };\n\n    const contextOptions = {\n        logging: opts.logging ?? true,\n        cache: opts.cache,\n        ...resourceOptions\n    };\n\n    const windowOptions = {\n        windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n        windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n        scrollX: opts.scrollX ?? defaultView.pageXOffset,\n        scrollY: opts.scrollY ?? defaultView.pageYOffset\n    };\n\n    const windowBounds = new Bounds(\n        windowOptions.scrollX,\n        windowOptions.scrollY,\n        windowOptions.windowWidth,\n        windowOptions.windowHeight\n    );\n\n    const context = new Context(contextOptions, windowBounds);\n\n    const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n    const cloneOptions: CloneConfigurations = {\n        allowTaint: opts.allowTaint ?? false,\n        onclone: opts.onclone,\n        ignoreElements: opts.ignoreElements,\n        inlineImages: foreignObjectRendering,\n        copyStyles: foreignObjectRendering\n    };\n\n    context.logger.debug(\n        `Starting document clone with size ${windowBounds.width}x${\n            windowBounds.height\n        } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n    );\n\n    const documentCloner = new DocumentCloner(context, element, cloneOptions);\n    const clonedElement = documentCloner.clonedReferenceElement;\n    if (!clonedElement) {\n        return Promise.reject(`Unable to find element in cloned iframe`);\n    }\n\n    const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n    const {width, height, left, top} =\n        isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n            ? parseDocumentSize(clonedElement.ownerDocument)\n            : parseBounds(context, clonedElement);\n\n    const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n    const renderOptions: RenderConfigurations = {\n        canvas: opts.canvas,\n        backgroundColor,\n        scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n        x: (opts.x ?? 0) + left,\n        y: (opts.y ?? 0) + top,\n        width: opts.width ?? Math.ceil(width),\n        height: opts.height ?? Math.ceil(height)\n    };\n\n    let canvas;\n\n    if (foreignObjectRendering) {\n        context.logger.debug(`Document cloned, using foreign object rendering`);\n        const renderer = new ForeignObjectRenderer(context, renderOptions);\n        canvas = await renderer.render(clonedElement);\n    } else {\n        context.logger.debug(\n            `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n        );\n\n        context.logger.debug(`Starting DOM parsing`);\n        const root = parseTree(context, clonedElement);\n\n        if (backgroundColor === root.styles.backgroundColor) {\n            root.styles.backgroundColor = COLORS.TRANSPARENT;\n        }\n\n        context.logger.debug(\n            `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n        );\n\n        const renderer = new CanvasRenderer(context, renderOptions);\n        canvas = await renderer.render(root);\n    }\n\n    if (opts.removeContainer ?? true) {\n        if (!DocumentCloner.destroy(container)) {\n            context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n        }\n    }\n\n    context.logger.debug(`Finished rendering`);\n    return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n    const ownerDocument = element.ownerDocument;\n    // http://www.w3.org/TR/css3-background/#special-backgrounds\n    const documentBackgroundColor = ownerDocument.documentElement\n        ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n    const bodyBackgroundColor = ownerDocument.body\n        ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n        : COLORS.TRANSPARENT;\n\n    const defaultBackgroundColor =\n        typeof backgroundColorOverride === 'string'\n            ? parseColor(context, backgroundColorOverride)\n            : backgroundColorOverride === null\n            ? COLORS.TRANSPARENT\n            : 0xffffffff;\n\n    return element === ownerDocument.documentElement\n        ? isTransparent(documentBackgroundColor)\n            ? isTransparent(bodyBackgroundColor)\n                ? defaultBackgroundColor\n                : bodyBackgroundColor\n            : documentBackgroundColor\n        : defaultBackgroundColor;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n  try {\n    var info = gen[key](arg);\n    var value = info.value;\n  } catch (error) {\n    reject(error);\n    return;\n  }\n  if (info.done) {\n    resolve(value);\n  } else {\n    Promise.resolve(value).then(_next, _throw);\n  }\n}\nexport default function _asyncToGenerator(fn) {\n  return function () {\n    var self = this,\n      args = arguments;\n    return new Promise(function (resolve, reject) {\n      var gen = fn.apply(self, args);\n      function _next(value) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n      }\n      function _throw(err) {\n        asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n      }\n      _next(undefined);\n    });\n  };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n  return obj;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}","export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}"],"names":["Object","defineProperty","exports","value","DayNames","default","MonthNames","ThousandsNotation","MillionsNotation","BillionsNotation","AllCultures","at_culture_1","au_culture_1","be_culture_1","br_culture_1","ca_culture_1","ch_culture_1","cl_culture_1","cn_culture_1","co_culture_1","de_culture_1","dk_culture_1","es_culture_1","fi_culture_1","fr_culture_1","uk_culture_1","hk_culture_1","hu_culture_1","id_culture_1","in_culture_1","it_culture_1","mx_culture_1","my_culture_1","nl_culture_1","no_culture_1","nz_culture_1","pe_culture_1","pt_culture_1","se_culture_1","sg_culture_1","us_culture_1","usme_culture_1","th_culture_1","DeAtEur","DeAtUsd","EnAtEur","EnAtUsd","EnAuAud","EnAuUsd","EnBeEur","EnBeUsd","NlBeEur","NlBeUsd","FrBeEur","FrBeUsd","EnBrBrr","EnBrUsd","PtBrBrr","PtBrUsd","EnCaCad","EnCaUsd","FrCaCad","FrCaUsd","DeChChf","DeChEur","DeChUsd","DeChGbp","FrChChf","FrChEur","FrChUsd","FrChGbp","ItChChf","ItChEur","ItChUsd","ItChGbp","EnChChf","EnChEur","EnChUsd","EnChGbp","EsClUsd","EsClClp","EnClUsd","ZhCnCny","EnCnCny","EsCoCop","EsCoUsd","DeDeEur","DeDeDkk","DeDeCzk","DeDeNok","DeDePln","DeDeUsd","EnDeEur","EnDeDkk","EnDeCzk","EnDeNok","EnDePln","EnDeUsd","EnDkDkk","EnDkUsd","EnDkEur","EnDkSek","EnDkNok","EsEsEur","EsEsUsd","EnEsEur","EnEsUsd","PtEsEur","PtEsUsd","EnFiEur","EnFiUsd","EnFiSek","EnFiDkk","EnFiNok","FrFrEur","FrFrUsd","EnFrEur","EnFrUsd","EnGbGbp","EnGbEur","EnGbUsd","EnHkHkd","EnHkUsd","HuHuHuf","HuHuEur","HuHuUsd","EnHuHuf","EnHuEur","EnHuUsd","IdIdIdr","EnIdIdr","EnInInr","EnInUsd","HiInInr","HiInUsd","ItItEur","ItItUsd","EnItEur","EnItUsd","EsMxMxp","EsMxMxn","EsMxUsd","EnMxMxp","EnMxMxn","EnMxUsd","EnMyMyr","EnMyUsd","NlNlEur","NlNlUsd","EnNlEur","EnNlUsd","EnNoEur","EnNoUsd","EnNoSek","EnNoDkk","EnNoNok","EnNzNzd","EnNzUsd","EnNzAud","EsPeUsd","EsPePen","EnPeUsd","EnPePen","PtPtEur","PtPtUsd","EnPtEur","EnPtUsd","EnSeEur","EnSeSek","EnSeDkk","EnSeNok","EnSeUsd","SvSeEur","SvSeSek","SvSeDkk","SvSeNok","SvSeUsd","SeSeSek","SeSeDkk","SeSeNok","EnSgSgd","EnSgUsd","EnSgEur","EnSgJpy","EnUsUsd","EnUsmeUsd","EsUsmeUsd","EnThThb","ThThThb","constructor","this","locale","dateFormat","short","medium","long","currencyFormat","code","symbol","decimalSeparator","groupSeparator","positivePattern","negativePattern","ConstantProvider","day_names_1","month_names_1","getDayNames","getMonthNames","CultureProvider","all_cultures_1","getCultureByLocaleCurrency","currency","toLowerCase","toLocaleUpperCase","currencyCultures","culture","keys","Error","getAllCurrenciesByLocale","ImApiTranslator","im_translator_1","ImTranslator","resourceLoader","fallbackLocale","super","showLogs","fetchResource","resource","url","includes","fetchOptions","method","headers","assign","appName","isEditingEnabled","cache","fetch","loadTranslations","loader","loaders","Promise","resolve","reject","then","response","ok","json","translations","console","error","status","data","res","catch","err","translate","key","interpolateParams","returnKeyIfNotFound","_getResourceName","_translate","translateInstant","_translateInstant","_resource","split","ImCurrencyFormatter","short_currency_notations_1","_currencyFormat","format","amount","currencyPattern","getCurrency","formatByCurrencyCode","formatToShort","getShortCurrencyFormat","formatToShortByCode","_a","_b","_c","Math","ceil","floor","num","i","pow","max","log10","getShortCurrencyAmount","convertToKMB","kbm","str","replace","strAmt","filter","c","test","join","toLocaleString","maximumFractionDigits","minimumFractionDigits","pattern","isNaN","formattedAmount","abs","toFixed","toString","ImDateFormatter","constant_provider_1","_dayNames","_monthNames","date","getTime","getIsoDate","formattedDate","replaceValues","formatDay","getDay","formatMonth","getMonth","formatYear","getYear","formatDate","getDate","getHours","getMinutes","getSeconds","getAmPm","prop","strDate","length","month","strMonth","substring","strYear","getFullYear","slice","dayName","hours","strHours","strMinutes","strSeconds","getTimezoneOffset","toISOString","setMinutes","ImFileTranslator","flattenJSON","obj","extraKey","getValue","isInstantRequest","getSingleValue","getNotFoundResponse","forEach","k","undefined","interpolateString","logMissingError","expr","params","hasOwnProperty","warn","im_localization_service_1","enumerable","get","ImLocalizationService","im_culture_provider_1","im_currency_formatter_1","im_date_formatter_1","im_api_translator_1","im_file_translator_1","config","_culture","useLocale","currencyCode","_currencyFormatter","_dateFormatter","useApi","_translator","_baseTranslator","preloadResources","map","_config","updateCulture","updateCurrency","formatCurrency","formatCurrencyByCode","formatToShortCurrency","formatToShortCurrencyByCode","trim","options","pending_value","pendingKeys","push","CurrentCulture","AppName","localizationContext","createContext","getFabUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","FabRoot","styled","ButtonBase","name","shouldForwardProp","rootShouldForwardProp","overridesResolver","props","styles","ownerState","root","variant","capitalize","size","color","colorInherit","theme","_theme$palette$getCon","_theme$palette","typography","button","minHeight","transition","transitions","create","duration","borderRadius","padding","minWidth","width","height","zIndex","vars","fab","boxShadow","shadows","palette","text","primary","getContrastText","call","grey","backgroundColor","A100","textDecoration","focusVisible","contrastText","main","dark","disabled","action","disabledBackground","inProps","ref","useThemeProps","children","className","component","disableFocusRipple","focusVisibleClassName","other","classes","slots","composedClasses","composeClasses","useUtilityClasses","clsx","focusRipple","_regeneratorRuntime","e","t","r","prototype","n","o","Symbol","a","iterator","asyncIterator","u","toStringTag","define","configurable","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","delegateYield","ShowHideResouceKey","context","useContext","handleShowHideKeys","_ref","_callee","_context","showHideKey","isShowKeyEnabled","apply","arguments","id","onClick","style","background","bottom","position","right","_ShowHideResouceKey","IMO_CULTURE_COOKIE","IMO_CURRENCY_COOKIE","XVANTAGE_CULTURE_COOKIE","XVANTAGE_CURRENCY_COOKIE","startsWith","localStorage","getItem","LocalizationProvider","apiHeaders","appId","defaultLocale","supportedLocales","suffix","concat","toUpperCase","savedLocale","savedCurrency","_useState","useState","_useState2","setLocaleState","_useState3","_useState4","setCurrencyCodeState","_useState5","_useState6","showKey","setShowKey","_useState7","_useState8","setContext","setLocale","useCallback","newLocale","set","useEffect","localizationService","useMemo","cep","x4a","x4v","setCurrencyCode","newCode","show","_useState9","_useState10","resourcesCount","setResourcesCount","resourcesLoadedMapRef","useRef","current","resourceIsLoaded","resourceSetIsLoaded","loaded","prevState","_useState11","_useState12","resourcesDelayedCount","setResourcesDelayedCount","isActive","setTimeout","clearTimeout","window","addEventListener","preventDefault","handleRightClickEvent","evt","which","detail","removeEventListener","Provider","Translate","_props$paramsWithDang","paramsWithDangerousHtml","translated","setTranslated","indexOf","_h","_strong","_br","_strong2","_Button","_Button2","EditTranslateModal","clearErrorMessage","errorMessage","onClose","onPreviewChange","onRaiseRequestChange","onResetHandleChange","onSaveHandleChange","open","showPleaseWaitLabel","showPleaseWaitLabelOnSave","showRequestButton","translationKey","translationValue","Dialog","PaperProps","stopPropagation","Root","defaultValue","onChange","Stack","direction","spacing","Button","Typography","marginTop","margin","marginBottom","redirectToTranslationEditor","_callee2","body","isApiResponseReceived","_context2","JSON","stringify","Accept","_ref2","t0","t1","_x3","uniqueId","message","_x","_x2","EditTranslate","displayValue","setDisplayValue","setOpen","setErrorMessage","setShowPleaseWaitLabel","setShowPleaseWaitLabelOnSave","_useState13","_useState14","previewValue","setPreviewValue","_useState15","_useState16","displayPreviewValue","setDisplayPreviewValue","selectedValue","convertStringToTranslation","onRaiseRequestHandle","_selectedValue$curren","_selectedValue$curren2","rect","currentPosition","canvas","image","classList","add","document","getBoundingClientRect","top","scrollY","innerHeight","ignoreElements","element","tagName","onclone","clonedDoc","_clonedDoc$querySelec","querySelectorAll","originalValue","getAttribute","innerHTML","remove","querySelector","innerWidth","toDataURL","App","Data","ResourceKey","Locale","RequestType","isTranslationModified","StyleSpan","onContextMenu","handleClick","valueSelected","newDisplayTranslation","valueSaved","useLocalizationContext","useLocalization","dateToFormat","parseISO","useTranslate","_useLocalizationConte","doNotTranslate","_key$split","getDialogUtilityClass","DialogBackdrop","Backdrop","overrides","backdrop","DialogRoot","Modal","DialogContainer","container","scroll","outline","display","justifyContent","alignItems","overflowY","overflowX","textAlign","content","verticalAlign","DialogPaper","Paper","paper","String","maxWidth","fullWidth","paperFullWidth","fullScreen","paperFullScreen","flexDirection","maxHeight","breakpoints","unit","xs","paperScrollBody","down","useTheme","defaultTransitionDuration","enter","enteringScreen","exit","leavingScreen","ariaDescribedby","ariaLabelledbyProp","BackdropComponent","BackdropProps","disableEscapeKeyDown","onBackdropClick","PaperComponent","TransitionComponent","Fade","transitionDuration","TransitionProps","backdropClick","ariaLabelledby","useId","dialogContextValue","titleId","closeAfterTransition","components","componentsProps","as","event","appear","in","timeout","role","onMouseDown","target","currentTarget","elevation","DialogContext","createStack","createStyledComponent","extendStatics","b","Array","__extends","__","__assign","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","result","__generator","_","label","trys","ops","verb","op","__spreadArray","to","from","pack","ar","left","x","w","Bounds","fromClientRect","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","find","EMPTY","parseBounds","node","toCodePoints","codePoints","charCodeAt","extra","fromCodePoint","codeUnits","index","codePoint","fromCharCode","chars","lookup","Uint8Array","slice16","view","start","end","Uint16Array","initialValue","errorValue","highStart","highValueIndex","ix","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","ea_OP","BREAK_NOT_ALLOWED","BREAK_ALLOWED","UnicodeTrie","base64","_byteLength","buffer","encoded1","encoded2","encoded3","encoded4","bufferLength","len","ArrayBuffer","bytes","isArray","decode","view32","polyUint32Array","Uint32Array","view16","polyUint16Array","headerLength","Trie","createTrieFromBase64","ALPHABETICS","HARD_LINE_BREAKS","SPACE","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","currentIndex","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","count","cssFormattedClasses","lineBreak","wordBreak","types","indices","categories","classType","codePointsToCharacterClasses","isLetterNumber","forbiddenBreakpoints","letterNumber","required","HYPHEN_MINUS","PLUS_SIGN","EOF","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","sign","integers","int","parseInt","fraction","fracd","frac","expsign","exponent","exp","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","_value","write","chunk","read","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","shift","unshift","delta","digits","questionMarks","digit","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","min","splice","endingCodePoint","consumeNumber","repr","number","hex","hexCodePoint","isSurrogateCodePoint","_tokens","tokenizer","Tokenizer","Parser","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","GRAD","TURN","angle","PI","isAngle","parseNamedSide","ident","deg","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","TRANSPARENT","isTransparent","asString","alpha","blue","green","red","round","getTokenColorValue","rgb","hue2rgb","t2","hue","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","prefix","parse","parseColorStop","colorType","processColorStops","stops","lineLength","first","last","processStops","previous","absoluteValue","gapBegin","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","sin","cos","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","reduce","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","firstToken","angleType","colorStop","CLOSEST_SIDE","FARTHEST_SIDE","CLOSEST_CORNER","FARTHEST_CORNER","CIRCLE","ELLIPSE","COVER","CONTAIN","prefixRadialGradient","shape","isColorStop","acc","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","BACKGROUND_SIZE","backgroundImage","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginRight","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","auto","order","time","opacity","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontWeight","fontVariant","fontStyle","contains","counterIncrement","increments","filtered","counter","increment","counterReset","resets","quotes","close","getQuote","depth","quote","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","declaration","animationDuration","cssFloat","overflowTuple","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","descriptor","parser","isDebugging","elementType","getElementDebugType","textNodes","elements","CSSParsedDeclaration","getComputedStyle","isHTMLElementNode","some","bounds","PseudoElementType","L","V","LV","LVT","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","lastEnd","graphemeBreak","isGreenPixel","createForeignObjectSVG","xmlns","svg","createElementNS","foreignObject","setAttributeNS","appendChild","loadSerializedSVG","img","Image","onload","onerror","src","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","SUPPORT_RANGE_BOUNDS","createRange","range","testElement","createElement","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","removeChild","testRangeBounds","SUPPORT_WORD_BREAKING","wordSpacing","repeat","firstChild","textList","offset","supports","every","setStart","setEnd","boundAhead","testIOSLineBreak","SUPPORT_SVG_DRAWING","ctx","getContext","drawImage","testSVG","SUPPORT_FOREIGNOBJECT_DRAWING","fillStyle","fillRect","greenImageSrc","getImageData","testForeignObject","SUPPORT_CORS_IMAGES","crossOrigin","SUPPORT_RESPONSE_TYPE","XMLHttpRequest","responseType","SUPPORT_CORS_XHR","SUPPORT_NATIVE_TEXT_SEGMENTATION","Intl","Segmenter","getWrapperBounds","ownerDocument","wrapper","cloneNode","parentNode","replaceChild","segmentGraphemes","segmenter","granularity","segment","bk","breaker","graphemes","splitGraphemes","breakText","breakWords","segmentWords","wordSeparators","nextIndex","Break","LineBreaker","words","textBounds","clientRects","getClientRects","subSegments","subSegment","TextBounds","replacementNode","splitText","parseTextBounds","CAPITALIZE","m","p1","p2","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","ElementContainer","setAttribute","baseVal","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","CHECKBOX","RADIO","PASSWORD","INPUT_COLOR","input","checked","placeholder","option","selectedIndex","iframe","contentWindow","documentElement","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","childNode","nextNode","nextSibling","isTextNode","TextContainer","isElementNode","isSlotElement","assignedNodes","createContainer","createsRealStackingContext","createsStackingContext","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","ImageElementContainer","isCanvasElement","CanvasElementContainer","SVGElementContainer","isLIElement","LIElementContainer","isOLElement","OLElementContainer","isInputElement","InputElementContainer","SelectElementContainer","TextareaElementContainer","isIFrameElement","IFrameElementContainer","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","isVideoElement","isStyleElement","isCustomElement","counters","getCounterValue","getCounterValues","canReset","entry","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","CHINESE_INFORMAL_MULTIPLIERS","CHINESE_FORMAL_MULTIPLIERS","JAPANESE_NEGATIVE","KOREAN_NEGATIVE","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","IGNORE_ATTRIBUTE","scrolledElements","referenceElement","CounterState","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","restoreNodeScroll","scrollTo","navigator","userAgent","logger","clonedReferenceElement","nodeName","fonts","ready","imagesReady","serializeDoctype","doctype","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","sheet","cssRules","css","rule","cssText","textContent","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","offsetWidth","offsetHeight","blankCanvas","appendChildNode","child","copyStyles","hasAttribute","cloneChildNodes","assignedNode","createTextNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","CSSParsedCounterDeclaration","resolvePseudoContent","BEFORE","insertBefore","after","AFTER","scrollTop","scrollLeft","pseudoElt","CSSParsedPseudoDeclaration","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","newClassName","baseValue","destroy","CORNER","cloneIframeContainer","border","scrolling","imageReady","all","images","interval","setInterval","childNodes","readyState","clearInterval","ignoredStyleProperties","property","item","setProperty","getPropertyValue","internalSubset","publicId","systemId","PSEUDO_HIDE_ELEMENT_STYLE","createStyles","getOrigin","link","CacheStorage","_link","href","protocol","hostname","port","isSameOrigin","_origin","location","_options","_cache","has","isBlobImage","isRenderable","loadImage","match","useCORS","isInlineImage","useProxy","proxy","debug","isInlineBase64Image","imageTimeout","xhr","FileReader","readAsDataURL","queryString","ontimeout","send","INLINE_SVG","INLINE_BASE64","INLINE_IMG","isSVG","substr","deltaX","deltaY","Vector","lerp","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","BezierCurve","isBezierCurve","path","tlh","tlv","trh","trv","brh","brv","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","isClipEffect","effect","equalPath","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","effects","BoundCurves","OpacityEffect","TransformEffect","borderBox","paddingBox","ClipEffect","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","ElementPaint","listOwnerItems","parentStack","stack","StackingContext","processListItems","owner","numbering","listValue","parsePathForBorder","borderSide","createPathFromCurves","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","SAMPLE_TEXT","_data","_document","parseMetrics","span","whiteSpace","baseline","offsetTop","middle","getMetrics","_activeEffects","scale","fontMetrics","FontMetrics","textBaseline","applyEffects","popEffect","applyEffect","save","isOpacityEffect","globalAlpha","isTransformEffect","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","CanvasRenderer","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","resizeImage","renderBackgroundImage","createPattern","x0","x1","y0","y1","createLinearGradient","addColorStop","isRadialGradient","gradient","rx","ry","calculateRadius","createRadialGradient","midX","midY","invF","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","parsePathForBorderDoubleOuter","innerPaths","parsePathForBorderDoubleInner","hasBackground","borders","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","parsePathForBorderStroke","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","setLineDash","lineCap","stroke","path1","path2","Renderer","calculateContentBoxPath","iOSBrokenFonts","fontFamilies","enabled","Date","now","instances","instanceName","instanceCount","Logger","logging","Cache","renderElement","opts","resourceOptions","contextOptions","windowOptions","windowWidth","windowHeight","foreignObjectRendering","cloneOptions","documentCloner","DocumentCloner","clonedElement","scrollWidth","clientWidth","scrollHeight","clientHeight","parseDocumentSize","parseBackgroundColor","renderOptions","devicePixelRatio","ForeignObjectRenderer","removeContainer","backgroundColorOverride","defaultBackgroundColor","module","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","fn","self","_defineProperty","_slicedToArray","arr","unsupportedIterableToArray","toPropertyKey","toPrimitive","_typeof","_arrayLikeToArray","arr2","_unsupportedIterableToArray","minLen"],"sourceRoot":""}